Função NtOpenProcessToken (ntifs.h)

A rotina NtOpenProcessToken abre o token de acesso associado a um processo e retorna um identificador que pode ser usado para acessar esse token.

Sintaxe

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenProcessToken(
  [in]  HANDLE      ProcessHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [out] PHANDLE     TokenHandle
);

Parâmetros

[in] ProcessHandle

Manipule para o processo cujo token de acesso deve ser aberto. O identificador deve ter acesso PROCESS_QUERY_INFORMATION. Use a macro NtCurrentProcess , definida em Ntddk.h, para especificar o processo atual.

[in] DesiredAccess

ACCESS_MASK estrutura que especifica os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a DACL (lista de controle de acesso discricionário) do token para determinar quais acessos são concedidos ou negados.

[out] TokenHandle

Ponteiro para uma variável alocada pelo chamador que recebe um identificador para o token de acesso recém-aberto.

Retornar valor

NtOpenProcessToken retorna STATUS_SUCCESS ou um erro apropriado status. Possíveis códigos de status de erro incluem o seguinte:

Código de retorno Descrição
STATUS_ACCESS_DENIED ProcessHandle não tinha acesso PROCESS_QUERY_INFORMATION.
STATUS_INSUFFICIENT_RESOURCES Não foi possível alocar um novo identificador de token.
STATUS_INVALID_HANDLE ProcessHandle não era um identificador válido.
STATUS_OBJECT_TYPE_MISMATCH ProcessHandle não era um identificador de processo.
STATUS_PRIVILEGE_NOT_HELD O chamador não tem o privilégio (SeSecurityPrivilege) necessário para criar um identificador de token com o acesso especificado no parâmetro DesiredAccess .
STATUS_QUOTA_EXCEEDED A cota de memória do processo não é suficiente para alocar o identificador de token.
STATUS_UNSUCCESSFUL Não foi possível criar o identificador de token.

Comentários

Para especificar atributos para o identificador de token de acesso, use NtOpenProcessTokenEx .

O identificador pode ser acessado pelo processo em cujo contexto o driver está em execução.

Qualquer identificador obtido chamando NtOpenProcessToken deve eventualmente ser liberado chamando NtClose.

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.

Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services 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 Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
Cabeçalho ntifs.h
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Confira também

ACCESS_MASK

ACL

PsDereferencePrimaryToken

NtClose

NtOpenProcessTokenEx

NtOpenThreadTokenEx