0

所以.. 我有 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 "); 
}

总是返回“错误”......如果你能帮助我或指出我的错误,我将非常感激。

谢谢

4

1 回答 1

0

在 SCardTransmit() 的第一个参数中发现错误 - 根据 MSDN 在 SCardTransmit() 中的描述不需要传递 hSC。所以必须通过 m_hCardHandle 从 SCardConnect() 接收。通过 (LPCSCARD_IO_REQUEST)dwAP 也是错误的

是的。它已经解决了问题

于 2013-04-23T14:14:11.213 回答