亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? scardmanager.cpp

?? 測試PCSC讀卡器的一個(gè)很好的例子
?? CPP
字號:
// SCardManager.cpp : implementation file
//

#include "stdafx.h"
#include "TestPCSC.h"
#include "SCardManager.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// SCardManager
// when object is create establish the contenxt
SCardManager::SCardManager()
{
	m_SCardEstablishContext();
}

// when object is destroyed release the context
SCardManager::~SCardManager()
{
	m_SCardReleaseContext();
}


BEGIN_MESSAGE_MAP(SCardManager, CWnd)
	//{{AFX_MSG_MAP(SCardManager)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// SCardManager message handlers

LONG SCardManager::m_SCardEstablishContext()
{
	LONG            lReturn;

	MessageBox("Establishing Context","Info",MB_OK);
	// Establish the context.
	lReturn = SCardEstablishContext(SCARD_SCOPE_USER,
                                NULL,
                                NULL,
                                &m_hSC);
	if ( SCARD_S_SUCCESS != lReturn ) {
		printf("Failed to establish contenxt with SCardEstablishContext\n");
	}
	return lReturn;
}


LONG SCardManager::m_SCardReleaseContext()
{

	LONG lReturn;
	
	MessageBox("Releasing Context","Info",MB_OK);
	// Free the context.
	lReturn = SCardReleaseContext(m_hSC);
	if ( SCARD_S_SUCCESS != lReturn )
		printf("Failed SCardReleaseContext\n");

	return lReturn;
}


CString SCardManager::m_SCardListReaders()
{

	LPTSTR          pmszReaders = NULL;
	LONG            lReturn, lReturn2;
	DWORD           cch = SCARD_AUTOALLOCATE;

	// Retrieve the list the readers.
	// hSC was set by a previous call to SCardEstablishContext (during object creation).
	lReturn = SCardListReaders(m_hSC,
                           NULL,
                           (LPTSTR)&pmszReaders,
                           &cch );
	switch( lReturn )
	{
    case SCARD_E_NO_READERS_AVAILABLE:
		m_csReaderList = "No Readers Available";
        break;

    case SCARD_S_SUCCESS:
        // Do something with the multi string of readers.
        // A double-null terminates the list of values.
		m_csReaderList = pmszReaders;

        // Free the memory.
        lReturn2 = SCardFreeMemory(m_hSC,
                                   pmszReaders );

        if ( SCARD_S_SUCCESS != lReturn2 )
			MessageBox("Failed to free memory","Error",MB_OK);
			
		break;

	default:
		m_csReaderList = "SCardListReaders Failed";
        break;
	}
	return m_csReaderList;
}


LONG SCardManager::m_SCardConnect(LPCTSTR lpstReader, CString message)
{

	LONG            lReturn;
	DWORD           dwAP;

	// Connect to the reader.
	// hContext is a SCARDCONTEXT previously set by 
	// a call to SCardEstablishContext.

	MessageBox("Connecting to " + m_SelectedReader,"Reader",MB_OK);

	lReturn = SCardConnect( m_hSC, 
			              (LPCTSTR)m_SelectedReader,
			             SCARD_SHARE_SHARED,
			              SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1,
			             &m_hCardHandle,
  			             &dwAP );
	
	if ( lReturn != SCARD_S_SUCCESS)
	{
		MessageBox((LPCTSTR)m_GetPCSCErrorString(lReturn),"Error",MB_OK);
	}


	// Use the connection; here we will merely display the
	// active protocol.
	switch ( dwAP )
	{
    case SCARD_PROTOCOL_T0:
        MessageBox("Active protocol T0","Protocol",MB_OK); 
        break;

    case SCARD_PROTOCOL_T1:
        MessageBox("Active protocol T1","Protocol",MB_OK); 
        break;

    case SCARD_PROTOCOL_UNDEFINED:
    default:
        MessageBox("Active protocol unnegotiated or unknown","Protocol",MB_OK); 
        break;
	}
	return lReturn;
}

