2

EnumProcessesを使用してプロセスを取得し、1024または1024*2に等しいすべてのサンプルセットaProcessesを見つけました。

[delphi]このようなコード:

uses PsAPI;

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

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

end;

だから私の質問は、なぜ1024に等しいプロセスを設定するのですか、1024はプロセスの最大数ですか?

4

1 に答える 1

2

PsAPIが同じ名前のWin32メソッド(EnumProcessesMSDN)を使用していると仮定すると、1024は、マシンで一度に実行されているプロセスの数よりも大きい数を使用しようとします。リンクされた関数の注釈を見ると、次のように表示されていることがわかります。

列挙されたプロセスの数を判別するには、pBytesReturned値をsizeof(DWORD)で除算します。バッファが小さすぎてすべてのプロセス識別子を格納できない場合は、表示されません。したがって、pBytesReturnedがcbと等しい場合は、より大きな配列で呼び出しを再試行することを検討してください。

于 2012-12-14T07:20:27.957 に答える