Функция 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 |
См. также
PsDereferenceImpersonationToken
использование версий собственных системных служб и Zw