如何使用 PC/SC 与 reader 通信

How to communicate with the reader using PC/SC

我正在尝试使用 Windows (winscard.dll) 上的 PC/SC API 与 ACS ACR122U NFC 卡 reader 通信。

根据this document,有伪APDU可用于读取卡reader固件版本:FF 00 48 00 00

有了 reader 中的一张卡,我有这个工作:我调用 SCardEstablishContext(),然后 SCardConnectA() 得到一个句柄,然后用句柄调用 SCardTransmit().正如预期的那样,我得到了答案。

但是 reader 中没有卡片怎么办?

以上文件说:

• Pseudo-APDUs can be sent through the “ACR122U PICC Interface” if the tag is already connected
• Pseudo-APDUs can be sent using “Escape Command” if the tag is not yet presented

我不知道那是什么意思。如果我在 reader 中没有卡片的情况下尝试与上面相同的方法,SCardConnectA() 调用失败并出现 SCARD_W_REMOVED_CARD 错误,这意味着我没有句柄来调用 SCardTransmit() .

好的,我明白了。要允许在reader中无卡调用SCardConnectA()dwShareMode必须是SCARD_SHARE_DIRECTdwPreferredProtocols必须是 0.