Função ZwQueryInformationToken (ntifs.h)
A rotina ZwQueryInformationToken recupera um tipo especificado de informações sobre um token de acesso. O processo de chamada deve ter direitos de acesso apropriados para obter as informações.
Sintaxe
NTSYSAPI NTSTATUS ZwQueryInformationToken(
[in] HANDLE TokenHandle,
[in] TOKEN_INFORMATION_CLASS TokenInformationClass,
[out] PVOID TokenInformation,
[in] ULONG TokenInformationLength,
[out] PULONG ReturnLength
);
Parâmetros
[in] TokenHandle
Manipule para um token de acesso do qual as informações devem ser recuperadas. Se TokenInformationClass estiver definido como TokenSource, o identificador deverá ter acesso TOKEN_QUERY_SOURCE. Para todos os outros valores TokenInformationClass , o identificador deve ter acesso TOKEN_QUERY. Para obter mais informações sobre direitos de acesso para objetos de token de acesso, consulte a seção Segurança da documentação do SDK do Windows.
[in] TokenInformationClass
Um valor do TOKEN_INFORMATION_CLASS tipo enumerado que identifica o tipo de informação a ser recuperado. Os valores possíveis para esse parâmetro são listados na coluna Valor TokenInformationClass da tabela mostrada na descrição do parâmetro TokenInformation .
[out] TokenInformation
Ponteiro para um buffer alocado pelo chamador que recebe as informações solicitadas sobre o token. A estrutura colocada nesse buffer depende do valor de TokenInformationClass, conforme mostrado na tabela a seguir. Todas as estruturas devem ser alinhadas em um limite de 32 bits.
Valor tokenInformationClass | Efeito no buffer TokenInformation |
---|---|
TokenDefaultDacl | O buffer recebe uma estrutura TOKEN_DEFAULT_DACL que contém a DACL padrão para objetos recém-criados. |
TokenGroups | O buffer recebe uma estrutura TOKEN_GROUPS que contém as contas de grupo associadas ao token. |
TokenImpersonationLevel | O buffer recebe um valor SECURITY_IMPERSONATION_LEVEL indicando o nível de representação do token. Se o token de acesso não for um token de representação, a chamada para ZwQueryInformationToken falhará. |
TokenOwner | O buffer recebe uma estrutura TOKEN_OWNER que contém o SID de proprietário padrão para objetos recém-criados. |
TokenPrimaryGroup | O buffer recebe uma estrutura TOKEN_PRIMARY_GROUP que contém o SID do grupo primário padrão para objetos recém-criados. |
TokenPrivileges | O buffer recebe uma estrutura TOKEN_PRIVILEGES que contém os privilégios do token. |
TokenSessionId | O buffer recebe um valor de 32 bits especificando o identificador de sessão dos Serviços de Terminal associado ao token. Se o token estiver associado à sessão de console do Terminal Server, o identificador de sessão será zero. Um identificador de sessão diferente de zero indica uma sessão de cliente dos Serviços de Terminal. Em um ambiente de Serviços não Terminais, o identificador de sessão é zero. |
TokenSource | O buffer recebe uma estrutura TOKEN_SOURCE que contém a origem do token. TOKEN_QUERY_SOURCE acesso é necessário para recuperar essas informações. |
TokenStatistics | O buffer recebe uma estrutura TOKEN_STATISTICS que contém várias estatísticas de token. |
Tokentype | O buffer recebe um valor TOKEN_TYPE indicando se o token é um token primário ou de representação. |
TokenUser | O buffer recebe uma estrutura TOKEN_USER que contém a conta de usuário do token. |
[in] TokenInformationLength
Comprimento, em bytes, do buffer TokenInformation alocado pelo chamador.
[out] ReturnLength
Ponteiro para uma variável alocada pelo chamador que recebe o comprimento real, em bytes, das informações retornadas no buffer TokenInformation . Se uma das seguintes condições for verdadeira, nenhum dado será retornado no buffer TokenInformation :
O tamanho da estrutura de informações de token solicitada é maior que TokenInformationLength. Nesse caso, ReturnLength recebe o número real de bytes necessários para armazenar as informações solicitadas.
O valor de TokenInformationClass é TokenDefaultDacl e não há nenhum DACL padrão estabelecido para o token. Nesse caso, ReturnLength recebe zero.
Retornar valor
ZwQueryInformationToken retorna STATUS_SUCCESS ou um erro apropriado status. Os possíveis códigos de status de erro incluem o seguinte:
Código de retorno | Descrição |
---|---|
STATUS_ACCESS_DENIED | TokenHandle não tinha o acesso necessário. |
STATUS_BUFFER_TOO_SMALL | O tamanho da estrutura de informações de token solicitada é maior que TokenInformationLength. O número de bytes necessários é retornado em ReturnLength. |
STATUS_INVALID_HANDLE | TokenHandle não era um identificador válido. |
STATUS_INVALID_INFO_CLASS | TokenInformationClass não era uma classe de informações de token válida. |
STATUS_OBJECT_TYPE_MISMATCH | TokenHandle não era um identificador de token. |
Comentários
A rotina ZwQueryInformationToken pode ser usada por um sistema de arquivos ou driver de filtro do sistema de arquivos para determinar o SID do chamador que iniciou a solicitação durante IRP_MJ_CREATE processamento. Se TokenUser for especificado para o parâmetro TokenInformationClass passado para ZwQueryInformationToken, uma estrutura de TOKEN_USER será retornada no buffer apontado pelo parâmetro TokenInformation . Esse buffer retornado contém uma estrutura SID_AND_ATTRIBUTES com o SID do usuário.
Para obter mais informações sobre segurança e controle de acesso, consulte Modelo de segurança do Windows para desenvolvedores de driver e a documentação sobre esses tópicos no SDK do Windows.
Observação
Se a chamada para a função ZwQueryInformationToken ocorrer no modo de usuário, você deverá usar o nome "NtQueryInformationToken" em vez de "ZwQueryInformationToken".
Para chamadas de drivers no modo kernel, as versões NtXxx e ZwXxx de uma rotina dos Serviços do Sistema Nativo do Windows podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP |
Plataforma de Destino | Universal |
Cabeçalho | ntifs.h (inclua Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |
Confira também
Usando versões Nt e Zw das rotinas dos Serviços de Sistema Nativo