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


Функция ZwQueryInformationToken (ntifs.h)

Программа ZwQueryInformationToken получает указанный тип сведений о маркере доступа. Вызывающий процесс должен иметь соответствующие права доступа для получения сведений.

Синтаксис

NTSYSAPI NTSTATUS ZwQueryInformationToken(
  [in]  HANDLE                  TokenHandle,
  [in]  TOKEN_INFORMATION_CLASS TokenInformationClass,
  [out] PVOID                   TokenInformation,
  [in]  ULONG                   TokenInformationLength,
  [out] PULONG                  ReturnLength
);

Параметры

[in] TokenHandle

Дескриптор маркера доступа, из которого требуется получить сведения. Если TokenInformationClass задано значение TokenSource, дескриптор должен иметь TOKEN_QUERY_SOURCE доступ. Для всех остальных значений TokenInformationClass дескриптор должен иметь TOKEN_QUERY доступ. Дополнительные сведения о правах доступа для объектов маркера доступа см. в разделе "Безопасность" документации по пакету SDK для Windows.

[in] TokenInformationClass

Значение из перечисленного типа TOKEN_INFORMATION_CLASS, определяющего тип извлекаемой информации. Возможные значения этого параметра перечислены в столбце TokenInformationClass Значение таблицы, показанной в описании параметра TokenInformation.

[out] TokenInformation

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

Значение TokenInformationClass Влияние на буфер TokenInformation
TokenDefaultDacl Буфер получает структуру TOKEN_DEFAULT_DACL, содержащую DACL по умолчанию для вновь созданных объектов.
TokenGroups Буфер получает TOKEN_GROUPS структуру, содержащую учетные записи группы, связанные с маркером.
TokenImpersonationLevel Буфер получает значение SECURITY_IMPERSONATION_LEVEL, указывающее уровень олицетворения маркера. Если маркер доступа не является маркером олицетворения, вызов ZwQueryInformationToken завершается ошибкой.
токена Буфер получает структуру TOKEN_OWNER, содержащую владельца по умолчанию sid для вновь созданных объектов.
TokenPrimaryGroup Буфер получает TOKEN_PRIMARY_GROUP структуру, содержащую идентификатор безопасности первичной группы по умолчанию для вновь созданных объектов.
TokenPrivileges Буфер получает TOKEN_PRIVILEGES структуру, содержащую привилегии маркера.
TokenSessionId Буфер получает 32-разрядное значение, указывающее идентификатор сеанса служб терминалов, связанный с маркером. Если маркер связан с сеансом консоли сервера терминала, идентификатор сеанса равен нулю. Идентификатор сеанса, отличный от нуля, указывает сеанс клиента служб терминалов. В среде служб, отличных от терминалов, идентификатор сеанса равен нулю.
tokenSource Буфер получает TOKEN_SOURCE структуру, содержащую источник маркера. для получения этих сведений требуется TOKEN_QUERY_SOURCE доступ.
TokenStatistics Буфер получает TOKEN_STATISTICS структуру, содержащую различные статистические данные маркеров.
TokenType Буфер получает значение TOKEN_TYPE, указывающее, является ли маркер основным или олицетворением.
TokenUser Буфер получает TOKEN_USER структуру, содержащую учетную запись пользователя маркера.

[in] TokenInformationLength

Длина в байтах выделенного вызывающим буфера TokenInformation.

[out] ReturnLength

Указатель на выделенную вызывающим переменную, которая получает фактическую длину в байтах информации, возвращаемой в буфере TokenInformation. Если одно из следующих условий имеет значение true, данные не возвращаются в буфере TokenInformation:

  • Размер запрошенной структуры сведений о токене превышает TokenInformationLength. В этом случае ReturnLength получает фактическое количество байтов, необходимых для хранения запрошенной информации.

  • Значение TokenInformationClass равно TokenDefaultDacl, и для маркера не установлено значение DACL по умолчанию. В этом случае ReturnLength получает ноль.

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

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

Возвращаемый код Описание
STATUS_ACCESS_DENIED TokenHandle не имели требуемого доступа.
STATUS_BUFFER_TOO_SMALL Размер запрошенной структуры сведений о токене превышает TokenInformationLength. Количество необходимых байтов возвращается в ReturnLength.
STATUS_INVALID_HANDLE TokenHandle не является допустимым дескриптором.
STATUS_INVALID_INFO_CLASS TokenInformationClass не является допустимым классом сведений о маркерах.
STATUS_OBJECT_TYPE_MISMATCH TokenHandle не был дескриптором маркера.

Замечания

Подпрограмма ZwQueryInformationToken может использоваться драйвером фильтра файловой системы или файловой системы для определения идентификатора безопасности вызывающего объекта, инициирующего запрос во время обработки IRP_MJ_CREATE. Если TokenUser указан для параметра TokenInformationClass, переданного ZwQueryInformationToken, структура TOKEN_USER возвращается в буфере, на который указывает параметр TokenInformation. Этот возвращенный буфер содержит структуру SID_AND_ATTRIBUTES с идентификатором безопасности пользователя.

Дополнительные сведения о безопасности и управлении доступом см. в модели безопасности Windows для разработчиков драйверов и документации по этим разделам в пакете SDK для Windows.

Заметка

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

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

Требования

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

См. также

ACL

IRP_MJ_CREATE

SECURITY_IMPERSONATION_LEVEL

sid

SID_AND_ATTRIBUTES

SeQueryInformationToken

TOKEN_DEFAULT_DACL

TOKEN_GROUPS

TOKEN_INFORMATION_CLASS

TOKEN_OWNER

TOKEN_PRIMARY_GROUP

TOKEN_PRIVILEGES

TOKEN_SOURCE

TOKEN_STATISTICS

TOKEN_TYPE

TOKEN_USER

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

ZwSetInformationToken