Поделиться через


Функция 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, определяющего тип измененной информации. Возможные значения этого параметра перечислены в столбце TokenInformationClass Значение таблицы, показанной в описании параметра TokenInformation.

[in] TokenInformation

Указатель на буфер, предоставленный вызывающей стороной, содержащий сведения, которые необходимо изменить в маркере. Структура информации в этом буфере зависит от значения TokenInformationClass, как показано в следующей таблице. Все структуры должны быть выровнены по 32-разрядной границе.

Значение TokenInformationClass Влияние на буфер TokenInformation
TokenDefaultDacl Буфер содержит структуру TOKEN_DEFAULT_DACL, указывающую DACL по умолчанию для вновь созданных объектов. для задания этих сведений требуется доступ TOKEN_ADJUST_DEFAULT. Содержимое буфера не проверяется для структурной правильности или согласованности.
TokenGroups Недопустимый класс сведений. Эта информация доступна только для чтения.
токена Буфер содержит структуру TOKEN_OWNER, указывающую владельца по умолчанию sid для вновь созданных объектов. для задания этих сведений требуется доступ TOKEN_ADJUST_DEFAULT. Значения владельца, которые могут быть указаны, ограничены идентификаторами пользователей и групп с атрибутом, указывающим, что они могут быть назначены владельцем объектов.
TokenPrimaryGroup Буфер содержит структуру TOKEN_PRIMARY_GROUP, указывающую основную группу по умолчанию идентификатор безопасности для вновь созданных объектов. для задания этих сведений требуется доступ TOKEN_ADJUST_DEFAULT. Должен быть одним из идентификаторов групп, уже имеющихся в маркере.
TokenPrivileges Недопустимый класс сведений. Эта информация доступна только для чтения.
tokenSource Недопустимый класс сведений. Эта информация доступна только для чтения.
TokenStatistics Недопустимый класс сведений. Эта информация доступна только для чтения.
TokenUser Недопустимый класс сведений. Эта информация доступна только для чтения.

[in] TokenInformationLength

Размер в байтах структуры, переданной в буфере TokenInformation. Должно быть больше или равно минимальному значению, заданному в следующей таблице.

Значение TokenInformationClass Минимальное значение TokenInformationLength
TokenDefaultDacl размер(TOKEN_DEFAULT_DACL)
токена sizeof(TOKEN_OWNER)
TokenPrimaryGroup размер(TOKEN_PRIMARY_GROUP)

Возвращаемое значение

NtSetInformationToken возвращает STATUS_SUCCESS или соответствующее состояние ошибки. Возможные коды состояния ошибок включают следующие:

Возвращаемый код Описание
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 для разработчиков драйверов и документации по этим разделам в пакете SDK для Windows.

Заметка

Если вызов функции NtSetInformationToken происходит в режиме ядра, следует использовать имя "ZwSetInformationToken" вместо "NtSetInformationToken".

Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 7
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDDIs, PowerIrpDDis

См. также

NtQueryInformationToken

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

использование версий собственных системных служб и Zw