Функция 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) |