void SCardManager::m_FillReaderComboBox(CComboBox *combobox)
{
	LPTSTR pmszReaders;
	LPTSTR pReader;

	m_SCardListReaders();
	pmszReaders = m_csReaderList.GetBuffer(0);

	// reader list is list of null terminated reader strings
	// list is terminated by double null character

	// get the first string
	pReader = pmszReaders;

	while('\0' != *pReader)
	{
		// add the string to the combo box
		combobox->AddString(pReader);

		// Advance to next value in string
		pReader = pReader + strlen(pReader);
	}

}

CString SCardManager::m_GetPCSCErrorString(LONG lReturn)
{

	switch(lReturn)
	{
        case 0x80100001:
                return "SCARD_F_INTERNAL_ERROR";
                break;

        case 0x80100002:
                return "SCARD_E_CANCELLED";
                break;

        case 0x80100003:
                return "SCARD_E_INVALID_HANDLE";
                break;

        case 0x80100004:
                return "SCARD_E_INVALID_PARAMETER";
                break;

        case 0x80100005:
                return "SCARD_E_INVALID_TARGET";
                break;

        case 0x80100006:
                return "SCARD_E_NO_MEMORY";
                break;

        case 0x80100007:
                return "SCARD_F_WAITED_TOO_LONG";
                break;

        case 0x80100008:
                return "SCARD_E_INSUFFICIENT_BUFFER";
                break;

        case 0x80100009:
                return "SCARD_E_UNKNOWN_READER";
                break;

        case 0x8010000A:
                return "SCARD_E_TIMEOUT";
                break;

        case 0x8010000B:
                return "SCARD_E_SHARING_VIOLATION";
                break;

        case 0x8010000C:
                return "SCARD_E_NO_SMARTCARD";
                break;

        case 0x8010000D:
                return "SCARD_E_UNKNOWN_CARD";
                break;

        case 0x8010000E:
                return "SCARD_E_CANT_DISPOSE";
                break;

        case 0x8010000F:
                return "SCARD_E_PROTO_MISMATCH";
                break;

        case 0x80100010:
                return "SCARD_E_NOT_READY";
                break;

        case 0x80100011:
                return "SCARD_E_INVALID_VALUE";
                break;

        case 0x80100012:
                return "SCARD_E_SYSTEM_CANCELLED";
                break;

        case 0x80100013:
                return "SCARD_F_COMM_ERROR";
                break;

        case 0x80100014:
                return "SCARD_F_UNKNOWN_ERROR";
                break;

        case 0x80100015:
                return "SCARD_E_INVALID_ATR";
                break;

        case 0x80100016:
                return "SCARD_E_NOT_TRANSACTED";
                break;

        case 0x80100017:
                return "SCARD_E_READER_UNAVAILABLE";
                break;

        case 0x80100018:
                return "SCARD_P_SHUTDOWN";
                break;

        case 0x80100019:
                return "SCARD_E_PCI_TOO_SMALL";
                break;

        case 0x8010001A:
                return "SCARD_E_READER_UNSUPPORTED";
                break;

        case 0x8010001B:
                return "SCARD_E_DUPLICATE_READER";
                break;

        case 0x8010001C:
                return "SCARD_E_CARD_UNSUPPORTED";
                break;

        case 0x8010001D:
                return "SCARD_E_NO_SERVICE";
                break;

        case 0x8010001E:
                return "SCARD_E_SERVICE_STOPPED";
                break;

        case 0x8010001F:
                return "SCARD_E_UNEXPECTED";
                break;

        case 0x80100020:
                return "SCARD_E_ICC_INSTALLATION";
                break;

        case 0x80100021:
                return "SCARD_E_ICC_CREATEORDER";
                break;

        case 0x80100022:
                return "SCARD_E_UNSUPPORTED_FEATURE";
                break;

        case 0x80100023:
                return "SCARD_E_DIR_NOT_FOUND";
                break;

        case 0x80100024:
                return "SCARD_E_FILE_NOT_FOUND";
                break;

        case 0x80100025:
                return "SCARD_E_NO_DIR";
                break;

        case 0x80100026:
                return "SCARD_E_NO_FILE";
                break;

        case 0x80100027:
                return "SCARD_E_NO_ACCESS";
                break;

        case 0x80100028:
                return "SCARD_E_WRITE_TOO_MANY";
                break;

        case 0x80100029:
                return "SCARD_E_BAD_SEEK";
                break;

        case 0x8010002A:
                return "SCARD_E_INVALID_CHV";
                break;

        case 0x8010002B:
                return "SCARD_E_UNKNOWN_RES_MNG";
                break;

        case 0x8010002C:
                return "SCARD_E_NO_SUCH_CERTIFICATE";
                break;

        case 0x8010002D:
                return "SCARD_E_CERTIFICATE_UNAVAILABLE";
                break;

        case 0x8010002E:
                return "SCARD_E_NO_READERS_AVAILABLE";
                break;

        case 0x80100065:
                return "SCARD_W_UNSUPPORTED_CARD";
                break;

        case 0x80100066:
                return "SCARD_W_UNRESPONSIVE_CARD";
                break;

        case 0x80100067:
                return "SCARD_W_UNPOWERED_CARD";
                break;

        case 0x80100068:
                return "SCARD_W_RESET_CARD";
                break;

        case 0x80100069:
                return "SCARD_W_REMOVED_CARD";
                break;

        case 0x8010006A:
                return "SCARD_W_SECURITY_VIOLATION";
                break;

        case 0x8010006B:
                return "SCARD_W_WRONG_CHV";
                break;

        case 0x8010006C:
                return "SCARD_W_CHV_BLOCKED";
                break;

        case 0x8010006D:
                return "SCARD_W_EOF";
                break;

        case 0x8010006E:
                return "SCARD_W_CANCELLED_BY_USER";
                break;

        case 0x0000007B:
                return "INACCESSIBLE_BOOT_DEVICE";
                break;

	default:
		return "Invalid Error Code";

	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品视频免费看| 亚洲bt欧美bt精品| 欧美日韩国产一二三| 国产精品一区二区你懂的| 亚洲综合免费观看高清完整版| 欧美成人女星排名| 一本大道久久a久久精二百| 蜜臀av性久久久久蜜臀aⅴ| 国产日本欧美一区二区| 91精品国产91综合久久蜜臀| 97se亚洲国产综合自在线观| 日韩欧美一区二区视频| 色综合网站在线| 国产乱码精品1区2区3区| 日本91福利区| 亚洲mv大片欧洲mv大片精品| 亚洲女同ⅹxx女同tv| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美乱妇15p| 欧美性猛交xxxx黑人交| 99久久夜色精品国产网站| 国产精品白丝av| 精品综合免费视频观看| 日韩精品亚洲一区| 亚洲国产视频一区| 亚洲精品成人天堂一二三| 中文字幕一区二区三区色视频| 久久精品欧美一区二区三区不卡| 日韩一区二区麻豆国产| 欧美日韩国产综合一区二区三区| 99久久精品免费看国产免费软件| 国产成人亚洲综合a∨婷婷图片| 久久97超碰色| 久久成人久久爱| 狠狠色丁香婷婷综合| 久久99精品一区二区三区| 蜜臀久久久99精品久久久久久| 午夜天堂影视香蕉久久| 婷婷综合五月天| 男男gaygay亚洲| 国产在线精品一区二区三区不卡| 久久草av在线| 岛国精品一区二区| 国产不卡视频在线播放| 成人涩涩免费视频| 91啪在线观看| 91久久线看在观草草青青| 91日韩精品一区| 欧美日韩在线播| 91超碰这里只有精品国产| 日韩主播视频在线| 免费看欧美女人艹b| 黄色精品一二区| 国产69精品一区二区亚洲孕妇| 成人毛片老司机大片| 91影视在线播放| 欧美色综合网站| 欧美一区二区三区精品| 欧美成人国产一区二区| 久久久久国产免费免费| 国产精品乱人伦| 亚洲一二三级电影| 蜜臀久久久久久久| 国产精品一卡二卡在线观看| 成人精品在线视频观看| 在线观看日韩一区| 欧美一二三区在线观看| 久久久精品影视| 亚洲中国最大av网站| 三级久久三级久久久| 国产高清在线观看免费不卡| 色悠悠亚洲一区二区| 91精品国产入口| 欧美激情资源网| 亚洲最大的成人av| 精品一区二区三区影院在线午夜| 成人小视频在线| 欧美精品少妇一区二区三区| 久久久综合视频| 亚洲成人自拍一区| 国产成人a级片| 欧美日韩成人激情| 中文一区二区完整视频在线观看| 亚洲国产精品精华液网站 | 久草这里只有精品视频| fc2成人免费人成在线观看播放| 欧美日韩日日骚| 国产精品色呦呦| 奇米色777欧美一区二区| 91丨porny丨在线| 日韩精品自拍偷拍| 亚洲乱码中文字幕综合| 国产美女精品在线| 91精品国产综合久久国产大片| 国产欧美精品区一区二区三区| 偷拍自拍另类欧美| caoporn国产一区二区| 日韩你懂的在线播放| 亚洲乱码国产乱码精品精的特点 | 日韩午夜精品视频| 综合亚洲深深色噜噜狠狠网站| 蜜桃视频在线一区| 在线观看国产精品网站| 国产亚洲女人久久久久毛片| 性做久久久久久免费观看欧美| 丁香六月综合激情| 日韩视频中午一区| 亚洲午夜一区二区三区| 91亚洲国产成人精品一区二三| 久久久久久久电影| 精品综合免费视频观看| 欧美三级乱人伦电影| 亚洲视频在线观看一区| 国产在线国偷精品产拍免费yy | 欧美夫妻性生活| 亚洲男人天堂av网| 成人va在线观看| 欧美国产激情一区二区三区蜜月| 青娱乐精品视频| 欧美日韩在线播放一区| 一区二区欧美在线观看| 色一情一伦一子一伦一区| 国产精品三级电影| 成人美女在线视频| 国产精品二三区| caoporn国产一区二区| 欧美国产国产综合| 国产91精品精华液一区二区三区 | 久久蜜臀中文字幕| 狠狠色丁香婷婷综合久久片| 日韩美女一区二区三区| 美日韩黄色大片| 精品区一区二区| 精品亚洲免费视频| 精品第一国产综合精品aⅴ| 麻豆久久久久久| 91精品国产综合久久精品麻豆 | 国产精品色一区二区三区| 国产成人精品一区二区三区四区| 日韩精品一区二区三区在线播放| 日韩国产欧美在线观看| 91精品国产免费| 久久精品国产99| 国产亚洲综合在线| 成人黄页在线观看| 亚洲欧美色图小说| 欧美专区在线观看一区| 日韩国产在线一| 日韩久久精品一区| 国产精品一区在线观看乱码| 国产色综合一区| 92国产精品观看| 亚洲国产综合视频在线观看| 欧美日韩国产在线观看| 久久99国产乱子伦精品免费| 国产日本欧美一区二区| 色综合一区二区三区| 天天影视网天天综合色在线播放 | 一区二区在线观看不卡| 欧美色电影在线| 奇米影视7777精品一区二区| 26uuu久久综合| 99免费精品在线观看| 亚洲一区二区三区中文字幕 | 日韩欧美一级二级| 国产成人精品午夜视频免费| 亚洲欧美成人一区二区三区| 欧美午夜寂寞影院| 日韩欧美精品三级| 成人蜜臀av电影| 日韩在线卡一卡二| 国产精品视频一区二区三区不卡| 欧美三级韩国三级日本三斤| 精品一区二区av| 一个色综合av| 2020国产精品久久精品美国| 92精品国产成人观看免费| 美女视频网站久久| 国产精品久久久久久久久果冻传媒| 欧美亚洲一区二区三区四区| 韩国女主播成人在线| 亚洲免费观看高清完整版在线| 欧美一区二区网站| av在线不卡免费看| 日本在线播放一区二区三区| 国产精品高潮呻吟久久| 91精品国模一区二区三区| av福利精品导航| 久久精品国产一区二区三 | 91精品国产综合久久福利| 高清在线观看日韩| 婷婷综合五月天| 亚洲精品日产精品乱码不卡| 精品国产乱码久久| 欧美人动与zoxxxx乱| 99久久99久久精品免费观看| 国产一区二区网址| 亚洲午夜精品久久久久久久久| 欧美极品少妇xxxxⅹ高跟鞋| 日韩欧美一区中文|