Función WdfInterruptSynchronize (wdfinterrupt.h)
[Se aplica a KMDF y UMDF]
El método WdfInterruptSynchronize ejecuta una función de devolución de llamada especificada en el DIRQL del dispositivo mientras mantiene el bloqueo de número de un objeto de interrupción.
En el caso de los objetos de interrupción de nivel pasivo, este método ejecuta una función de devolución de llamada especificada en el nivel pasivo mientras mantiene el bloqueo de interrupción de nivel pasivo de un objeto de interrupción.
Sintaxis
BOOLEAN WdfInterruptSynchronize(
[in] WDFINTERRUPT Interrupt,
[in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
[in] WDFCONTEXT Context
);
Parámetros
[in] Interrupt
Identificador de un objeto de interrupción de marco.
[in] Callback
Puntero a una función de devolución de llamada EvtInterruptSynchronize .
[in] Context
Puntero sin tipo a la información proporcionada por el controlador que el marco pasa a la función de devolución de llamada EvtInterruptSynchronize .
Valor devuelto
WdfInterruptSynchronize devuelve el valor de estado booleano que devuelve la función de devolución de llamada EvtInterruptSynchronize .
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Comentarios
Si desea que el controlador ejecute código que se debe ejecutar sin que se adelante y con el mantenimiento de interrupciones del dispositivo de forma eficaz, debe colocar ese código en una función de devolución de llamada EvtInterruptSynchronize . Para programar la ejecución de la función de devolución de llamada, el controlador debe llamar a WdfInterruptSynchronize.
El método WdfInterruptSynchronize devuelve una vez finalizada la ejecución de la función de devolución de llamada EvtInterruptSynchronize .
En lugar de llamar a WdfInterruptSynchronize, el controlador puede llamar a WdfInterruptAcquireLock y WdfInterruptReleaseLock.
Para obtener más información sobre el método WdfInterruptSynchronize , vea Sincronizar código de interrupción.
Para obtener más información sobre el control de interrupciones en controladores basados en marcos, consulte Control de interrupciones de hardware.
Para las interrupciones de nivel pasivo, el controlador debe llamar a WdfInterruptSynchronize en IRQL = PASSIVE_LEVEL.
No llame a WdfInterruptSynchronize desde un contexto de subproceso arbitrario, como un controlador de solicitudes.
Ejemplos
En el ejemplo de código siguiente se muestra cómo llamar a WdfInterruptSynchronize para programar la ejecución de una función de devolución de llamada EvtInterruptSynchronize .
BOOLEAN synchronizeReturnValue;
synchronizeReturnValue = WdfInterruptSynchronize(
WdfInterrupt,
MyEvtInterruptSynchronize,
CallbackContext
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfinterrupt.h (incluir Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |