enumProcesses 函式 (psapi.h)
擷取系統中每個進程物件的進程識別碼。
語法
BOOL EnumProcesses(
[out] DWORD *lpidProcess,
[in] DWORD cb,
[out] LPDWORD lpcbNeeded
);
參數
[out] lpidProcess
接收進程識別碼清單之陣列的指標。
[in] cb
pProcessIds陣列的大小,以位元組為單位。
[out] lpcbNeeded
pProcessIds陣列中傳回的位元組數目。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
使用大型陣列是個不錯的主意,因為很難預測呼叫 EnumProcesses時會有多少進程。
若要判斷列舉多少個進程,請將 l ( DWORD 的值除以 DWORD) 。 當緩衝區太小而無法儲存所有進程識別碼時,沒有任何指示。 因此,如果 lcbNeeded 等於 cb,請考慮重試具有較大陣列的呼叫。
若要取得您剛取得其識別碼之進程的進程控制碼,請呼叫 OpenProcess 函式。
從 Windows 7 和 Windows Server 2008 R2 開始,Psapi.h 會建立 PSAPI 函式的版本號碼。 PSAPI 版本號碼會影響用來呼叫函式的名稱,以及程式必須載入的程式庫。
如果PSAPI_VERSION為 2 或更新版本,此函式會在 Psapi.h 中定義為 K32EnumProcesses ,並在 Kernel32.lib 和 Kernel32.dll 中匯出。 如果PSAPI_VERSION為 1,此函式會在 Psapi.h 中定義為 EnumProcesses ,並在 Psapi.lib 中匯出,並 Psapi.dll 為呼叫 K32EnumProcesses的包裝函式。
必須在舊版 Windows 和 Windows 7 和更新版本上執行的程式,應該一律將此函式呼叫為 EnumProcesses。 若要確保符號的正確解析度,請將 Psapi.lib 新增至 TARGETLIBS 宏,並使用 –DPSAPI_VERSION=1 編譯器。 若要使用執行時間動態連結,請載入 Psapi.dll。
範例
需求
最低支援的用戶端 | Windows XP [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2003 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | psapi.h |
程式庫 | Windows 7 和 Windows Server 2008 R2 上的 Kernel32.lib;如果 Windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,Psapi.lib (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.lib |
Dll | Windows 7 和 Windows Server 2008 R2 上的 Kernel32.dll;如果 windows 7 和 Windows Server 2008 R2 上的 PSAPI_VERSION=1) ,則為 Psapi.dll (;Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP 上的 Psapi.dll |