我正在开发一个 USB 智能卡,并且我使用 Windows PC/SC API 来使用该智能卡传输数据。这是我的代码的一部分:
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司机。
有谁能够帮我?