Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cada función de controlador llamada por NDIS se ejecuta en un IRQL determinado por el sistema (uno de PASSIVE_LEVEL < DISPATCH_LEVEL < DIRQL). Por ejemplo, una función de inicialización del controlador de miniporte, una función de detención , una función de restablecimiento y una función de apagado se ejecutan normalmente en PASSIVE_LEVEL, aunque las funciones de restablecimiento y apagado se pueden invocar en un IRQL superior si el sistema lo requiere. El código de interrupción se ejecuta en DIRQL, por lo que un controlador intermedio o de protocolo NDIS nunca se ejecuta en DIRQL. Todas las demás funciones del controlador NDIS se ejecutan en IRQL = DISPATCH_LEVEL o inferior.
IrQL en el que se ejecuta una función de controlador afecta a las funciones NDIS a las que puede llamar. Solo se puede llamar a ciertas funciones en IRQL = PASSIVE_LEVEL. Se puede invocar a otros en el nivel DISPATCH o inferior. Debe comprobar cada función NDIS para verificar las restricciones de IRQL.
Cualquier función de controlador que comparta recursos con la rutina de servicio de interrupción del controlador (ISR) debe ser capaz de generar su IRQL a DIRQL para evitar las condiciones de carrera. NDIS proporciona este mecanismo.