Função PsGetCurrentThreadTeb (ntddk.h)

A rotina PsGetCurrentThreadTeb retorna o TEB (Thread Environment Block) do thread atual ou NULL. A chamada deve ser feita no modo kernel.

Sintaxe

PVOID PsGetCurrentThreadTeb();

Retornar valor

Um ponteiro para o bloco de ambiente de thread do thread atual. O TEB deve ser acessado em um bloco de exceção try/catch.

PsGetCurrentThreadTeb retorna NULL nos seguintes casos:

  • O thread atual não tem um TEB (por exemplo, um thread do sistema).
  • O thread atual não pode acessar com segurança seu próprio TEB. Isso pode acontecer se o driver anexou o thread ao espaço de endereço de outro processo, por exemplo, chamando KeStackAttachProcess.

Comentários

Embora PsGetCurrentThreadTeb possa ser chamado em qualquer IRQL sem causar uma verificação de bugs, o TEB não é seguro para acessar em DISPATCH_LEVEL ou superior (ele pode ser paginado). Além disso, se você estiver chamando em IRQL elevado do contexto de uma interrupção ou DPC, o thread atual será o que aconteceu ao ser executado no processador atual quando a interrupção foi entregue lá. Como resultado, é recomendável que você chame PsGetCurrentThreadTeb do contexto de thread abaixo DISPATCH_LEVEL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows 7 e versões posteriores do Windows.
Plataforma de Destino Universal
Cabeçalho ntddk.h
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível (consulte Comentários)

Confira também

Rotinas do Gerenciador de Processos e Threads