ntSetInformationToken 函式 (ntifs.h)
NtSetInformationToken 例程會修改指定令牌中的資訊。 呼叫進程必須具有適當的訪問許可權,才能設定資訊。
語法
__kernel_entry NTSYSCALLAPI NTSTATUS NtSetInformationToken(
[in] HANDLE TokenHandle,
[in] TOKEN_INFORMATION_CLASS TokenInformationClass,
[in] PVOID TokenInformation,
[in] ULONG TokenInformationLength
);
參數
[in] TokenHandle
要修改資訊的存取令牌句柄。
[in] TokenInformationClass
來自 TOKEN_INFORMATION_CLASS 列舉型別的值,識別要修改的信息類型。 此參數的可能值會列在 TokenInformation 參數描述中所顯示數據表的 TokenInformationClass Value 數據行中。
[in] TokenInformation
呼叫端提供的緩衝區指標,其中包含要在令牌中修改的資訊。 此緩衝區中信息的結構取決於 TokenInformationClass 的值,如下表所示。 所有結構都必須對齊 32 位界限。
TokenInformationClass 值 | 對 TokenInformation 緩衝區的影響 |
---|---|
TokenDefaultDacl | 緩衝區包含 TOKEN_DEFAULT_DACL 結構,指定新建立對象的預設 DACL 。 需要TOKEN_ADJUST_DEFAULT存取權才能設定這項資訊。 緩衝區內容不會驗證結構正確性或一致性。 |
TokenGroups | 不是有效的信息類別。 此資訊是唯讀的。 |
TokenOwner | 緩衝區包含 TOKEN_OWNER 結構,指定新建立對象的默認擁有者 SID 。 需要TOKEN_ADJUST_DEFAULT存取權才能設定這項資訊。 可指定的擁有者值會限制為使用者和群組標識符,其具有屬性,指出可以指派為對象的擁有者。 |
TokenPrimaryGroup | 緩衝區包含 TOKEN_PRIMARY_GROUP結構, 指定新建立對象的預設主要群組 SID 。 需要TOKEN_ADJUST_DEFAULT存取權才能設定這項資訊。 必須是令牌中已有的其中一個群組標識碼。 |
TokenPrivileges | 不是有效的信息類別。 此資訊是唯讀的。 |
TokenSource | 不是有效的信息類別。 此資訊是唯讀的。 |
TokenStatistics | 不是有效的信息類別。 此資訊是唯讀的。 |
TokenUser | 不是有效的信息類別。 此資訊是唯讀的。 |
[in] TokenInformationLength
在 TokenInformation 緩衝區中傳遞之結構的大小,以位元組為單位。 必須大於或等於下表中提供的最小值。
TokenInformationClass 值 | Minimum TokenInformationLength |
---|---|
TokenDefaultDacl | sizeof (TOKEN_DEFAULT_DACL) |
TokenOwner | sizeof (TOKEN_OWNER) |
TokenPrimaryGroup | sizeof (TOKEN_PRIMARY_GROUP) |
傳回值
NtSetInformationToken 會傳回STATUS_SUCCESS或適當的錯誤狀態。 可能的錯誤狀態代碼包括:
傳回碼 | Description |
---|---|
STATUS_ACCESS_DENIED | TokenHandle 沒有必要的存取權。 |
STATUS_ALLOTTED_SPACE_EXCEEDED | 用於儲存預設任意存取控制和主要群組識別子的空間不夠大,無法接受其中一個字段的新值。 |
STATUS_INFO_LENGTH_MISMATCH | TokenInformationLength 的值小於所需的最小值。 |
STATUS_INSUFFICIENT_RESOURCES | 無法擷取指定的預設擁有者安全性資訊。 |
STATUS_INVALID_HANDLE | TokenHandle 不是有效的句柄。 |
STATUS_INVALID_INFO_CLASS | TokenInformationClass 不是有效的令牌信息類別。 |
STATUS_INVALID_OWNER | 呼叫端無法將指定的標識碼設定為對象的擁有者 (或預設擁有者) 。 |
STATUS_INVALID_PRIMARY_GROUP | 呼叫端無法將指定的標識碼設定為物件的主要群組。 |
STATUS_INVALID_SID | 指定的預設擁有者安全性信息無效。 |
STATUS_OBJECT_TYPE_MISMATCH | TokenHandle 不是令牌句柄。 |
備註
如需安全性和訪問控制的詳細資訊,請參閱 適用於驅動程序開發人員的 Windows 安全性模型 ,以及 Windows SDK 中這些主題的相關文件。
注意
如果在核心模式中呼叫 NtSetInformationToken 函式,您應該使用名稱 “ZwSetInformationToken” 而不是 “NtSetInformationToken”。
針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxx 和 ZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxx 和 ZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 |
目標平台 | Universal |
標頭 | ntifs.h (包含 Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | HwStorPortProhibitedDDIs、PowerIrpDDis |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應