MINIPORT_SYNCHRONIZE_INTERRUPT función de devolución de llamada (ndis.h)
Un controlador de minipuerto debe proporcionar un controlador MiniportSynchronizeInterrupt si alguna función de controlador que se ejecuta en menos de DIRQL comparte recursos con la función MiniportInterrupt .
En el caso de las interrupciones señaladas por mensajes, el controlador de minipuerto proporciona un controlador MiniportSynchronizeMessageInterrupt si alguna función de controlador que se ejecuta en menos de DIRQL comparte recursos 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 miniportador MiniportXxx o la función interna del controlador de minipuerto llamó a . 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.
Comentarios
Para sincronizar el acceso a los 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. La llamada a NdisMSynchronizeWithInterruptEx impide las condiciones de carrera y los interbloqueos en un controlador de minipuerto.
Cualquier función de controlador de prioridad inferior que comparta recursos entre sí (pero no con ninguna función que se ejecute en DIRQL) debe 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 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 NdisXxx que son seguras para llamar en cualquier IRQL.
Ejemplos
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 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 MiniportSynchronizeInterrupt denominada "MySynchronizeInterrupt", use el tipo MINIPORT_SYNCHRONIZE_INTERRUPT 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 de 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 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 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, 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 | Consulte la sección Comentarios. |