📄 file.cpp
字号:
#include "SCcommand.h"
/*
SelEF
*/
LONG SelEF ( SCARDHANDLE hCard,WORD wFID )
{
LONG _lResult;
SCARD_IO_REQUEST _ioSendPci;
SCARD_IO_REQUEST _ioRecvPci;
BYTE _CAPDU [300];
DWORD _dwCAPDULen;
BYTE _RAPDU [300];
DWORD _dwRAPDULen=0;
_CAPDU [ CLA ] = 0x00; //CLA_NORMAL;
_CAPDU [ INS ] = 0xA4; //DSA_SELECT_FILE;
_CAPDU [ P1 ] = 0x02;
_CAPDU [ P2 ] = 0x0C;
_CAPDU [ LC ] = 2;
_CAPDU [ DATAC ] = (BYTE)((wFID >> 8) & 0x00FF);
_CAPDU [ DATAC + 1] = (BYTE)( wFID & 0x00FF);
_dwCAPDULen = _CAPDU [ LC ] + 5;
_dwRAPDULen = 300;
_ioSendPci.dwProtocol = SCARD_PROTOCOL_T1;
_ioSendPci.cbPciLength = sizeof ( _ioSendPci );
_ioRecvPci.dwProtocol = SCARD_PROTOCOL_T1;
_ioRecvPci.cbPciLength = sizeof ( _ioRecvPci );
_lResult = SCardTransmit ( hCard, &_ioSendPci, _CAPDU, _dwCAPDULen, &_ioRecvPci, _RAPDU, &_dwRAPDULen );
if ( _lResult == SCARD_S_SUCCESS )
{
#ifdef _DEBUG
DumpBuf ( "<SelEF> ", (char *) _CAPDU, (int) _dwCAPDULen, 0 );
DumpBuf ( "R = ", (char *) _RAPDU, (int) _dwRAPDULen, 1 );
#endif
if ( ProcessSW ( _RAPDU, _dwRAPDULen ) == FALSE )
_lResult = ICC_ERR_SW1SW2;
}
return ( _lResult );
}
/*
SelDF
*/
LONG SelDF ( SCARDHANDLE hCard, BYTE *DFAID )
{
LONG _lResult;
SCARD_IO_REQUEST _ioSendPci;
SCARD_IO_REQUEST _ioRecvPci;
BYTE _CAPDU [300];
DWORD _dwCAPDULen;
BYTE _RAPDU [300];
DWORD _dwRAPDULen=0;
_CAPDU [ CLA ] = 0x00; //CLA_NORMAL;
_CAPDU [ INS ] = 0xA4; //DSA_SELECT_FILE;
_CAPDU [ P1 ] = 0x04;
_CAPDU [ P2 ] = 0x0C;
_CAPDU [ LC ] = 0x0C;
for( BYTE i=0; i<_CAPDU [ LC ]; i++ )
_CAPDU [ DATAC + i] = (BYTE)(DFAID[i]);
_dwCAPDULen = _CAPDU [ LC ] + 5;
_dwRAPDULen = 300;
_ioSendPci.dwProtocol = SCARD_PROTOCOL_T1;
_ioSendPci.cbPciLength = sizeof ( _ioSendPci );
_ioRecvPci.dwProtocol = SCARD_PROTOCOL_T1;
_ioRecvPci.cbPciLength = sizeof ( _ioRecvPci );
_lResult = SCardTransmit ( hCard, &_ioSendPci, _CAPDU, _dwCAPDULen, &_ioRecvPci, _RAPDU, &_dwRAPDULen );
if ( _lResult == SCARD_S_SUCCESS )
{
#ifdef _DEBUG
DumpBuf ( "<SelDF> ", (char *) _CAPDU, (int) _dwCAPDULen, 0 );
DumpBuf ( "R = ", (char *) _RAPDU, (int) _dwRAPDULen, 1 );
#endif
if ( ProcessSW ( _RAPDU, _dwRAPDULen ) == FALSE )
_lResult = ICC_ERR_SW1SW2;
}
return ( _lResult );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -