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

[Относится только к KMDF]

WdfInterruptReportActive сообщает системе, что прерывание активно, и драйвер готов к обработке запросов прерываний в связанных строках.

Синтаксис

void WdfInterruptReportActive(
  [in] WDFINTERRUPT Interrupt
);

Параметры

[in] Interrupt

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

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

None

Remarks

WdfInterruptReportActive вызывают только драйверы, реализующие функциональное управление питанием.

Драйверу не нужно вызывать WdfInterruptReportActive сразу после создания прерывания. Драйвер должен вызывать WdfInterruptReportActive только после вызова WdfInterruptReportInactive.

Как правило, драйвер вызывает WdfInterruptReportActive из своей подпрограммы ComponentActiveConditionCallback или из ComponentIdleStateCallback , когда state равно 0 (указывает на полное состояние F0).

Если драйвер вызывает этот метод в операционной системе до Windows 8, средство проверки платформы сообщает об ошибке.

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

Примеры

В следующем примере показано, как драйвер может вызывать 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 (включая Wdf.h)
Библиотека Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы).
IRQL <=DISPATCH_LEVEL
Правила соответствия DDI DriverCreate(kmdf)

См. также раздел

WdfInterruptReportInactive