2

我使用 EnumProcesses 来获取进程,我只是发现所有示例集 aProcesses 等于 1024 或 1024*2

[delphi] 代码如下:

uses PsAPI;

var
  cbNeeded : DWORD;
  aProcesses : array[0..1024] of DWORD;
begin

  EnumProcesses(@aProcesses, sizeof(aProcesses), &cbNeeded);
  //use PID do something

end;

所以我的问题是为什么将 aProcesses 设置为 1024,1024 是最大进程数?

4

1 回答 1

2

假设 PsAPI 使用的是同名的 Win32 方法(EnumProcesses在 MSDN 中),1024 是尝试使用大于机器上一次运行的进程数的数字。如果您查看链接功能的备注,您会看到它说:

要确定枚举了多少进程,请将 pBytesReturned 值除以 sizeof(DWORD)。当缓冲区太小而无法存储所有进程标识符时,没有给出指示。因此,如果 pBytesReturned 等于 cb,请考虑使用更大的数组重试调用。

于 2012-12-14T07:20:27.957 回答