C++ 是否存在Windows从未用于processID的特殊值?

C++ 是否存在Windows从未用于processID的特殊值?,c++,windows,multithreading,api,vb6,C++,Windows,Multithreading,Api,Vb6,在一次代码检查中,我发现原来的程序员假设他的程序永远不会得到1010(一千零十)PID 因此,在PID 1010上有一个硬编码测试 这是安全代码吗 这是windows从未使用过的值吗 谢谢。任何程序都无法获得1010(一千零十)PID。所有PID(和所有内核句柄)都将是4的倍数,因为其值的两个低位将是0 从ntdef.h // // Low order two bits of a handle are ignored by the system and available // for us

在一次代码检查中,我发现原来的程序员假设他的程序永远不会得到1010(一千零十)PID

因此,在PID 1010上有一个硬编码测试

  • 这是安全代码吗
  • 这是windows从未使用过的值吗

谢谢。

任何程序都无法获得
1010
(一千零十)PID。所有PID(和所有内核句柄)都将是4的倍数,因为其值的两个低位将是0

ntdef.h

//
// Low order two bits of a handle are ignored by the system and available
// for use by application code as tag bits.  The remaining bits are opaque
// and used to store a serial number and table index.
//

@jeffamaphone问得好,但我们都知道答案,我找不到,但下面引用的ntdef.h头是非常强大的文档。进程ID不是句柄,是吗?任务管理器显示它们都是4的倍数。所以代码是安全的。无论如何,使用null或其他明确的默认值将使代码更具可读性。-谢谢。@HarryJohnston,不,它们不是句柄,但是为了获得pid,操作系统使用了与创建句柄相同的子例程(
exearatehold
)。更多,@MCND感谢最后的链接