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访问权限才能设置此信息。 可以指定的所有者值仅限于具有属性的用户和组 ID,指示可以将其分配为对象的所有者。 |
TokenPrimaryGroup | 缓冲区包含一个 TOKEN_PRIMARY_GROUP 结构,该结构指定新创建对象的默认主组 SID。 需要TOKEN_ADJUST_DEFAULT访问权限才能设置此信息。 必须是令牌中已有的组 ID 之一。 |
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或适当的错误状态。 可能的错误状态代码包括:
返回代码 | 描述 |
---|---|
STATUS_ACCESS_DENIED | TokenHandle 没有所需的访问权限。 |
STATUS_ALLOTTED_SPACE_EXCEEDED | 分配用于存储默认自由访问控制的空间和主组 ID 不够大,无法接受其中一个字段的新值。 |
STATUS_INFO_LENGTH_MISMATCH | TokenInformationLength 的值小于所需的最小值。 |
STATUS_INSUFFICIENT_RESOURCES | 无法捕获指定的默认所有者的安全信息。 |
STATUS_INVALID_HANDLE | TokenHandle 不是有效的句柄。 |
STATUS_INVALID_INFO_CLASS | TokenInformationClass 不是有效的令牌信息类。 |
STATUS_INVALID_OWNER | 调用方无法将指定的 ID 设置为对象的所有者(或默认所有者)。 |
STATUS_INVALID_PRIMARY_GROUP | 调用方无法将指定的 ID 设置为对象的主组。 |
STATUS_INVALID_SID | 指定的默认所有者的安全信息无效。 |
STATUS_OBJECT_TYPE_MISMATCH | TokenHandle 不是令牌句柄。 |
言论
有关安全和访问控制的详细信息,请参阅适用于驱动程序开发人员
注意
如果在用户模式下调用 ZwSetInformationToken 函数,则应使用名称 NtSetInformationToken“而不是”ZwSetInformationToken”。
对于内核模式驱动程序的调用,NtXxx 和 ZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxx 与 ZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 7 |
目标平台 | 普遍 |
标头 | ntifs.h (include Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | HwStorPortProhibitedDIS(storport),PowerIrpDDis(wdm) |