Função ZwSetInformationToken (ntifs.h)

A rotina ZwSetInformationToken modifica informações em um token especificado. O processo de chamada deve ter direitos de acesso apropriados para definir as informações.

Sintaxe

NTSYSAPI NTSTATUS ZwSetInformationToken(
  [in] HANDLE                  TokenHandle,
  [in] TOKEN_INFORMATION_CLASS TokenInformationClass,
  [in] PVOID                   TokenInformation,
  [in] ULONG                   TokenInformationLength
);

Parâmetros

[in] TokenHandle

Manipule para um token de acesso no qual as informações devem ser modificadas.

[in] TokenInformationClass

Um valor do TOKEN_INFORMATION_CLASS tipo enumerado que identifica o tipo de informação a ser modificado. 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 .

[in] TokenInformation

Ponteiro para um buffer fornecido pelo chamador que contém as informações a serem modificadas no token. A estrutura das informações 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 contém uma estrutura TOKEN_DEFAULT_DACL especificando a DACL padrão para objetos recém-criados. TOKEN_ADJUST_DEFAULT acesso é necessário para definir essas informações. O conteúdo do buffer não é validado para correção ou consistência estrutural.
TokenGroups Não é uma classe de informações válida. Essas informações são somente leitura.
TokenOwner O buffer contém uma estrutura TOKEN_OWNER especificando o SID de proprietário padrão para objetos recém-criados. TOKEN_ADJUST_DEFAULT acesso é necessário para definir essas informações. Os valores de proprietário que podem ser especificados são restritos às IDs de usuário e grupo com um atributo que indica que eles podem ser atribuídos como o proprietário dos objetos.
TokenPrimaryGroup O buffer contém uma estrutura TOKEN_PRIMARY_GROUP especificando o SID do grupo primário padrão para objetos recém-criados. TOKEN_ADJUST_DEFAULT acesso é necessário para definir essas informações. Deve ser uma das IDs de grupo que já estão no token.
TokenPrivileges Não é uma classe de informações válida. Essas informações são somente leitura.
TokenSource Não é uma classe de informações válida. Essas informações são somente leitura.
TokenStatistics Não é uma classe de informações válida. Essas informações são somente leitura.
TokenUser Não é uma classe de informações válida. Essas informações são somente leitura.

[in] TokenInformationLength

Tamanho, em bytes, da estrutura passada no buffer TokenInformation . Deve ser maior ou igual ao valor mínimo fornecido na tabela a seguir.

Valor tokenInformationClass Token MinimumInformationLength
TokenDefaultDacl sizeof(TOKEN_DEFAULT_DACL)
TokenOwner sizeof(TOKEN_OWNER)
TokenPrimaryGroup sizeof(TOKEN_PRIMARY_GROUP)

Retornar valor

ZwSetInformationToken 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_ALLOTTED_SPACE_EXCEEDED O espaço alocado para armazenamento do controle de acesso discricionário padrão e da ID do grupo primário não é grande o suficiente para aceitar o novo valor de um desses campos.
STATUS_INFO_LENGTH_MISMATCH O valor de TokenInformationLength era menor que o mínimo necessário.
STATUS_INSUFFICIENT_RESOURCES As informações de segurança do proprietário padrão especificadas não puderam ser capturadas.
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_INVALID_OWNER O chamador não pode definir a ID especificada como um proprietário (ou proprietário padrão) de um objeto.
STATUS_INVALID_PRIMARY_GROUP O chamador não pode definir a ID especificada como o grupo primário de um objeto.
STATUS_INVALID_SID As informações de segurança do proprietário padrão especificadas não eram válidas.
STATUS_OBJECT_TYPE_MISMATCH TokenHandle não era um identificador de token.

Comentários

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 ZwSetInformationToken ocorrer no modo de usuário, você deverá usar o nome NtSetInformationToken" em vez de "ZwSetInformationToken".

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 7
Plataforma de Destino Universal
Cabeçalho ntifs.h (inclua Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Confira também

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

Usando versões Nt e Zw das rotinas de serviços do sistema nativo

ZwQueryInformationToken