Поделиться через


Метод IInterruptSync::CallSynchronizedRoutine (portcls.h)

Метод CallSynchronizedRoutine вызывает подпрограмму, которая не является подпрограммой службы прерываний (ISR), но выполнение которой необходимо синхронизировать с ISR.

Синтаксис

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

Параметры

[in] Routine

Указатель на вызываемую подпрограмму. Эта подпрограмма будет выполнять монопольную программу isR объекта и все остальные подпрограммы, синхронизированные через объект. Даже на компьютерах с несколькими процессорами подпрограммы, синхронизированные заданным объектом, не будут выполняться одновременно. Этот параметр является указателем функции типа PINTERRUPTSYNCROUTINE (см. IInterruptSync).

[in] DynamicContext

Значение контекста, передаваемое подпрограмме.

Возвращаемое значение

CallSynchronizedRoutine возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае метод возвращает соответствующий код ошибки.

Замечания

Выполнение любого зарегистрированного isR гарантированно будет отложено до завершения вызова процедуры, переданной в CallSynchronizedRoutine нее.

Вызывающие объекты CallSynchronizedRoutine должны выполняться в IRQL, который меньше или равен уровню прерывания, связанного с объектом синхронизации. Это прерывание было указано параметрами ResourceList и ResourceIndex функции PcNewInterruptSync.

Требования

Требование Ценность
целевая платформа универсальный
Заголовок portcls.h (include Portcls.h)
IRQL См. раздел "Примечания".

См. также

IInterruptSync

KeSynchronizeExecution

PcNewInterruptSync