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 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:

  1. IrQL se genera en el valor de 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 de objetos 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 SynchCritSe ction especificada con el valor de SynchronizeContext como parámetro.
Si el ISR se ejecuta en DIRQL >= DISPATCH_LEVEL, la rutina de 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 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)

Consulte también

ioConnectInterrupt

IoConnectInterruptEx