Distribución del seguimiento de IRQL

Para mejorar el rendimiento del sistema, algunas funciones NDIS (por ejemplo, la función MiniportSendNetBufferLists ) incluyen una marca de nivel de distribución que indica el IRQL actual. El uso adecuado de la marca de nivel de envío puede ayudar a evitar intentos innecesarios de establecer irQL.

Hay otras marcas que controlan otros atributos, pero los nombres de las marcas de nivel de envío son:

NDIS_SEND_FLAGS_DISPATCH_LEVEL

NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

NDIS_RETURN_FLAGS_DISPATCH_LEVEL

NDIS_RWL_AT_DISPATCH_LEVEL

El autor de la llamada debe determinar la configuración de la marca de nivel de distribución del IRQL actual conocido, no mediante la prueba del IRQL. Por ejemplo, conoce el IRQL porque es una característica fija del diseño del controlador o el controlador guardó el IRQL actual.

Si el IRQL actual conocido es DISPATCH_LEVEL, el autor de la llamada debe establecer esta marca. Si se desconoce el IRQL actual o el autor de la llamada no se está ejecutando en DISPATCH_LEVEL, el autor de la llamada debe borrar esta marca. Si el autor de la llamada es NDIS, la función llamada debe probar esta marca para evitar cambiar el IRQL.

Los controladores no deben probar el IRQL para determinar el valor de la marca de nivel de distribución. Las pruebas derrotarían el propósito de la marca. Si es necesario, la función llamada simplemente puede realizar las pruebas. Cómo determina un controlador que debe o no establecer la marca se deja en el diseño del controlador determinado.