示例#1
0
void testMinidriverStartSequence(SCARDHANDLE* phCard)
{
	BeidSelectCACApplets1(*phCard);
	SendMSCmd(*phCard);
	BeidSelectCACApplets2(*phCard);
	GetCardData(*phCard);
}
示例#2
0
s32 DemoTransaksi(void)
{ 
	if(!GetCardData())
		return 0;
	
	if(!compareFinger())
		return 0;

	return 1;
}
示例#3
0
//绘画扑克
void CWeaveCard::DrawCardControl(CDC * pDC, int nXPos, int nYPos)
{
	//设置位置
	SetControlPoint(nXPos,nYPos);

	//显示判断
	if (m_wCardCount==0) 
		return;

	//变量定义
	int nXScreenPos=0,nYScreenPos=0;
	int nItemWidth=0,nItemHeight=0,nItemWidthEx=0,nItemHeightEx=0;

	//绘画扑克
	switch (m_CardDirection)
	{
	case Direction_East:	//东向
		{

			//绘画扑克
			for (WORD i=0;i<3;i++)
			{
				int nXScreenPos=m_ControlPoint.x-g_CardResource.m_ImageTableRight.GetViewWidth();
				int nYScreenPos=m_ControlPoint.y+i*g_CardResource.m_ImageTableRight.GetViewHeight();
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2-i),nXScreenPos,nYScreenPos);
			}

			//第四扑克
			if (m_wCardCount==4)
			{
				int nXScreenPos=m_ControlPoint.x-g_CardResource.m_ImageTableRight.GetViewWidth();
				int nYScreenPos=m_ControlPoint.y-5+g_CardResource.m_ImageTableRight.GetViewHeight();
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}

			break;
	}
	case Direction_South:	//南向
		{
			//绘画扑克
			for (WORD i=0;i<3;i++)
			{
				int nXScreenPos=m_ControlPoint.x+i*g_CardResource.m_ImageTableBottom.GetViewWidth();
				int nYScreenPos=m_ControlPoint.y-g_CardResource.m_ImageTableBottom.GetViewHeight()-5;
				g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(i),nXScreenPos,nYScreenPos);
			}

			//第四扑克
			if (m_wCardCount==4)
			{
				int nXScreenPos=m_ControlPoint.x+g_CardResource.m_ImageTableBottom.GetViewWidth();
				int nYScreenPos=m_ControlPoint.y-g_CardResource.m_ImageTableBottom.GetViewHeight()-5*2;
				g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}
			break;

		}
	case Direction_West:	//西向
		{
			//绘画扑克
			for (WORD i=0;i<3;i++)
			{
				int nXScreenPos=m_ControlPoint.x;
				int nYScreenPos=m_ControlPoint.y+i*g_CardResource.m_ImageTableLeft.GetViewHeight();
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(i),nXScreenPos,nYScreenPos);
			}

			//第四扑克
			if (m_wCardCount==4)
			{
				int nXScreenPos=m_ControlPoint.x;
				int nYScreenPos=m_ControlPoint.y+g_CardResource.m_ImageTableLeft.GetViewHeight()-5;
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}

			break;

		}
	case Direction_North:	//北向
		{
			//绘画扑克
			for (WORD i=0;i<3;i++)
			{
				int nYScreenPos=m_ControlPoint.y;
				int nXScreenPos=m_ControlPoint.x-(i+1)*g_CardResource.m_ImageTableTop.GetViewWidth();
				g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2-i),nXScreenPos,nYScreenPos);
			}

			//第四扑克
			if (m_wCardCount==4)
			{
				int nYScreenPos=m_ControlPoint.y-5;
				int nXScreenPos=m_ControlPoint.x-2*g_CardResource.m_ImageTableTop.GetViewWidth();
				g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}

			break;

		}
	}

	return;
}
示例#4
0
//绘画扑克
void CWeaveCard::DrawCardControl(CDC * pDC)
{
	//显示判断
	if (m_wCardCount==0) 
		return;

	//变量定义
	int nXScreenPos=0,nYScreenPos=0;
	int nItemWidth=0,nItemHeight=0,nItemWidthEx=0,nItemHeightEx=0;

	//绘画扑克
	switch (m_CardDirection)
	{
	case Direction_East:	//东向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableRight.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableRight.GetViewHeight()-10;
			nItemWidthEx=g_CardResource.m_ImageTableTop.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableTop.GetViewHeight()-10;

			nYScreenPos = m_ControlPoint.y;			
			if(m_cbDirectionCardPos == 2)
			{
				nXScreenPos=m_ControlPoint.x+nItemWidthEx;
				g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
				nYScreenPos += nItemHeightEx;
			}
			else
			{
				nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth;
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
				nYScreenPos += nItemHeight;
			}


			//第二扑克
			nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth;
			g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);
			//第四扑克
			if (m_wCardCount==4)
			{
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12);
			}
			nYScreenPos += nItemHeight;

			//第一扑克
			if(m_cbDirectionCardPos == 0)
			{
				nXScreenPos=m_ControlPoint.x+nItemWidthEx;
				g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
			}
			else
			{
				nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth;
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);

			}

			break;
		}
	case Direction_South:	//南向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableBottom.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableBottom.GetViewHeight();
			nItemWidthEx=g_CardResource.m_ImageTableRight.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableRight.GetViewHeight();

			//第三扑克
			nXScreenPos = m_ControlPoint.x;
			if(m_cbDirectionCardPos == 2)
			{
				nXScreenPos -= nItemWidthEx;
				nYScreenPos=m_ControlPoint.y+nItemHeightEx;
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
			}
			else
			{
				nXScreenPos -= nItemWidth;
				nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight;
				g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
			}			

			//第二扑克
			nXScreenPos -= nItemWidth;
			nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight;
			g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);
			//第四扑克
			if (m_wCardCount==4)
			{
				g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12);
			}


			//第一扑克
			if(m_cbDirectionCardPos == 0)
			{
				nXScreenPos -= nItemWidthEx;
				nYScreenPos=m_ControlPoint.y+nItemHeightEx;
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
			}
			else
			{
				nXScreenPos -= nItemWidth;
				nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight;
				g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
			}


			break;
		}
	case Direction_West:	//西向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableLeft.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableLeft.GetViewHeight()-10;
			nItemWidthEx=g_CardResource.m_ImageTableBottom.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableBottom.GetViewHeight()-10;

			if(m_cbDirectionCardPos != 1)
			{
				//第一扑克
				nYScreenPos=m_ControlPoint.y-nItemHeightEx-nItemHeight*2;
				if(m_cbDirectionCardPos == 0)
				{
					nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
					g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
					nYScreenPos += nItemHeightEx;
				}
				else
				{
					nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
					g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
					nYScreenPos += nItemHeight;
				}
				//第二扑克
				nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);
				//第四扑克
				if (m_wCardCount==4)
				{
					g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12);
				}
				nYScreenPos += nItemHeight;

				//第三扑克
				if(m_cbDirectionCardPos == 2)
				{
					nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
					g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
				}
				else
				{
					nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
					g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
				}

			}
			else
			{			
				//第一扑克
				nYScreenPos = m_ControlPoint.y-nItemHeight*3;
				//nXScreenPos=m_ControlPoint.x-nItemWidth;
				nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
				//第二扑克
				nYScreenPos += nItemHeight;
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);
				//第四扑克
				if (m_wCardCount==4)
				{
					g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12);
				}
				//第三扑克
				nYScreenPos += nItemHeight;
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
			}

			break;
		}
	case Direction_North:	//北向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableTop.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableTop.GetViewHeight();
			nItemWidthEx=g_CardResource.m_ImageTableLeft.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableLeft.GetViewHeight();

			//第三扑克
			nXScreenPos = m_ControlPoint.x;
			if(m_cbDirectionCardPos == 2)
			{
				nYScreenPos = m_ControlPoint.y-nItemHeight;
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
				nXScreenPos += nItemWidthEx;
			}
			else
			{
				nYScreenPos = m_ControlPoint.y-nItemHeight;
				g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);
				nXScreenPos += nItemWidth;
			}

			//第二扑克
			nYScreenPos = m_ControlPoint.y-nItemHeight;
			g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);			
			//第四扑克
			if (m_wCardCount==4)
			{
				g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos-12);
			}
			nXScreenPos += nItemWidth;


			//第一扑克
			if(m_cbDirectionCardPos == 0)
			{
				nYScreenPos=m_ControlPoint.y-nItemHeight;			
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
			}
			else
			{
				nYScreenPos=m_ControlPoint.y-nItemHeight;		
				g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);
			}


			break;
		}
	}

	return;
}
示例#5
0
//绘画麻将
void CWeaveCard::DrawCardControl(CDC * pDC)
{
	//显示判断
	if (m_wCardCount==0) return;

	//变量定义
	int nXScreenPos=0,nYScreenPos=0;
	int nItemWidth=0,nItemHeight=0,nItemWidthEx=0,nItemHeightEx=0;

	//绘画麻将
	switch (m_CardDirection)
	{
	case Direction_East:	//东向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableRight.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableRight.GetViewHeight();
			nItemWidthEx=g_CardResource.m_ImageTableTop.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableTop.GetViewHeight();

			//第四麻将
			if (m_wCardCount==4)
			{
				nXScreenPos=m_ControlPoint.x;
				nYScreenPos=m_ControlPoint.y;
				g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}

			//第三麻将
			nYScreenPos=m_ControlPoint.y;
			nXScreenPos=m_ControlPoint.x+nItemWidthEx;
			g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);

			//第二麻将
			nYScreenPos=m_ControlPoint.y+nItemHeightEx;
			nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth;
			g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);

			//第一麻将
			nXScreenPos=m_ControlPoint.x+nItemWidthEx*2-nItemWidth;
			nYScreenPos=m_ControlPoint.y+nItemHeightEx+nItemHeight;
			g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);

			break;
		}
	case Direction_South:	//南向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableBottom.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableBottom.GetViewHeight();
			nItemWidthEx=g_CardResource.m_ImageTableRight.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableRight.GetViewHeight();

			//第四麻将
			if (m_wCardCount==4)
			{
				nYScreenPos=m_ControlPoint.y;
				nXScreenPos=m_ControlPoint.x-nItemWidthEx;
				g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}

			//第三麻将
			nXScreenPos=m_ControlPoint.x-nItemWidthEx;
			nYScreenPos=m_ControlPoint.y+nItemHeightEx;
			g_CardResource.m_ImageTableRight.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);

			//第二麻将
			nXScreenPos=m_ControlPoint.x-nItemWidthEx-nItemWidth;
			nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight;
			g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);

			//第一麻将
			nXScreenPos=m_ControlPoint.x-nItemWidthEx-nItemWidth*2;
			nYScreenPos=m_ControlPoint.y+nItemHeightEx*2-nItemHeight;
			g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);

			break;
		}
	case Direction_West:	//西向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableLeft.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableLeft.GetViewHeight();
			nItemWidthEx=g_CardResource.m_ImageTableBottom.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableBottom.GetViewHeight();

			//第一麻将
			nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
			nYScreenPos=m_ControlPoint.y-nItemHeightEx-nItemHeight*2;
			g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);

			//第二麻将
			nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
			nYScreenPos=m_ControlPoint.y-nItemHeightEx-nItemHeight;
			g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);

			//第三麻将
			nYScreenPos=m_ControlPoint.y-nItemHeightEx;
			nXScreenPos=m_ControlPoint.x-nItemWidthEx*2;
			g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);

			//第四麻将
			if (m_wCardCount==4)
			{
				nXScreenPos=m_ControlPoint.x-nItemWidthEx;
				nYScreenPos=m_ControlPoint.y-nItemHeightEx;
				g_CardResource.m_ImageTableBottom.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}

			break;
		}
	case Direction_North:	//北向
		{
			//变量定义
			nItemWidth=g_CardResource.m_ImageTableTop.GetViewWidth();
			nItemHeight=g_CardResource.m_ImageTableTop.GetViewHeight();
			nItemWidthEx=g_CardResource.m_ImageTableLeft.GetViewWidth();
			nItemHeightEx=g_CardResource.m_ImageTableLeft.GetViewHeight();

			//第三麻将
			nXScreenPos=m_ControlPoint.x;
			nYScreenPos=m_ControlPoint.y-nItemHeightEx*2;
			g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(2),nXScreenPos,nYScreenPos);

			//第四麻将
			if (m_wCardCount==4)
			{
				nXScreenPos=m_ControlPoint.x;
				nYScreenPos=m_ControlPoint.y-nItemHeightEx;
				g_CardResource.m_ImageTableLeft.DrawCardItem(pDC,GetCardData(3),nXScreenPos,nYScreenPos);
			}

			//第二麻将
			nXScreenPos=m_ControlPoint.x+nItemWidthEx;
			nYScreenPos=m_ControlPoint.y-nItemHeightEx*2;
			g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(1),nXScreenPos,nYScreenPos);

			//第一麻将
			nYScreenPos=m_ControlPoint.y-nItemHeightEx*2;
			nXScreenPos=m_ControlPoint.x+nItemWidthEx+nItemWidth;
			g_CardResource.m_ImageTableTop.DrawCardItem(pDC,GetCardData(0),nXScreenPos,nYScreenPos);

			break;
		}
	}

	return;
}
示例#6
0
int _tmain(int argc, _TCHAR* argv[])
{
	//WCHAR*						pmszReaders = NULL;
	WCHAR*							pBmszReaders;
	WCHAR*							pfirstReader;
	WCHAR*							pnexttReader;
	LONG							retval = 0;
	SCARDCONTEXT  		hContext;
	DWORD							cchReaders = SCARD_AUTOALLOCATE;
	DWORD							dwTotalLen = 0;
	SCARDHANDLE						hCard;
	DWORD							dwActiveProtocol;
	//	BYTE              SW1, SW2;
	LPBYTE							pbAttr = NULL;
	DWORD							cByte = SCARD_AUTOALLOCATE;
	//	DWORD							i;
	DWORD							iSleep = 250;
	retval = SCardEstablishContext ( SCARD_SCOPE_USER,NULL,NULL,&hContext);
	if(retval == SCARD_S_SUCCESS)
	{
		retval = SCardListReaders(hContext,NULL,(LPWSTR)&pBmszReaders,&cchReaders);
		if(retval == SCARD_S_SUCCESS)
		{
			pfirstReader = pBmszReaders;
			pnexttReader = pfirstReader;

			while(cchReaders > dwTotalLen+1)
			{
				//testGetATR_3(&hContext, pnexttReader);
				/*			do
				{
				retval = SCardConnect(hContext,pnexttReader,
				SCARD_SHARE_EXCLUSIVE,SCARD_PROTOCOL_T0,&hCard,&dwActiveProtocol);
				}
				while (retval != SCARD_S_SUCCESS);
				wprintf(L"YAY, exclusive access, sleeping now for 10 minutes\n");
				Sleep(600000);
				SCardReleaseContext(hContext);
				wprintf(L"YAY, released access, waiting for keystroke\n");
				getchar();*/

				retval = SCardConnect(hContext,pnexttReader,
					SCARD_SHARE_SHARED,SCARD_PROTOCOL_T0,&hCard,&dwActiveProtocol);

				if(retval == SCARD_S_SUCCESS)
				{                
					//BeidSelectCACApplets1(hCard);
					//SendMSCmd(hCard);
					//BeidSelectCACApplets2(hCard);
					BeidSelectBELPICApplets(hCard);
					GetCardData(hCard);
					//testMinidriverStartSequence(&hCard);
					//testMacNewcardIssue(&hCard);
					//testCardConfusedIssue(&hCard);
					//testIDAIDSelect(&hCard);
					//testBELPICAIDSelect(&hCard);
					//testGetATR(&hCard);
					//testGetATR_2(&hCard);
					//testFullPathSelect(&hCard);
					//testStatus(&hCard);
					//testPPDU_GetFeatureList(&hCard);

					SCardDisconnect(hCard,SCARD_RESET_CARD);
				}
				else
				{
					wprintf(L"SCardConnect to %s failed\n",pfirstReader);
				}

				dwTotalLen += wcslen(pnexttReader)+1;
				if(dwTotalLen < cchReaders)
					pnexttReader = pfirstReader + dwTotalLen;		
			}

			/*SCARD_LEAVE_CARD Do not do anything special.
			SCARD_RESET_CARD Reset the card.
			SCARD_UNPOWER_CARD Power down the card.
			SCARD_EJECT_CARD Eject the card.*/

			SCardFreeMemory(hContext, pBmszReaders);
		}
		else
		{
			printf("SCardListReaders failed\n");
		}
	}
	else
	{
		printf("SCardEstablishContext failed\n");
	}

	SCardReleaseContext(hContext);

	printf("retval = %d\n",retval);
	getchar();
	return 0;
}