Función PsGetCurrentThreadTeb (ntddk.h)
La rutina PsGetCurrentThreadTeb devuelve el bloque de entorno de subproceso (TEB) del subproceso actual o NULL. La llamada debe realizarse en modo kernel.
Sintaxis
PVOID PsGetCurrentThreadTeb();
Valor devuelto
Puntero al bloque de entorno de subproceso del subproceso actual. Se debe acceder al TEB dentro de un bloque de excepción try/catch.
PsGetCurrentThreadTeb devuelve NULL en los casos siguientes:
- El subproceso actual no tiene un TEB (por ejemplo, un subproceso del sistema).
- El subproceso actual no puede acceder de forma segura a su propio TEB. Esto puede ocurrir si el controlador adjuntó el subproceso al espacio de direcciones de otro proceso, por ejemplo llamando a KeStackAttachProcess.
Comentarios
Aunque se puede llamar a PsGetCurrentThreadTeb en cualquier IRQL sin provocar una comprobación de errores, el TEB no es seguro acceder a DISPATCH_LEVEL o superior (se podría paginar). Además, si va a llamar a IRQL con privilegios elevados desde el contexto de una interrupción o DPC, el subproceso actual es lo que haya ocurrido para ejecutarse en el procesador actual cuando se entregó la interrupción allí. Como resultado, se recomienda llamar a PsGetCurrentThreadTeb desde el contexto del subproceso siguiente DISPATCH_LEVEL.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows 7 y versiones posteriores de Windows. |
Plataforma de destino | Universal |
Encabezado | ntddk.h |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | Cualquier nivel (vea comentarios) |