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 |