Windows上的最大进程ID是多少?

Shi*_*kun 16 windows winapi pid process

通过调用DWORD GetProcessId(HANDLE)或可以获得的最大进程ID是DWORD GetCurrentProcessId()多少?它没有记录在API的文档页面上.

Ser*_*bry 15

根据推动Windows的限制:进程和线程博客由Mark Russinovich撰写,进程数量仅受可用内存的限制.因此理论上最大进程id接近DWORD_MAX(pids可在4处整除).

  • 但是,您从哪里得到PID是DWORD的概念呢?“ PID可在4上整除”令人困惑和模糊。如果您的意思是它们可以被4整除,那么您假设它们是DWORD是毫无根据的,因为任何数字都可以被4整除。如果您是说它们在内存中是“ DWORD”对齐的,那么这又是一个似是而非的假设,因为即使是char也可以是DWORD对齐的。 (2认同)
  • 我想说你需要将DWORD_MAX(0xFFFFFFFF)对齐到4.所以最大PID是0xFFFFFFFC. (2认同)
  • 你可以看看 GetProcessId 函数。它以 DWORD 形式返回 PID。 (2认同)
  • 请注意,您不应该依赖PID [可被4整除](http://blogs.msdn.com/b/oldnewthing/archive/2008/02/28/7925962.aspx)。纯粹是巧合。 (2认同)

Her*_*bob 5

我找不到关于它的官方声明,但由于它是作为 DWORD 存储和返回的,因此您应该假设它可以使用整个 32 位范围。但在实际系统中,我从未见过大于 200,000 的 PID - 因为 Windows 将重用 PID,因此它们很少会变得更大。

  • 我见过 PID 在 40 亿范围内。但我已经呆了一段时间了。 (43认同)
  • 我在具有句柄泄漏的应用程序的系统上看到过更大的进程 ID(数以百万计),并且进程 ID 不可重复使用。 (2认同)