Функция 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 | Любой уровень (см. примечания) |