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 |