获取APDU请求错误c ++

Posted

技术标签:

【中文标题】获取APDU请求错误c ++【英文标题】:get APDU request error c++ 【发布时间】: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 也是错误的。 那么这是否解决了您的错误?如果是这样,请将其发布为后代的答案。一段时间后,您甚至可以接受自己的答案,尽管您不会因此获得积分(尽管我会投票)。 【参考方案1】:

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

是的。已经解决了问题

【讨论】:

以上是关于获取APDU请求错误c ++的主要内容,如果未能解决你的问题,请参考以下文章

本地主机上的 React Native 和 C# WebAPI 之间的获取命令返回网络请求失败错误

Oracle 快速连接故障转移不适用于 ODP.NET。获取连接请求超时错误

解决springboot项目请求出现非法字符问题

在 / 处获取 TemplateDoesNotExist

客户端发起一个网络请求都经历了啥

使用 BinaryReader/Writer 的 C# Socket 从读取器获取错误数据