Compartir a través de


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 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 rutina SynchCritSection cuando se llama a .

Valor devuelto

KeSynchronizeExecution devuelve TRUE si la operación se realiza correctamente. De lo contrario, devuelve FALSE.

Comentarios

Cuando se llama a esta rutina, se produce lo siguiente:

  1. IrQL se genera al valor SynchronizeIrql especificado en la llamada a IoConnectInterrupt o IoConnectInterruptEx.
  2. El acceso a SynchronizeContext se sincroniza con el ISR asignado mediante la adquisición del bloqueo de número del objeto de interrupción asociado (o objeto de evento del sistema, en el caso de un ISR que se ejecuta en PASSIVE_LEVEL).
  3. Se llama a la rutina SynchCritSection especificada con el valor SynchronizeContext como parámetro.
Si el ISR se ejecuta en DIRQL >= DISPATCH_LEVEL, la rutina SynchCritSection se ejecuta en el mismo DIRQL y, por tanto, debe ejecutarse durante un tiempo lo más breve posible para evitar retrasar otras tareas de alta prioridad.

Los autores de llamadas de KeSynchronizeExecution deben ejecutarse en IRQL <= DIRQL; es decir, en un IRQL menor o igual que el valor del valor SynchronizeIrql especificado al registrar 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 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, vea Uso de rutinas de servicio de interrupción de Passive-Level.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL <= DIRQL (consulte la sección Comentarios)

Consulte también

IoConnectInterrupt

IoConnectInterruptEx