Cryptoki C_Initialize 失败,代码为 0x5

Cryptoki C_Initialize fails with code 0x5

我正在开发一个使用 PKCS#11 访问智能卡的应用程序。我能够获得 gclib.dll 中存在的入口点并成功调用它们。 (我调用了C_GetFunctionList得到了函数列表)

但是调用 C_Initialize(NULL_PTR) returns 错误代码为 0x5。发生此故障的一般原因是什么?我一直无法找到明确的答案,为什么它可能会在这里失败。

谢谢。

编辑:我在调用 C_Initialize 时检查了 procmon,它试图寻找 2 个 windows 注册表项,但它们不存在。 HKLM\SOFTWARE\Wow6432Node\Gemplus\Cryptography\PKCS11\Token HKLM\SOFTWARE\Wow6432Node\Gemplus\Cryptography\PKCS11.0

根据我在网上找到的信息 Windows XP(和其他一些 windows 操作系统)预装了 GemSafe 驱动程序。注册表项也存在,无需添加任何其他配置。 https://msdn.microsoft.com/en-us/subscriptions/downloads/cc780058

但 Windows 并非如此 7. 我能够通过安装 Gemalto Classic Client 6.1 而不是尝试安装 GemSafe 来解决此问题,并且添加了我需要的注册表项。 http://support.gemalto.com/index.php?id=classic_client