Compartir a través de


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 distribución 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 distribución 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 el ajuste del indicador de nivel de despacho a partir del IRQL actual conocido, no probando el IRQL. Por ejemplo, conoce 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 el IRQL actual es desconocido 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 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 bandera. Si es necesario, la función llamada simplemente puede realizar las pruebas. El modo en que un controlador determina que debe o no establecer la marca se deja en el diseño del controlador específico.