C++;PKCS11方法C_初始化与参数 我们使用C++开发了应用PKCS11和APDU的智能卡操作应用程序。在这个应用程序中,我们尝试用参数调用C_Initialize方法。为此,我们使用结构CK_C_INITIALIZE_ARGS,代码如下所示: CK_C_INITIALIZE_ARGS InitArgs = { NULL_PTR, /* CreateMutex */ NULL_PTR, /* DestroyMutex */ NULL_PTR, /* LockMutex */ NULL_PTR, /* UnlockMutex */ CKF_OS_LOCKING_OK, /* flags */ NULL_PTR, /* pReserved */ }; rv = context->pkcs11->C_Initialize(&InitArgs);

C++;PKCS11方法C_初始化与参数 我们使用C++开发了应用PKCS11和APDU的智能卡操作应用程序。在这个应用程序中,我们尝试用参数调用C_Initialize方法。为此,我们使用结构CK_C_INITIALIZE_ARGS,代码如下所示: CK_C_INITIALIZE_ARGS InitArgs = { NULL_PTR, /* CreateMutex */ NULL_PTR, /* DestroyMutex */ NULL_PTR, /* LockMutex */ NULL_PTR, /* UnlockMutex */ CKF_OS_LOCKING_OK, /* flags */ NULL_PTR, /* pReserved */ }; rv = context->pkcs11->C_Initialize(&InitArgs);,c++,mingw,pkcs#11,C++,Mingw,Pkcs#11,当我们运行代码时,它返回0x7错误,这是错误的参数。我们查看了互联网上的许多示例,并查看了其他语言中的示例代码。它们都直接用于上述用途。当我们使用NULL_PTR调用它时,它不会生成任何错误 我们正在使用MinGW编译应用程序,它是在Qt中开发的。当我们查看CreateMutex属性时,我们看到MinGW有一个这样命名的宏。当我们重命名该宏时,它仍然不起作用 提前感谢您的支持 最好阅读这里的文档,我不认为结构成员(最后一个除外)可以是NULL\u PTR。我认为它试图说整个结构是可选的,而不是单

当我们运行代码时,它返回0x7错误,这是错误的参数。我们查看了互联网上的许多示例,并查看了其他语言中的示例代码。它们都直接用于上述用途。当我们使用NULL_PTR调用它时,它不会生成任何错误

我们正在使用MinGW编译应用程序,它是在Qt中开发的。当我们查看CreateMutex属性时,我们看到MinGW有一个这样命名的宏。当我们重命名该宏时,它仍然不起作用

提前感谢您的支持


最好阅读这里的文档,我不认为结构成员(最后一个除外)可以是
NULL\u PTR
。我认为它试图说整个结构是可选的,而不是单个成员。据我记忆所及,这个结构必须填充适当和有效的值。它不是为在前四个字段中传递NULL而设计的。引用说传递NULL而不是指向空结构的指针。稍后我将尝试查找参考资料并发布链接。您是否已验证您的PKCS11库是使用多线程支持编译的?可能它返回错误是因为它无法使用标准互斥机制。非常感谢您的评论。我向dll开发人员咨询过,正如您所指出的,dll不支持多线程操作。这就是为什么它不能允许args。因此,我们使用NULL_PTR作为参数进行初始化。