MINIPORT_SYNCHRONIZE_INTERRUPT función de devolución de llamada (ndis.h)
Un controlador de miniport debe proporcionar un controlador de MiniportSynchronizeInterrupt si alguna función de controlador que se ejecuta en menos de DIRQL comparte recursos con la función MiniportInterrupt.
Para las interrupciones señaladas de mensaje, el controlador de miniport proporciona un controlador MiniportSynchronizeMessageInterrupt si alguna función de controlador que se ejecuta con menos de recursos compartidos de DIRQL para una interrupción señalada de mensaje con la función MiniportMessageInterrupt.
Sintaxis
MINIPORT_SYNCHRONIZE_INTERRUPT MiniportSynchronizeInterrupt;
BOOLEAN MiniportSynchronizeInterrupt(
[in] NDIS_HANDLE SynchronizeContext
)
{...}
Parámetros
[in] SynchronizeContext
Identificador de un área de contexto que se proporciona cuando el controlador de miniporte MiniportXxx o función interna denominada función NdisMSynchronizeWithInterruptEx.
Valor devuelto
miniportSynchronizeInterrupt devuelve un valor booleano con un significado determinado por el controlador. NDIS devuelve el mismo valor cuando NDIS devuelve de NdisMSynchronizeWithInterruptEx.
Observaciones
Para sincronizar el acceso a recursos compartidos con MiniportInterrupt, las funciones de controlador de prioridad inferior deben llamar a función NdisMSynchronizeWithInterruptEx. La función MiniportSynchronizeInterrupt del controlador accede a los recursos compartidos en DIRQL. Llamar a NdisMSynchronizeWithInterruptEx impide las condiciones de carrera y los interbloqueos en este tipo de controlador de miniport.
Las funciones de controlador de menor prioridad que compartan recursos entre sí (pero no con ninguna función que se ejecute en DIRQL) deben usar un bloqueo de número para proteger esos recursos compartidos.
miniportSynchronizeInterrupt se ejecuta en el DIRQL asignado cuando la función MiniportInitializeEx del controlador llama a la función función NdisMRegisterInterruptEx. Al igual que cualquier función de controlador que se ejecuta en DIRQL, MiniportSynchronizeInterrupt debe devolver el control al autor de la llamada lo antes posible, y solo puede llamar a las funciones de Ndis Xxx que son seguras para llamar en cualquier IRQL.
Ejemplos de
Para definir una función MiniportSynchronizeInterrupt, primero debe proporcionar una declaración de función que identifique el tipo de función que va a definir. Windows proporciona un conjunto de tipos de función para controladores. Declarar una función mediante los tipos de función ayuda a análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.Por ejemplo, para definir una función MiniportSynchronizeInterrupt denominada "MySynchronizeInterrupt", use el tipo MINIPORT_SYNCHRONIZE_INTERRUPT tal como se muestra en este ejemplo de código:
MINIPORT_SYNCHRONIZE_INTERRUPT MySynchronizeInterrupt;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
BOOLEAN
MySynchronizeInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
Para definir una función MiniportSynchronizeMessageInterrupt para las interrupciones señaladas de mensaje, use el tipo MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT como se muestra en este ejemplo de código:
MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT MySynchronizeMessageInterrupt;
A continuación, implemente la función de la siguiente manera:
_Use_decl_annotations_
BOOLEAN
MySynchronizeMessageInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
Los tipos de función MINIPORT_SYNCHRONIZE_INTERRUPT y MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT se definen en el archivo de encabezado Ndis.h. Para identificar con mayor 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 las definiciones de función. La anotación Use_decl_annotations garantiza que se usen las anotaciones que se aplican al tipo de función del archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea 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, vea Anotación del comportamiento de la función.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Se admite en NDIS 6.0 y versiones posteriores. |
de la plataforma de destino de | Windows |
encabezado de | ndis.h (incluya Ndis.h) |
irQL | Consulte la sección Comentarios. |