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


Функция WdfInterruptSynchronize (wdfinterrupt.h)

[Применимо к KMDF и UMDF]

Метод WdfInterruptSynchronize выполняет указанную функцию обратного вызова в DIRQL устройства при сохранении блокировки спина объекта прерывания.

Для объектов прерываний пассивного уровня этот метод выполняет указанную функцию обратного вызова на пассивном уровне при удержании блокировки прерывания пассивного уровня объекта.

Синтаксис

BOOLEAN WdfInterruptSynchronize(
  [in] WDFINTERRUPT                  Interrupt,
  [in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
  [in] WDFCONTEXT                    Context
);

Параметры

[in] Interrupt

Дескриптор объекта прерывания платформы.

[in] Callback

Указатель на функцию обратного вызова EvtInterruptSynchron ize.

[in] Context

Нетипизированный указатель на предоставленные драйвером сведения о том, что платформа передается в функцию обратного вызова EvtInterruptSynchronize.

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

WdfInterruptSynchronize возвращает логическое значение состояния, которое возвращает функция обратного вызова EvtInterruptSynchronize.

Ошибка возникает, если драйвер предоставляет недопустимый дескриптор объекта.

Замечания

Если вы хотите, чтобы драйвер выполнял код, который должен выполняться без предварительной подготовки и обслуживания прерываний устройств эффективно отключается, следует поместить этот код в функцию обратного вызова EvtInterruptSynchronize. Чтобы запланировать выполнение функции обратного вызова, драйвер должен вызвать WdfInterruptSynchronize.

Метод WdfInterruptSynchronize возвращается после завершения выполнения функции обратного вызова EvtInterruptSynchronize.

Вместо вызова WdfInterruptSynchronizeдрайвер может вызывать WdfInterruptAcquireLock и WdfInterruptReleaseLock.

Дополнительные сведения о методе WdfInterruptSynchronize см. в синхронизации кода прерываний.

Дополнительные сведения об обработке прерываний в драйверах на основе платформы см. в обработке аппаратных прерываний.

Для прерываний пассивного уровня драйвер должен вызывать WdfInterruptSynchronize в IRQL = PASSIVE_LEVEL.

Не вызывайте WdfInterruptSynchronize из произвольного контекста потока, например обработчик запросов .

Примеры

В следующем примере кода показано, как вызвать WdfInterruptSynchronize для планирования выполнения функции обратного вызова EvtInterruptSynchronize.

BOOLEAN synchronizeReturnValue;

synchronizeReturnValue = WdfInterruptSynchronize(
                                         WdfInterrupt,
                                         MyEvtInterruptSynchronize,
                                         CallbackContext
                                         );

Требования

Требование Ценность
целевая платформа универсальный
минимальная версия KMDF 1.0
минимальная версия UMDF 2.0
Заголовок wdfinterrupt.h (include Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
правил соответствия DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

EvtInterruptSynchronize

WdfInterruptAcquireLock

WdfInterruptReleaseLock