Função NtOpenThreadToken (ntifs.h)
A rotina NtOpenThreadToken abre o token de acesso associado a um thread e retorna um identificador que pode ser usado para acessar esse token.
Sintaxe
__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenThreadToken(
[in] HANDLE ThreadHandle,
[in] ACCESS_MASK DesiredAccess,
[in] BOOLEAN OpenAsSelf,
[out] PHANDLE TokenHandle
);
Parâmetros
[in] ThreadHandle
Manipule para o thread cujo token de acesso deve ser aberto. O identificador deve ter acesso THREAD_QUERY_INFORMATION. Use a macro NtCurrentThread para especificar o thread atual.
[in] DesiredAccess
ACCESS_MASK estrutura que especifica os tipos solicitados de acesso 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 direitos de acesso são concedidos ou negados.
[in] OpenAsSelf
Valor booliano que especifica se o marcar de acesso deve ser feito no contexto de segurança do thread que chama NtOpenThreadToken ou no contexto de segurança do processo para o thread de chamada.
Se esse parâmetro for FALSE, o marcar de acesso será executado usando o contexto de segurança para o thread de chamada. Se o thread estiver representando um cliente, esse contexto de segurança poderá ser o de um processo do cliente. Se esse parâmetro for TRUE, o marcar de acesso será feito usando o contexto de segurança do processo para o thread de chamada.
[out] TokenHandle
Ponteiro para uma variável alocada pelo chamador que recebe um identificador para o token de acesso recém-aberto.
Retornar valor
NtOpenThreadToken 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 | |
O ThreadHandle não tinha acesso THREAD_QUERY_INFORMATION. | |
STATUS_CANT_OPEN_ANONYMOUS | O cliente solicitou o nível de representação SecurityAnonymous. No entanto, um token anônimo não pode ser aberto. Para obter mais informações, consulte SECURITY_IMPERSONATION_LEVEL. |
STATUS_INVALID_HANDLE | ThreadHandle não era um identificador válido. |
STATUS_NO_TOKEN | Foi feita uma tentativa de abrir um token associado a um thread que não representa um cliente no momento. |
STATUS_OBJECT_TYPE_MISMATCH | ThreadHandle não era um identificador de thread. |
Comentários
NtOpenThreadToken abre o token de acesso associado a um thread e retorna um identificador para esse token.
O parâmetro OpenAsSelf permite que um processo de servidor abra o token de acesso para um processo de cliente quando o processo do cliente tiver especificado o nível de representação SecurityIdentification para o tipo enumerado SECURITY_IMPERSONATION_LEVEL . Sem esse parâmetro, o processo de chamada não é capaz de abrir o token de acesso do cliente usando o contexto de segurança do cliente porque é impossível abrir objetos de nível executivo usando o nível de representação SecurityIdentification.
Qualquer identificador obtido chamando NtOpenThreadToken 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 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 XP |
Cabeçalho | ntifs.h |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de