NtOpenProcess 函式 (ntddk.h)
ZwOpenProcess 例程會開啟進程物件的句柄,並設定此物件的訪問許可權。
語法
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcess(
[out] PHANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in, optional] PCLIENT_ID ClientId
);
參數
[out] ProcessHandle
HANDLE 類型的變數指標。 ZwOpenProcess 例程會將進程句柄寫入此參數所指向的變數。
[in] DesiredAccess
ACCESS_MASK值,其中包含呼叫者要求處理對象的訪問許可權。
[in] ObjectAttributes
OBJECT_ATTRIBUTES 結構的指標,指定要套用至進程物件句柄的屬性。 這個結構的 ObjectName 字段必須設定為 NULL。 如需詳細資訊,請參閱下列一節。
[in, optional] ClientId
用戶端識別碼的指標,識別要開啟其進程的線程。 此參數必須是有效用戶端識別碼的非 NULL 指標。 如需詳細資訊,請參閱下列一節。
傳回值
如果呼叫成功,ZwOpenProcess 會傳回STATUS_SUCCESS。 可能的傳回值包括下列錯誤狀態代碼:
傳回碼 | Description |
---|---|
STATUS_INVALID_PARAMETER_MIX | 呼叫端提供物件名稱或無法提供用戶端標識碼。 |
STATUS_INVALID_CID | 指定的用戶端識別碼無效。 |
STATUS_INVALID_PARAMETER | 要求的訪問許可權對進程對象無效。 |
STATUS_ACCESS_DENIED | 無法授與所要求的訪問許可權。 |
備註
如同其他系統服務呼叫所開啟的核心句柄的情況,例如 ZwCreateKey 和 ZwCreateFile,呼叫端負責呼叫 ZwClose 以在不再需要時關閉句柄。
ClientId 參數必須指向用戶端標識碼,以識別要開啟其進程的線程。 此外,ObjectAttributes 所指向結構的 ObjectName 欄位必須設定為 NULL。
如果在使用者模式中呼叫此函式,您應該使用名稱 「NtOpenProcess」 而不是 「ZwOpenProcess」。
針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxx 和 ZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxx 和 ZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
標頭 | ntddk.h (包含 Ntddk.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDDIs、PowerIrpDDis |