ZwSetInformationToken 函式 (ntifs.h)

ZwSetInformationToken 例程會修改指定令牌中的資訊。 呼叫進程必須具有適當的訪問許可權,才能設定資訊。

語法

NTSYSAPI NTSTATUS ZwSetInformationToken(
  [in] HANDLE                  TokenHandle,
  [in] TOKEN_INFORMATION_CLASS TokenInformationClass,
  [in] PVOID                   TokenInformation,
  [in] ULONG                   TokenInformationLength
);

參數

[in] TokenHandle

要修改資訊的存取令牌句柄。

[in] TokenInformationClass

TOKEN_INFORMATION_CLASS 列舉型 別的值,識別要修改的信息類型。 此參數的可能值列在 TokenInformationClass Value 數據行中,如 TokenInformation 參數的描述所示。

[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)

傳回值

ZwSetInformationToken 會傳回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 中有關這些主題的檔。

注意

如果在使用者模式中呼叫 ZwSetInformationToken 函式,您應該使用名稱 NtSetInformationToken“,而不是 ”ZwSetInformationToken“。

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

規格需求

需求
最低支援的用戶端 Windows 7
目標平台 Universal
標頭 ntifs.h (包含 Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDIS (storport) PowerIrpDDis (wdm)

另請參閱

PsDereferenceImpersonationToken

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

SID

SeQueryAuthenticationIdToken

SeQuerySubjectContextToken

SeTokenIsAdmin

SeTokenIsRestricted

TOKEN_DEFAULT_DACL

TOKEN_GROUPS

TOKEN_INFORMATION_CLASS

TOKEN_OWNER

TOKEN_PRIMARY_GROUP

TOKEN_PRIVILEGES

TOKEN_SOURCE

TOKEN_STATISTICS

TOKEN_TYPE

TOKEN_USER

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

ZwQueryInformationToken