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。 可能的傳回值包括下列錯誤狀態代碼:
傳回碼 | 描述 |
---|---|
STATUS_INVALID_PARAMETER_MIX | 呼叫端提供物件名稱或無法提供用戶端標識碼。 |
STATUS_INVALID_CID | 指定的用戶端識別碼無效。 |
STATUS_INVALID_PARAMETER | 要求的訪問許可權對進程對象無效。 |
STATUS_ACCESS_DENIED | 無法授與要求的訪問許可權。 |
言論
如同其他系統服務呼叫所開啟的核心句柄,例如 ZwCreateKey 和 ZwCreateFile,呼叫者會負責呼叫 ZwClose,以在不再需要時關閉句柄。
ClientId 參數必須指向識別要開啟其進程之線程的用戶端識別碼。 此外,ObjectAttribut es 所指向之結構 ObjectName 字段必須設定為 NULL。
如果呼叫此函式是在使用者模式中發生,您應該使用名稱 「NtOpenProcess」,而不是 「ZwOpenProcess」。
對於內核模式驅動程式的呼叫,NtXxx 和 ZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxx 與 ZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ntddk.h (include Ntddk.h, Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDDIs, PowerIrpDDis |