Partilhar via


Função NtOpenProcessToken (ntifs.h)

A rotina de 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 especificando os tipos de acesso solicitados ao token de acesso. Esses tipos de acesso solicitados são comparados com a lista de controle de acesso discricionário do token (DACL) para determinar quais acessos são concedidos ou negados.

[out] TokenHandle

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

Valor de retorno

NtOpenProcessToken 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 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 O identificador de token não pôde ser criado.

Observações

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 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
cabeçalho ntifs.h
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte também

ACCESS_MASK

de ACL

PsDereferencePrimaryToken

NtClose

NtOpenProcessTokenEx

NtOpenThreadTokenEx