Compartilhar via


Função ZwSetInformationToken (ntifs.h)

A rotina de 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 um token de acesso no qual as informações devem ser modificadas.

[in] TokenInformationClass

Um valor do tipo TOKEN_INFORMATION_CLASS enumerado que identifica o tipo de informação a ser modificada. Os valores possíveis para esse parâmetro são listados na coluna TokenInformationClass Value 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 de TokenInformationClass Efeito no buffer TokenInformation
TokenDefaultDacl O buffer contém uma estrutura TOKEN_DEFAULT_DACL especificando o 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 proprietário padrão sid 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 do usuário e do 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 grupo primário padrão SID 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.
do 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 de TokenInformationClass TokenInformationLength mínimo
TokenDefaultDacl sizeof(TOKEN_DEFAULT_DACL)
TokenOwner sizeof(TOKEN_OWNER)
TokenPrimaryGroup sizeof(TOKEN_PRIMARY_GROUP)

Valor de retorno

ZwSetInformationToken retorna STATUS_SUCCESS ou um status de erro apropriado. Os códigos de status de erro possíveis 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 foi 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.

Observações

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.

Nota

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 versões de uma rotina dos Serviços de 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 de serviços do sistema nativo.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 7
da Plataforma de Destino Universal
cabeçalho ntifs.h (inclua Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte também

PsDereferenceImpersonationToken

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

de 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