2012-12-14 16 views
2

我使用EnumProcesses獲得過程,我只是覺得所有的例子設置aProcesses等於1024或1024 * 2爲什麼參數aProcesses在EnumProcesses中設置1024?

[德爾福]這樣的代碼:

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是最大進程數?

回答

2

假設PsAPI使用相同名稱的Win32方法(MSDN中的EnumProcesses),1024會嘗試使用比一次在機器上運行的進程數更多的數字。如果您查看鏈接函數的註釋,您會看到它說:

要確定有多少個進程被枚舉,請將pBytesReturned值除以sizeof(DWORD)。當緩衝區太小而不能存儲所有進程標識符時,沒有指示。因此,如果pBytesReturned等於cb,則考慮用更大的數組重試該調用。

相關問題