是否安全/定义假定Windows伪句柄的值?

时间:2017-08-11 09:35:19

标签: c++ windows handle

我正在为Windows编写一段C ++代码,需要查询进程及其各个线程的时间。

要进行必要的系统调用,我需要进程的句柄及其每个线程。我正在使用getCurrentProcessgetCurrentThread函数,它们都返回一个伪句柄。经过进一步检查,我注意到所有线程的伪句柄共享相同的值。

在互联网上进行了简短的搜索后,我发现以下文章报告了与我获得的进程和线程伪句柄相同的值:https://weseetips.wordpress.com/2008/03/26/getcurrentthread-returns-pseudo-handle-not-the-real-handle/

我的问题:安全和/或定义从一个线程调用getCurrentThread一次并在所有其他线程中使用返回的伪句柄让它们引用自己?

使用当前实现,这可以按预期工作。我只是想知道这种行为是否得到保证。换句话说,它是否可以在任何提供getCurrentThread功能的Windows平台上运行;并且会改变行为被认为是一个突破性的变化吗?

documentation for the getCurrentThread function州(强调我的):

  

伪句柄是一个特殊常量,被解释为   当前线程句柄。 调用线程可以使用此句柄   每当需要一个线程句柄时指定它自己。 [...]

这让我相信这个特殊的伪句柄只是“当前线程”的别名,因此可以在所有线程之间共享,让它们引用自己。另一方面,文档还说调用线程可以使用返回值,因此我的困惑!

0 个答案:

没有答案