CallSynchronizedRoutine method calls a routine that is not an interrupt service routine (ISR) but whose execution needs to be synchronized with ISRs.
NTSTATUS CallSynchronizedRoutine( PINTERRUPTSYNCROUTINE Routine, PVOID DynamicContext );
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).
A context value to be passed to the routine.
CallSynchronizedRoutine returns STATUS_SUCCESS if the call was successful. Otherwise, the method returns an appropriate error code.
Execution of any registered ISR is guaranteed to be held off until the call to the routine that is passed to
CallSynchronizedRoutine has completed.
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.
|Header||portcls.h (include Portcls.h)|
|IRQL||See Remarks section.|