Compartir a través de


MINIPORT_CHECK_FOR_HANG función de devolución de llamada (ndis.h)

Advertencia

Las funciones de devolución de llamada MiniportCheckForHangEx y MiniportResetEx no son recomendables 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 de miniporte para comprobar el estado operativo del adaptador de minipuerto que representa una tarjeta de interfaz de red (NIC).

Nota Un controlador de minipuerto puede declarar esta función mediante el tipo MINIPORT_CHECK_FOR_HANG .
 
Nota A partir de NDIS 6.30, esta función no debe estar registrada para los controladores que se ejecutan en plataformas SoC de bajo consumo para evitar un impacto negativo en la energía causada por la actividad periódica Check-for-Hang .
 

Sintaxis

MINIPORT_CHECK_FOR_HANG MiniportCheckForHang;

BOOLEAN MiniportCheckForHang(
  [in] NDIS_HANDLE MiniportAdapterContext
)
{...}

Parámetros

[in] MiniportAdapterContext

Identificador de un área de contexto que el controlador de minipuerto asignó en su función MiniportInitializeEx . El controlador de minipuerto usa este área de contexto para mantener la información de estado de un adaptador de minipuerto.

Valor devuelto

MiniportCheckForHangEx devuelve TRUE si el controlador determina que una NIC no funciona y NDIS debe llamar a la función MiniportResetEx del controlador. Para obtener más información, vea la sección Comentarios.

Comentarios

Un controlador de minipuerto especifica el punto de entrada MiniportCheckForHangEx cuando llama al Función NdisMRegisterMiniportDriver .

MiniportCheckForHangEx no es necesario para controladores intermedios.

MiniportCheckForHangEx no hace nada más que comprobar el estado interno de la NIC y devolver TRUE si detecta que la NIC no funciona correctamente.

De forma predeterminada, NDIS llama a MiniportCheckForHangEx aproximadamente cada dos segundos. Por este motivo, la función MiniportCheckForHangEx del controlador miniport debe devolver lo más rápido posible.

Nota A partir de NDIS 6.30, se usa un temporizador fusionable con alta tolerancia para medir intervalos entre llamadas a MiniportCheckForHangEx. Por lo tanto, esta rutina no se debe usar para ninguna operación que tenga en cuenta la hora.
 
Si MiniportCheckForHangEx devuelve TRUE, NDIS llama a la función MiniportResetEx del controlador de miniport.

Si un 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. Sin embargo, para evitar restablecimientos innecesarios, la función MiniportInitializeEx del controlador puede ampliar el intervalo de tiempo de espera de comprobación de bloqueo estableciendo un valor CheckForHangTimeInSeconds adecuado cuando llama al Función NdisMSetMiniportAttributes .

Para obtener más información sobre cómo establecer el valor de tiempo de espera checkForHangTimeInSeconds , vea Miniport Adapter Check-for-Hang and Reset Operations.

Nota A partir de NDIS 6.30, MiniportCheckForHangEx debe devolver TRUE si el controlador de miniporte detecta que la NIC no ha completado una solicitud de envío pendiente antes de que expire un período de tiempo de espera. El período de tiempo de espera es específico del controlador, pero se recomienda usar un período de tiempo de espera de 2 segundos.
 
MiniportCheckForHangEx puede ser reemplazado por una interrupción.

NDIS llama a MiniportCheckForHangEx en IRQL = PASSIVE_LEVEL.

Ejemplos

Para definir una función MiniportCheckForHangEx , primero debe proporcionar una declaración de función que identifique el tipo de función que está definiendo. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a Code Analysis for Drivers, Static Driver Verifier (SDV) y otras herramientas de comprobación a encontrar errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir una función MiniportCheckForHangEx denominada "MyCheckForHangEx", use el tipo de MINIPORT_CHECK_FOR_HANG como se muestra en este ejemplo de código:

MINIPORT_CHECK_FOR_HANG MyCheckForHangEx;

A continuación, implemente la función de la siguiente manera:

_Use_decl_annotations_
BOOLEAN
 MyCheckForHangEx(
    NDIS_HANDLE  MiniportAdapterContext
    )
  {...}

El tipo de función MINIPORT_CHECK_FOR_HANG se define en el archivo de encabezado Ndis.h. Para identificar con más precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación Use_decl_annotations a la definición de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función MINIPORT_CHECK_FOR_HANG en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante el uso de tipos de roles de función para controladores NDIS.

Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Cliente mínimo compatible Se admite en NDIS 6.0 y versiones posteriores.
Plataforma de destino Windows
Encabezado ndis.h (incluya Ndis.h)
IRQL PASSIVE_LEVEL

Consulte también

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

MiniportInitializeEx

MiniportResetEx

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes