IInterruptSync::CallSynchronizedRoutine method (portcls.h)

The CallSynchronizedRoutine method calls a routine that is not an interrupt service routine (ISR) but whose execution needs to be synchronized with ISRs.

Syntax

NTSTATUS CallSynchronizedRoutine(
  [in] PINTERRUPTSYNCROUTINE Routine,
  [in] PVOID                 DynamicContext
);

Parameters

[in] Routine

Pointer to the routine that is to be called. This routine will run exclusive of the object's ISR and all other routines that are synchronized through the object. Even on multiple-processor machines, routines that are synchronized by a given object will not run concurrently. This parameter is a function pointer of type PINTERRUPTSYNCROUTINE (see IInterruptSync).

[in] DynamicContext

A context value to be passed to the routine.

Return value

CallSynchronizedRoutine returns STATUS_SUCCESS if the call was successful. Otherwise, the method returns an appropriate error code.

Remarks

Execution of any registered ISR is guaranteed to be held off until the call to the routine that is passed to CallSynchronizedRoutine has completed.

Callers of CallSynchronizedRoutine must be running at an IRQL that is less than or equal to the level of the interrupt that is associated with the synchronization object. This interrupt was specified by the PcNewInterruptSync function's ResourceList and ResourceIndex parameters.

Requirements

Requirement Value
Target Platform Universal
Header portcls.h (include Portcls.h)
IRQL See Remarks section.

See also

IInterruptSync

KeSynchronizeExecution

PcNewInterruptSync