Detección de código que puede ser paginable
Para detectar código que se ejecuta en IRQL >= DISPATCH_LEVEL, use la macro PAGED_CODE . En el modo de depuración, esta macro genera un mensaje si el código se ejecuta en IRQL >= DISPATCH_LEVEL. Agregue la macro como primera instrucción de una rutina para marcar toda la rutina como código paginado, como se muestra en el ejemplo siguiente:
NTSTATUS
MyDriverXxx(
IN OUT PVOID ParseContext OPTIONAL,
OUT PHANDLE Handle
)
{
NTSTATUS Status;
PAGED_CODE();
.
.
.
}
Para asegurarse de que está haciendo esto correctamente, ejecute el Comprobador de controladores en el controlador terminado con la opción Forzar comprobación de IRQL habilitada. Esta opción hace que el sistema muestre automáticamente todo el código paginable cada vez que el controlador genere IRQL para DISPATCH_LEVEL o superior. Con el Comprobador de controladores, puede encontrar rápidamente cualquier error de controlador en esta área. De lo contrario, estos errores normalmente solo los encontrarán los clientes y con frecuencia pueden ser muy difíciles de reproducir.