- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试阅读爱沙尼亚身份证的个人文件。
我需要将以下数据发送到卡(从
here ) 以从个人文件中读取记录(即 ID 号、姓名等):
00 A4 00 0C # We choose root folder
00 A4 01 0C 02 EE EE # We choose folder EEEE
00 A4 02 04 02 50 44 # We choose file 5044, which contains personal data
00 B2 XX 04 # We read record XX (see table) from the personal data file
# The card responds 61 YY, where YY denotes the number of bytes waiting to be read
00 C0 00 00 YY # We read YY bytes from the card
# Card responds ... 90 00, where ... is the requested data and 90 00 means status OK
SCardStatusChange
返回并开始处理卡片SCardConnect
或 SCardReconnect
)时出现错误 SCARD_E_SHARING_VIOLATION
一遍又一遍地收到,大约 5 秒 SCARD_E_PROTO_MISMATCH
接收时间在 3 到 30 秒之间,甚至更多。 // NOTE: this is approximately what I do.
// I haven't tested this code yet - it's almost 1 AM here.
#include <winscard.h>
void readSmartCard() {
LONG sCardErrorCode;
SCARDCONTEXT sCardContext;
DWORD sCardReaderStrLen = 1024;
wchar_t sCardReaderStr[1024];
SCARDHANDLE sCardHandle;
DWORD sCardActiveProtocol;
SCARD_READERSTATE readerState;
sCardErrorCode = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &sCardContext);
// error handling macro
ZeroMemory(&sCardReaderState, sizeof(sCardReaderState));
sCardReaderState.szReader = L"\\\\?PnP?\\Notification";
sCardReaderState.pvUserData = nullptr;
sCardReaderState.dwEventState = SCARD_STATE_PRESENT;
sCardErrorCode = SCardGetStatusChange(sCardContext, INFINITE, &readerState, 1);
// e.h.m
if (readerState.dwCurrentState == 65538) {
sCardErrorCode = SCardListReaders(sCardContext, NULL, sCardReaderStr, &sCardReaderStrLen);
// e.h.m
readerState.szReader = sCardReaderStr;
}
sCardErrorCode = SCardGetStatusChange(sCardContext, INFINITE, &readerState, 1);
// e.h.m
if (sCardReaderState.dwEventState & SCARD_STATE_PRESENT) {
while (true) {
sCardErrorCode = SCardConnect(sCardContext, readerState.szReader, SCARD_SHARE_EXCLUSIVE,
SCARD_PROTOCOL_T0, &sCardHandle, &sCardActiveProtocol);
// e.h.m
printf("%x", sCardErrorCode);
// this will print:
// 8010000b (for around 5s)
// 8010000f (for around 20s)
if (sCardErrorCode == SCARD_S_SUCCESS) {
break;
}
Sleep(1000);
}
// open personal file and read data, yay!
}
}
最佳答案
在互联网上搜索了很长时间后,我发现不需要更改命令。
我只需要在传输的读取/打开命令的末尾添加一个额外的零字节,并接收数据作为读取命令的响应,而不是使用单独的命令来接收字节。 (T=0 使用“请求数据/读取数据”模型,而 T=1 似乎只是响应数据)
我还需要更改所有提及 SCARD_PCI_T0
有条件地使用 SCARD_PCI_T1
并制作 SCardConnect()
功能也接受 T1。
我稍后会在这里发布一个不错的代码示例。
关于c++ - 连接到爱沙尼亚身份证时的 WinSCard SCARD_E_PROTO_MISMATCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39758253/
我正在尝试阅读爱沙尼亚身份证的个人文件。 我需要将以下数据发送到卡(从 here ) 以从个人文件中读取记录(即 ID 号、姓名等): 00 A4 00 0C # We choose
请检查我下面的 C# 代码。我正在尝试获取现在连接到我的计算机的智能卡读卡器列表。但是这个函数返回所有过去连接的智能卡读卡器名称(我的意思是现在没有连接)。我只想要事件的(当前)连接的读者姓名列表。我
我正在尝试使用以下代码连接智能卡读卡器 retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), M
我正在开发可与智能卡配合使用的可移植 native 客户端应用程序。为此,我想将 winscard 库包含到我的项目中。目前我在编译阶段失败了。 我在我的源文件中添加了一行 #include 和附加
如果读卡器中没有卡,我在获取 PCSC 读卡器序列号时遇到问题。我正在使用winscard.dll 和c++。 以下代码仅适用于读卡器中存在卡的情况。否则,不会检索 SCardHandle。我还没有找
我正在开发一个需要读取 mifare 卡序列号的应用程序,我使用的语言是 C#。 我是 mifare 读卡器编程的新手,所以很抱歉提出了愚蠢的问题。首先我想知道Mifare UID和Mifare Se
我必须使用 WinScard.dll 库来访问智能卡。我有一个 Java 应用程序,它加载并使用该库来访问智能卡。 32 位系统:最初我们的应用程序是为 32 位 Windows 编写的。因此,以下库
我正在使用 ACR122U 测试智能卡。但是,当我在上面放一张卡时,Windows 会自动向它发送 APDU 命令。 根据问题windows 8 disable smartcard plug and
两周以来,我一直致力于读取事件 NFC TI 芯片的标签和存储链接。 我在阅读 ATR 时也遇到了问题。 我的阅读器是 Springcard H663。 我使用 winScard.dll 并设法成功地
我们购买了ACR122 USB SDK用于NFC测试。我们想为 ACR122U-A2 NFC 阅读器构建测试桌面应用程序。我们正在 Microsoft Windows 7 平台上用 Java 开发它。
我正在创建一个 .NET Windows 服务来与智能卡读卡器通信。主要组件是一个名为 winscard.dll 的 Windows DLL,我在 .NET 代码中将其与 DLLImport 属性一起
为了与智能卡通信,我使用 WINSCARD.DLL 作为 API 将 APDU 命令发送到智能卡。对于几个读卡器,这是按预期工作的,但不知何故,如果我将命令发送到 O2Micro 读卡器,我从方法 S
我正在使用 C++ 开发通用 Windows 平台应用程序。我有一个用 C++ 编写的工作 项目,它可以与智能卡通信。对于此通信,它使用 winscard.h 库。 我想在 UWP 应用程序中使用 w
一些背景信息: 为了读取/写入 SLE4442 存储卡,我的应用目前正在使用 Omnikey Cardman 3021 USB 读卡器,一个能够包装 CT-API 调用(定向到 omnikey 的 d
我是一名优秀的程序员,十分优秀!