Функция PsGetCurrentThreadTeb (ntddk.h)

Подпрограмма PsGetCurrentThreadTeb возвращает блок среды потока (TEB) текущего потока или значение NULL. Вызов должен выполняться в режиме ядра.

Синтаксис

PVOID PsGetCurrentThreadTeb();

Возвращаемое значение

Указатель на блок среды потока текущего потока. Доступ к TEB должен осуществляться в блоке исключений try/catch.

PsGetCurrentThreadTeb возвращает значение NULL в следующих случаях:

  • Текущий поток не имеет TEB (например, системный поток).
  • Текущий поток не может получить безопасный доступ к собственному TEB. Это может произойти, если драйвер подключил поток к адресному пространству другого процесса, например путем вызова KeStackAttachProcess.

Комментарии

Хотя PsGetCurrentThreadTeb можно вызывать в любом irQL без проверки ошибок, TEB не является безопасным для доступа на DISPATCH_LEVEL или выше (его можно выгружать). Кроме того, если вы вызываете irQL с повышенными привилегиями из контекста прерывания или DPC, текущий поток — это то, что выполнялось на текущем процессоре, когда прерывание было доставлено туда. Поэтому рекомендуется вызывать PsGetCurrentThreadTeb из контекста потока ниже DISPATCH_LEVEL.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 7 и более поздних версиях Windows.
Целевая платформа Универсальное
Верхняя часть ntddk.h
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Любой уровень (см. примечания)

См. также раздел

Подпрограммы диспетчера процессов и потоков