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