共用方式為


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

備註

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

ClientId 參數必須指向用戶端標識碼,以識別要開啟其進程的線程。 此外,ObjectAttributes 所指向結構的 ObjectName 欄位必須設定為 NULL

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

針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxxZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本

規格需求

需求
目標平台 Universal
標頭 ntddk.h (包含 Ntddk.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs、PowerIrpDDis

另請參閱

ACCESS_MASK

OBJECT_ATTRIBUTES

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