Función KeSynchronizeExecution (wdm.h)
La rutina KeSynchronizeExecution sincroniza la ejecución de la rutina especificada con la rutina de servicio de interrupción (ISR) asignada a un conjunto de uno o varios objetos de interrupción.
Sintaxis
BOOLEAN KeSynchronizeExecution(
[in, out] PKINTERRUPT Interrupt,
[in] PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
[in, optional] __drv_aliasesMem PVOID SynchronizeContext
);
Parámetros
[in, out] Interrupt
Puntero a un conjunto de objetos de interrupción. El autor de la llamada obtuvo este puntero de la rutina IoConnectInterrupt o IoConnectInterruptEx.
[in] SynchronizeRoutine
Especifica una rutina de SynchCritSection proporcionada por el autor de la llamada cuya ejecución se va a sincronizar con la ejecución del ISR asignado a los objetos de interrupción.
[in, optional] SynchronizeContext
Puntero a un valor de contexto proporcionado por el autor de la llamada que se va a pasar a la SynchCritSection rutina cuando se llama a .
Valor devuelto
KeSynchronizeExecution devuelve TRUE si la operación se realiza correctamente. De lo contrario, devuelve FALSE.
Observaciones
Cuando se llama a esta rutina, se produce lo siguiente:
- IrQL se genera en el valor de SynchronizeIrql especificado en la llamada a IoConnectInterrupt o IoConnectInterruptEx.
- El acceso a SynchronizeContext se sincroniza con el ISR asignado mediante la adquisición del bloqueo de número de objetos de interrupción asociado (o objeto de evento del sistema, en el caso de un ISR que se ejecuta en PASSIVE_LEVEL).
- Se llama a la rutina SynchCritSe ction especificada con el valor de SynchronizeContext como parámetro.
Los autores de llamadas de KeSynchronizeExecution deben ejecutarse en IRQL <= DIRQL; es decir, en un IRQL que es menor o igual que el valor del SynchronizeIrql que el autor de la llamada especificó cuando registró su ISR con IoConnectInterrupt o IoConnectInterruptEx.
A partir de Windows 8, un controlador puede llamar a KeSynchronizeExecution para sincronizar la ejecución de una rutina de SynchCritSection con un ISR que se ejecuta en IRQL = PASSIVE_LEVEL. En versiones anteriores de Windows, keSynchronizeExecution solo puede sincronizar la ejecución con un ISR que se ejecuta en IRQL >= DISPATCH_LEVEL. Para obtener más información, consulte Using Passive-Level Interrupt Service Routines (Uso de rutinas de servicio de interrupción de Passive-Level).
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 2000. |
de la plataforma de destino de | Universal |
encabezado de | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca de | NtosKrnl.lib |
DLL de | NtosKrnl.exe |
irQL | <= DIRQL (consulte la sección Comentarios) |