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) |