ntOpenProcessToken 函式 (ntifs.h)
NtOpenProcessToken 例程會開啟與進程相關聯的存取令牌,並傳回可用來存取該令牌的句柄。
語法
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcessToken(
[in] HANDLE ProcessHandle,
[in] ACCESS_MASK DesiredAccess,
[out] PHANDLE TokenHandle
);
參數
[in] ProcessHandle
要開啟其存取令牌的進程句柄。 句柄必須具有PROCESS_QUERY_INFORMATION存取權。 使用 NtCurrentProcess 宏,定義於 Ntddk.h 中,以指定目前的進程。
[in] DesiredAccess
ACCESS_MASK 結構,指定存取令牌的要求存取類型。 這些要求的存取類型會與令牌的任意訪問控制清單進行比較, (DACL) ,以判斷授與或拒絕哪些存取權。
[out] TokenHandle
呼叫端配置的變數指標,該變數會接收新開啟之存取令牌的句柄。
傳回值
NtOpenProcessToken 會傳回STATUS_SUCCESS或適當的錯誤狀態。 可能的錯誤狀態代碼包括:
傳回碼 | Description |
---|---|
STATUS_ACCESS_DENIED | ProcessHandle 沒有PROCESS_QUERY_INFORMATION存取權。 |
STATUS_INSUFFICIENT_RESOURCES | 無法配置新的令牌句柄。 |
STATUS_INVALID_HANDLE | ProcessHandle 不是有效的句柄。 |
STATUS_OBJECT_TYPE_MISMATCH | ProcessHandle 不是進程句柄。 |
STATUS_PRIVILEGE_NOT_HELD | 呼叫端沒有 許可權 (SeSecurityPrivilege) 建立具有 DesiredAccess 參數中所指定存取權的令牌句柄。 |
STATUS_QUOTA_EXCEEDED | 進程的記憶體配額不足以配置令牌句柄。 |
STATUS_UNSUCCESSFUL | 無法建立令牌句柄。 |
備註
若要指定存取令牌句柄的屬性,請改用 NtOpenProcessTokenEx 。
進程可以在其內容中執行驅動程式的處理程式存取句柄。
呼叫 NtOpenProcessToken 取得的任何句柄最終都必須藉由呼叫 NtClose 來釋放。
如需安全性和訪問控制的詳細資訊,請參閱 適用於驅動程序開發人員的 Windows 安全性模型 ,以及 Windows SDK 中這些主題的相關文件。
針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxx 和 ZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxx 和 ZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本。
規格需求
需求 | 值 |
---|---|
標頭 | ntifs.h |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |