Função NtOpenThreadToken (ntifs.h)
A rotina de NtOpenThreadToken
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
[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 direitos de acesso são concedidos ou negados.
[in] OpenAsSelf
Valor booliano que especifica se a verificação de acesso deve ser feita no contexto de segurança da chamada de thread NtOpenThreadToken ou no contexto de segurança do processo para o thread de chamada.
Se esse parâmetro for FALSE, a verificação de acesso será executada usando o contexto de segurança do thread de chamada. Se o thread estiver representando um cliente, esse contexto de segurança poderá ser o de um processo de cliente. Se esse parâmetro for TRUE, a verificação de acesso será feita usando o contexto de segurança do processo para o thread de chamada.
[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
NtOpenThreadToken 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 | |
ThreadHandle não tinha acesso THREAD_QUERY_INFORMATION. | |
STATUS_CANT_OPEN_ANONYMOUS | O cliente solicitou o nível de representação SecurityAnonymous. No entanto, não é possível abrir um token anônimo. 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. |
Observações
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 especificar 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 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 |
---|---|
de cliente com suporte mínimo | Windows XP |
cabeçalho | ntifs.h |
biblioteca | NtosKrnl.lib |
de DLL |
NtosKrnl.exe |