Estados de enlace de un controlador de protocolo
Un controlador de protocolo NDIS debe admitir los siguientes estados operativos para cada enlace que administra el controlador:
Unbound
Apertura
En ejecución
Cierre
Pausando
En pausa
Reiniciar
En las ilustraciones siguientes se muestra la relación entre estos estados.
A continuación se definen los estados de enlace del controlador de protocolo:
El estado Unbound es el estado inicial de un enlace. En este estado, el controlador de protocolo espera a que NDIS llame a la función ProtocolBindAdapterEx . Después de que NDIS llame a ProtocolBindAdapterEx, el enlace entra en el estado De apertura. Una vez completada una operación de desenlace, un enlace vuelve al estado Unbound desde el estado Closing.
En el estado Apertura , un controlador de protocolo asigna recursos para el enlace e intenta abrir el adaptador de miniport. Después de que NDIS llame a la función ProtocolBindAdapterEx del controlador, el enlace entra en el estado De apertura. Si el controlador de protocolo no se puede enlazar al adaptador de minipuerto, el enlace vuelve al estado Unbound. Si el controlador se enlaza correctamente al adaptador de minipuerto, el enlace entra en estado Pausado.
En estado En ejecución , un controlador de protocolo realiza el procesamiento normal de envío y recepción de un enlace. Cuando el enlace está en estado reinicio y el controlador está listo para realizar operaciones de envío y recepción, el enlace entra en estado En ejecución.
En el estado Cierre , el controlador de protocolo cierra el enlace al adaptador de miniporte y, a continuación, libera los recursos del enlace. Después de que NDIS llame a la función ProtocolUnbindAdapterEx del controlador de protocolo, el enlace entra en el estado De cierre. Una vez que el controlador de protocolo completa las operaciones de desenlace, el enlace entra en el estado Unbound.
En el estado Pausa, un controlador de protocolo completa las operaciones necesarias para detener las operaciones de envío y recepción de un enlace. Cuando un enlace está en estado En ejecución y NDIS envía al controlador de protocolo una notificación de pausa de PnP, el enlace entra en estado de pausa. El controlador de protocolo debe esperar a que se complete toda su solicitud de envío pendiente. Un controlador de protocolo no puede producir un error en una operación de pausa. Una vez completada la operación de pausa, el enlace entra en estado Pausado.
En el estado Pausado , el controlador de protocolo no realiza operaciones de envío o recepción para un enlace. Cuando un enlace está en estado de pausa y se completa una operación de pausa, el enlace entra en estado Pausado. Cuando un enlace está en estado De apertura y una operación de apertura se completa correctamente, el enlace entra en estado Pausado. Si NDIS envía al controlador de protocolo una notificación de reinicio de PnP para el enlace, el enlace entra en el estado Reinicio. Si NDIS llama a la función ProtocolUnbindAdapterEx del controlador, el enlace entra en el estado De cierre.
En el estado Reinicio , un controlador de protocolo completa las operaciones necesarias para reiniciar las operaciones de envío y recepción de un enlace. Cuando un enlace está en estado Pausado y NDIS envía al controlador de protocolo una notificación de reinicio de PnP, el enlace entra en el estado Reinicio. Si se produce un error en el reinicio, el enlace vuelve al estado Pausado. Si el reinicio se realiza correctamente, el enlace entra en estado En ejecución.