Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо только к KMDF]
WdfInterruptReportActive сообщает системе, что прерывание активно, и драйвер готов обрабатывать запросы прерываний в связанных строках.
Синтаксис
void WdfInterruptReportActive(
[in] WDFINTERRUPT Interrupt
);
Параметры
[in] Interrupt
Дескриптор объекта прерывания платформы.
Возвращаемое значение
Нет
Замечания
Только драйверы, реализующие вызов управления питанием функционального состояния WdfInterruptReportActive.
Драйвер не должен вызывать WdfInterruptReportActive сразу после создания прерывания. Драйвер должен вызывать только WdfInterruptReportActive после вызова WdfInterruptReportInactive.
Как правило, драйвер вызывает WdfInterruptReportActive из подпрограммы ComponentActiveConditionCallback или из ComponentIdleStateCallback, когда состояние равно 0 (указывающее полное состояние F0).
Если драйвер вызывает этот метод в операционной системе раньше Windows 8, проверяющего средства платформы сообщает об ошибке.
Дополнительные сведения см. в разделе поддержки функциональных состояний power states.
Примеры
В следующем примере показано, как драйвер может вызывать WdfInterruptReportActive из подпрограммы ComponentIdleStateCallback драйвера KMDF. Драйвер регистрирует один компонент путем вызова WdfDeviceWdmAssignPowerFrameworkSettings.
VOID
MyComponentIdleStateCallback(
_In_ PVOID Context,
_In_ ULONG Component,
_In_ ULONG State
)
{
PFDO_DEVICE_DATA deviceData;
PINTERRUPT_CONTEXT interruptContext;
deviceData = FdoGetData((WDFDEVICE)Context);
interruptContext = InterruptGetData(deviceData->Interrupt);
switch (State) {
case 0:
if (interruptContext->ReportedInactive) {
//
// the interrupt was reported inactive earlier. We need to report active now.
//
WdfInterruptReportActive(deviceData->Interrupt);
interruptContext->ReportedInactive = FALSE;
//
// Enable interrupt generation at hardware.
//
WdfInterruptAcquireLock(deviceData->Interrupt);
EnableInterruptInHardware();
WdfInterruptReleaseLock(deviceData->Interrupt);
}
break;
…
}
Требования
Требование | Ценность |
---|---|
Минимально поддерживаемый клиент | Windows 8 |
целевая платформа | универсальный |
минимальная версия KMDF | 1.11 |
Заголовок | wdfinterrupt.h (include Wdf.h) |
Библиотека | Wdf01000.sys (см. управление версиями библиотеки Платформы).) |
IRQL | <=DISPATCH_LEVEL |
правил соответствия DDI | DriverCreate(kmdf) |