我正在開發usb-smartcard &我使用windows PC/SC API與該智能卡進行數據傳輸。這是我的代碼部分:當dwMaxCCIDMessageLength大於4KB時,SCardTransmit返回ERROR_INVALID_PARAMETER
if(SCardConnect(hSC, sCard, SCARD_SHARE_EXCLUSIVE, SCARD_PROTOCOL_T1, &hCard, &dwActiveProtocol) == SCARD_S_SUCCESS)
{
if(SCardTransmit(hCard, SCARD_PCI_T1, pSendBuf, ulSendBufLen, SCARD_PCI_T1, pRecBuf, pulRecBufLen) == SCARD_S_SUCCESS)
{
//do something
}
}
我敢肯定,大小&指向同時輸入/輸出緩衝器是有效的。
直到設備描述符的字段dwMaxCCIDMessageLength
比0x00001000h
下,不存在問題&方案工作得很好,但是當我將其增加到一個較大的值(超過4KB更多),SCardTransmit
失敗ERROR_INVALID_PARAMETER結果代碼。
目前,我知道pSendBuf
內容是由智能卡&處理內容成功接收已完成,但是當卡想回一個響應,這個錯誤發生&我認爲這是某種不一致的(如緩衝區大小限制)在PC/SC驅動程序中。
任何人都可以幫助我嗎?