【发布时间】:2013-02-18 15:19:44
【问题描述】:
所以.. 我有 pcsc 阅读器、智能卡和 c++ 代码。 寻找读者,选择他们,联系并获得 ATR - 工作得很好。
但是在 ATR-get 之后我需要获取 APDU 请求,这段代码
SCARD_IO_REQUEST ioRecv;
byte pbRecvBuffer[255];
int pbRecvLength=255;
byte pbSendBuffer[] ={ 0x00, 0xb0, 0x00, 0x00}; //any comand
int cbSendLength = sizeof(pbSendBuffer);//size of comand
ioRecv.cbPciLength = 255;
DWORD dwSize=255;
//our Transmit those return error
lReturn = SCardTransmit(hSC,
(LPCSCARD_IO_REQUEST)dwAP,
pbSendBuffer,
cbSendLength,
NULL,
pbRecvBuffer,
&dwSize);
if(lReturn==SCARD_S_SUCCESS){
//do smt with pbRecvBuffer
printf("success");
}
else {
printf("error ");
}
总是返回“错误”... 如果您能帮助我或指出我的错误,我将不胜感激。
谢谢
【问题讨论】:
-
Error was found in first param of SCardTransmit() - 根据 MSDN 在 SCardTransmit() 中的描述不需要传递一个 hSC。所以必须通过 m_hCardHandle 从 SCardConnect() 接收。通过 (LPCSCARD_IO_REQUEST)dwAP 也是错误的。
-
那么这是否解决了您的错误?如果是这样,请将其发布为后代的答案。一段时间后,您甚至可以接受自己的答案,尽管您不会因此获得积分(尽管我会投票)。