共用方式為


NtOpenThreadToken 函式 (ntifs.h)

NtOpenThreadToken 例程會開啟與線程相關聯的存取令牌,並傳回可用來存取該令牌的句柄。

語法

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenThreadToken(
  [in]  HANDLE      ThreadHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [in]  BOOLEAN     OpenAsSelf,
  [out] PHANDLE     TokenHandle
);

參數

[in] ThreadHandle

處理要開啟其存取令牌的線程。 句柄必須具有THREAD_QUERY_INFORMATION存取權。 使用 NtCurrentThread 巨集來指定目前的線程。

[in] DesiredAccess

ACCESS_MASK 結構,指定存取令牌的要求存取類型。 這些要求的存取類型會與令牌的任意訪問控制清單(DACL)進行比較,以判斷授與或拒絕哪些訪問許可權。

[in] OpenAsSelf

布爾值,指定是否要針對呼叫 NtOpenThreadTo ken 線程的安全性內容,或針對呼叫線程之進程的安全性內容進行存取檢查。

如果此參數 FALSE,則會使用呼叫線程的安全性內容來執行存取檢查。 如果線程正在模擬用戶端,此安全性內容可以是客戶端進程。 如果此參數 TRUE,則會使用呼叫線程進程的安全性內容進行存取檢查。

[out] TokenHandle

呼叫端配置的變數指標,該變數會接收新開啟存取令牌的句柄。

傳回值

NtOpenThreadToken 會傳回STATUS_SUCCESS或適當的錯誤狀態。 可能的錯誤狀態代碼包括下列專案:

傳回碼 描述
STATUS_ACCESS_DENIED
ThreadHandle 沒有THREAD_QUERY_INFORMATION存取權。
STATUS_CANT_OPEN_ANONYMOUS 用戶端要求 SecurityAnonymous 模擬層級。 不過,無法開啟匿名令牌。 如需詳細資訊,請參閱 SECURITY_IMPERSONATION_LEVEL
STATUS_INVALID_HANDLE ThreadHandle 不是有效的句柄。
STATUS_NO_TOKEN 已嘗試開啟與目前未模擬用戶端之線程相關聯的令牌。
STATUS_OBJECT_TYPE_MISMATCH ThreadHandle 不是線程句柄。

言論

NtOpenThreadToken 會開啟與線程相關聯的存取令牌,並傳回該令牌的句柄。

OpenAsSelf 參數可讓伺服器進程在用戶端進程指定 SECURITY_IMPERSONATION_LEVEL 列舉類型的 SecurityIdentification 模擬層級時,開啟用戶端進程的存取令牌。 如果沒有此參數,呼叫進程就無法使用用戶端的安全性內容開啟用戶端的存取令牌,因為無法使用 SecurityIdentification 模擬層級開啟執行層級物件。

呼叫 NtOpenThreadToken 取得的任何句柄,最終都必須呼叫 NtClose來釋放。

如需安全性和訪問控制的詳細資訊,請參閱 適用於驅動程式開發人員的 Windows 安全性模型,以及 Windows SDK 中這些主題的檔。

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

要求

要求 價值
最低支援的用戶端 Windows XP
標頭 ntifs.h
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe

另請參閱

ACCESS_MASK

ACL

NtOpenThreadTokenEx

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

ZwClose

ZwOpenProcessTokenEx