Estados del adaptador de un controlador miniport
Para cada adaptador de miniporte que administra, un controlador de miniporte NDIS debe admitir el siguiente conjunto de estados operativos:
Detenido
Apagar
Inicializando
En pausa
Reiniciar
En ejecución
Pausando
En la ilustración siguiente se muestran las interrelaciones entre estos estados.
Nota La operación de restablecimiento no afecta a los estados operativos del adaptador de minipuerto. Además, el estado del adaptador puede cambiar mientras una operación de restablecimiento está en curso. Por ejemplo, NDIS podría llamar al controlador de pausa de un controlador cuando hay una operación de restablecimiento en curso. En este caso, el controlador puede completar el restablecimiento o la operación de pausa en cualquier orden mientras sigue los requisitos normales de cada operación. Para una operación de restablecimiento, el controlador puede producir un error al transmitir paquetes de solicitud o puede mantenerlos en cola y completarlos más adelante. Sin embargo, debe tener en cuenta que un controlador de exceso no puede completar una operación de pausa mientras sus paquetes de transmisión están pendientes.
A continuación se definen los estados del adaptador:
Detenido es el estado inicial de todos los adaptadores de minipuerto. Cuando un adaptador de minipuerto está en estado Detenido y NDIS llama a la función MiniportInitializeEx del controlador para inicializar el adaptador de minipuerto, el adaptador de minipuerto entra en el estado Inicialización. Si se produce un error en MiniportInitializeEx , el adaptador de minipuerto vuelve al estado Detenido. Cuando el adaptador de minipuerto está en estado Pausado y NDIS llama a la función MiniportHaltEx , el adaptador de minipuerto vuelve al estado Detenido.
No se puede usar un adaptador de miniporte en estado shutdown hasta que el sistema se apague y reinicie. Cuando el adaptador de minipuerto está en estado Pausado, Reinicio, En ejecución o Pausa y NDIS llama a la función MiniportShutdownEx del controlador de miniport, el adaptador de miniport entra en el estado Apagado.
En el estado Inicialización , un controlador de minipuerto completa las operaciones necesarias para inicializar un adaptador de minipuerto. Cuando un adaptador de minipuerto está en estado Detenido y el NDIS llama a la función MiniportInitializeEx del controlador de miniporte, el adaptador de minipuerto entra en el estado Inicialización. Si MiniportInitializeEx se realiza correctamente, el adaptador de minipuerto entra en estado Pausado. Si se produce un error en MiniportInitializeEx , el adaptador de minipuerto vuelve al estado Detenido.
Cuando un adaptador de minipuerto está en estado Pausado , un controlador de minipuerto no indica datos de red recibidos ni acepta solicitudes de envío. Cuando un adaptador de minipuerto está en estado de pausa y se completa la operación de pausa, el adaptador de minipuerto entra en estado Pausado. Cuando un adaptador de minipuerto está en estado Inicialización y MiniportInitializeEx se realiza correctamente, el adaptador de miniporte entra en estado Pausado. Cuando NDIS llama a la función MiniportRestart del controlador de miniport, el adaptador de minipuerto pasa del estado Pausado al estado De reinicio. Cuando NDIS llama a la función MiniportHaltEx del controlador de miniporte, el adaptador de miniporta pasa del estado Pausado al estado Detenido.
En el estado Reinicio , un controlador de minipuerto completa las operaciones necesarias para reiniciar las operaciones de envío y recepción de un adaptador de minipuerto. Cuando un adaptador de minipuerto está en estado Pausado y NDIS llama a la función MiniportRestart del controlador, el adaptador de minipuerto entra en el estado Reinicio. Si se produce un error en el reinicio, el adaptador de miniporte vuelve al estado Pausado. Si el reinicio es correcto, el adaptador de minipuerto entra en estado En ejecución.
En estado En ejecución , un controlador de minipuerto realiza el envío normal y el procesamiento de recepción para un adaptador de minipuerto. Cuando el adaptador de minipuerto está en estado de reinicio y el controlador está listo para realizar operaciones de envío y recepción, el adaptador de miniporte entra en estado En ejecución.
En el estado Pausa , un controlador de minipuerto completa las operaciones necesarias para detener las operaciones de envío y recepción de un adaptador de minipuerto. El controlador debe esperar a que NDIS devuelva todas las indicaciones de recepción pendientes. Cuando un adaptador de miniporte está en estado En ejecución y NDIS llama a la función MiniportPause del controlador, el adaptador de minipuerto entra en estado de pausa. Un controlador de minipuerto no puede producir un error en una operación de pausa. Una vez completada la operación de pausa, el adaptador de minipuerto entra en estado Pausado.