如何将低级别命令(非APDU)发送到Windows 10(移动)上的智能卡?

我正在编写基于Microsoft提供的NFC示例的代码。
Windows.Devices.SmartCards中的所有内容都是关于APDU命令的。 例如,TransmitAsync方法描述如下:

asynchronous传输提供的应用协议数据单元(APDU)命令并返回响应。

然而,由于这是一个字节数组的参数的方法,我以为我能够通过使用这种方法摆脱APDU。 我在CardReader.xaml.cs文件中插入了一些代码:

private async Task HandleCard(SmartCard card){ ...... // Handle MIFARE Standard/Classic LogMessage("MIFARE Standard/Classic card detected"); var mfStdAccess = new MifareStandard.AccessHandler(connection); var uid = await mfStdAccess.GetUidAsync(); LogMessage("UID: " + BitConverter.ToString(uid)); // My code LogMessage("=============="); await SendBytes(connection, new byte[] { 0xFF, 0xCA, 0, 0, 0 }); //APDU Test await SendBytes(connection, new byte[] { 0x50, 0x00 }); // Halt card await SendBytes(connection, new byte[] { 0x52 }); //Wake card return; ...... } private async Task<byte[]> SendBytes(SmartCardConnection connection, byte[] RawData) { LogMessage("> " + BitConverter.ToString(RawData).Replace("-", " ").ToUpper()); byte[] res = (await connection.TransmitAsync(RawData.AsBuffer())).ToArray(); LogMessage("< " + BitConverter.ToString(res).Replace("-", " ").ToUpper()); return res; } 

我运行手机上的应用程序发送命令给Mifare Classic 1K卡。 但是,我得到的是:

 > FF CA 00 00 00 < 02 27 9F 8F 90 00 > 50 00 < 63 00 > 52 < 63 00 

APDU显然是有效的。 我不知道什么是63 00,但我想这是一个APUD命令中的SW响应?
我在论坛上看到,您可以使用NfcAdapter在Android手机上执行此操作。 我的代码有什么问题? 或者,甚至可以在Windows 10 Mobile上发送低级命令(去除APDU)?
谢谢。

PCSC具有特定于存储卡的命令。 这样你可以得到Mifare的支持。 当然,读者需要支持Mifare卡,但是Mifare仍然很受欢迎。

但是,本机Mifare命令不受支持。 您需要将它们转换为2.01规范第3.2.2.1节中的PCSC命令。

所以你不需要摆脱本机命令。 只需将存储卡特定的APDU发送给读卡器,读卡器就会将原始命令发送到卡上。

您必须发送Maarten所要求的PCSC命令。 在c#上有一个库,将低级的Mirafe命令封装到PCSC APDU中。

检查onovotny的存储库