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
Usando versões Nt e Zw das rotinas de serviços do sistema nativo