共用方式為


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 無法授與要求的訪問許可權。

言論

如同其他系統服務呼叫所開啟的核心句柄,例如 ZwCreateKeyZwCreateFile,呼叫者會負責呼叫 ZwClose,以在不再需要時關閉句柄。

ClientId 參數必須指向識別要開啟其進程之線程的用戶端識別碼。 此外,ObjectAttribut es 所指向之結構 ObjectName 字段必須設定為 NULL

如果呼叫此函式是在使用者模式中發生,您應該使用名稱 「NtOpenProcess」,而不是 「ZwOpenProcess」。

對於內核模式驅動程式的呼叫,NtXxxZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxxZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程

要求

要求 價值
目標平臺 普遍
標頭 ntddk.h (include Ntddk.h, Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs, PowerIrpDDis

另請參閱

ACCESS_MASK

OBJECT_ATTRIBUTES

使用 Nt 和 Zw 版本的原生系統服務例程