PsGetCurrentThreadTeb 函式 (ntddk.h)
PsGetCurrentThreadTeb 例程會傳回目前線程的線程環境區塊 (TEB), 或 NULL。 呼叫必須在內核模式中進行。
語法
PVOID PsGetCurrentThreadTeb();
傳回值
目前線程之線程環境區塊的指標。 TEB 應該在 try/catch 例外狀況區塊記憶體取。
PsGetCurrentThreadTeb 在下列情況下會傳回 NULL:
- 目前的線程沒有 TEB(例如系統線程)。
- 目前的線程無法安全地存取自己的 TEB。 如果驅動程式將線程附加至另一個進程的位址空間,例如呼叫 KeStackAttachProcess,就可能發生此情況。
言論
雖然 PsGetCurrentThreadTeb 可以在任何 IRQL 呼叫,而不會造成錯誤檢查,但 TEB 無法安全地在DISPATCH_LEVEL或更新版本存取(可能已分頁)。 此外,如果您要從中斷或 DPC 的內容呼叫提升許可權的 IRQL,則當中斷傳送到該處時,目前線程就是在目前處理器上執行的任何情況。 因此,建議您從 DISPATCH_LEVEL下列線程內容呼叫 psGetCurrentThreadTeb PsGetCurrentThreadTeb。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 和更新版本的 Windows。 |
目標平臺 | 普遍 |
標頭 | ntddk.h |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何層級 (請參閱備註) |