Operaciones de comprobación de bloqueo y restablecimiento del adaptador de miniporte

Información general

Advertencia

Las operaciones check-for-Hang (CFH) y Reset no se recomiendan para todos los controladores NDIS 6.83 y versiones posteriores. Para obtener más información, vea Operaciones de comprobación de bloqueo y restablecimiento en NDIS 6.83 y versiones posteriores.

NDIS llama a la función MiniportCheckForHangEx del controlador NDIS para comprobar el estado operativo de un adaptador NDIS que representa una tarjeta de interfaz de red (NIC). MiniportCheckForHangEx comprueba el estado interno del adaptador y devuelve TRUE si detecta que el adaptador no funciona correctamente.

De forma predeterminada, NDIS llama a MiniportCheckForHangEx aproximadamente cada 2 segundos. Si MiniportCheckForHangEx devuelve TRUE, NDIS llama a la función MiniportResetEx del controlador de miniporte NDIS. Si el valor de tiempo de espera predeterminado de 2 segundos es demasiado pequeño, el controlador de minipuerto puede establecer un valor diferente en el tiempo de inicialización como se indica a continuación:

  1. Establezca el miembro CheckForHangTimeInSeconds de la estructura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES en un valor distinto de cero.
  2. Pase la estructura NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES en el parámetro MiniportAttributes de la función NdisMSetMiniportAttributes .

Para obtener más información sobre cómo establecer atributos de controlador, consulte Inicialización de un adaptador. El valor de CheckForHangTimeInSeconds debe ser mayor que el tiempo de inicialización del controlador de minipuerto. Sin embargo, si el controlador tarda más que CheckForHangTimeInSeconds segundos en inicializarse, este tiempo de espera expira, lo que hace que NDIS llame a la función MiniportCheckForHangEx del controlador. Si MiniportCheckForHangEx devuelve TRUE, NDIS llamará a la función MiniportResetEx del controlador. Por este motivo, debes sincronizar la función MiniportCheckForHangEx del controlador con la inicialización del controlador para que MiniportCheckForHangEx no devuelva TRUE si el controlador no ha terminado de inicializarse.

Si el controlador de minipuerto no completa una solicitud de OID en dos llamadas sucesivas a MiniportCheckForHangEx, NDIS puede llamar a la función MiniportResetEx del controlador. Para algunas solicitudes de OID, NDIS llama a MiniportResetEx si el controlador no completa la solicitud en cuatro llamadas sucesivas a MiniportCheckForHangEx.

La operación de restablecimiento no afecta a los estados operativos del adaptador de miniporte. Además, el estado del adaptador puede cambiar mientras una operación de restablecimiento está en curso. Por ejemplo, NDIS podría llamar a la función MiniportPause 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 se siguen los requisitos normales de cada operación.

Para una operación de restablecimiento, el controlador puede producir un error en los paquetes de solicitud de transmisión 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.

Un controlador de minipuerto puede completar una solicitud de restablecimiento de forma sincrónica devolviendo un estado correcto o de error. El controlador puede completar una solicitud de restablecimiento de forma asincrónica devolviendo NDIS_STATUS_PENDING. En este caso, el controlador debe llamar a NdisMResetComplete para completar la operación.

Operaciones de comprobación de bloqueo y restablecimiento en NDIS 6.83 y versiones posteriores

En las versiones de NDIS anteriores a la 6.83, se desaconsejaban las operaciones Check-for-Hang (CFH) y Reset para los sistemas de Always On, Always Connected (AOAC) debido a problemas de duración de la batería. Sin embargo, los controladores todavía podían usar CFH en otros sistemas Windows que no son de AOAC mediante la implementación de las funciones opcionales de devolución de llamada MiniportCheckForHangEx y MiniportResetEx .

A partir de NDIS 6.83, no se recomienda usar todas las funciones de devolución de llamada en todos los sistemas Windows, independientemente de las funcionalidades de energía. Aunque no es una infracción de prueba de logotipo para usar CFH en NDIS 6.83 y versiones posteriores, los controladores NDIS deben usar la tabla siguiente para obtener instrucciones sobre su uso.

Autor de llamada Recomendación Notas
Controladores destinados a sistemas AOAC No debe implementar Causas de problemas de duración de la batería debido a una actividad periódica de comprobación de bloqueo
Controladores destinados a sistemas Windows Server No debe implementar Causa problemas cuando la CPU está estresada
Controladores de minipuerto virtuales (solo software) No debe implementar Restablecer no es posible sin hardware
Otros nuevos controladores NDIS 6.83 y versiones posteriores No debe implementar
Otro código NDIS 6.82 existente y anterior No es necesario cambiar, pero debe considerar la posibilidad de quitar Check-for-Hang y Reset en futuras reprocesos

Restablecimiento de hardware del controlador miniporte

Funciones de restablecimiento y detención del controlador de miniporte