PsGetCurrentThreadTeb 函数 (ntddk.h)

PsGetCurrentThreadTeb 例程返回当前线程的线程环境块 (TEB) 或 NULL。 必须在内核模式下进行调用。

语法

PVOID PsGetCurrentThreadTeb();

返回值

指向当前线程的线程环境块的指针。 应在 try/catch 异常块中访问 TEB。

PsGetCurrentThreadTeb 在以下情况下返回 NULL:

  • 当前线程没有 TEB (例如系统线程) 。
  • 当前线程无法安全地访问自己的 TEB。 如果驱动程序将线程附加到另一个进程的地址空间(例如通过调用 KeStackAttachProcess),则可能会发生这种情况。

注解

虽然可以在任何 IRQL 上调用 PsGetCurrentThreadTeb 而不导致 bug 检查,但 TEB 在DISPATCH_LEVEL或更高版本访问并不安全, (它可能被分页) 。 此外,如果从中断或 DPC 的上下文中调用提升的 IRQL,则当前线程就是在当前处理器上传递中断时碰巧运行的任何线程。 因此,建议从DISPATCH_LEVEL下面的线程上下文调用 PsGetCurrentThreadTeb

要求

要求
最低受支持的客户端 在 Windows 7 和更高版本的 Windows 中可用。
目标平台 通用
标头 ntddk.h
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何级别 (请参阅备注)

另请参阅

进程和线程管理器例程