CryptGetProvParam 和多线程程序

CryptGetProvParam and multithreaded programs

CryptGetProvParam 的 MSDN 文档说

此函数不得在多线程程序的线程上使用。

我希望有一些条件可以这样使用它。有没有人在这方面有任何经验,可以告诉我解决方法?

谢谢。

一些 MSDN 文档是由实习生编写的,质量并不总是很好。他们显然在谈论与同时从多个线程调用此函数相关的问题,而不仅仅是进程中有多个线程。

如果您查看一些查询值以及 API 的设计方式,应该很容易发现 不能 使用多线程的查询。任何使用 CRYPT_FIRST/NEXT (PP_*ENUM*) 的东西都必须依赖一些内部状态来记住 "where it is"。这些查询的描述中也有线程警告。

这并不意味着其他查询是线程安全的,但我认为它们是。您可以调试这些功能,但事情可能会在 time/versions 之后发生变化,并且部分加密系统也是可扩展的,因此如果没有来自 Microsoft 的官方信息,您永远无法真正了解。您可以向 MSDN 页面添加反馈并希望他们更新它。