Bagikan melalui


Fungsi WdfInterruptReportInactive (wdfinterrupt.h)

[Hanya berlaku untuk KMDF]

Metode WdfInterruptReportInactive menginformasikan sistem bahwa interupsi tidak lagi aktif dan driver tidak mengharapkan permintaan interupsi pada baris terkait.

Sintaks

void WdfInterruptReportInactive(
  [in] WDFINTERRUPT Interrupt
);

Parameter

[in] Interrupt

Handel ke objek interupsi kerangka kerja.

Nilai kembali

Tidak ada

Keterangan

Hanya driver yang mengimplementasikan manajemen daya status fungsi ini yang memanggil WdfInterruptReportInactive.

Ketika driver memanggil WdfInterruptReportInactive, kerangka kerja manajemen daya (PoFx) kemudian dapat melakukan tugas manajemen daya terkait.

Biasanya, driver memanggil WdfInterruptReportInactive dari rutinitas ComponentIdleConditionCallback , atau dari ComponentIdleStateCallback ketika Status lebih besar dari nol (menunjukkan status Fx berdaya rendah).

Jika driver Anda memanggil metode ini pada sistem operasi yang lebih awal dari Windows 8, pemverifikasi kerangka kerja melaporkan kesalahan.

Contoh

Contoh berikut menunjukkan bagaimana driver mungkin memanggil WdfInterruptReportInactive dari rutinitas ComponentIdleStateCallback dari driver KMDF. Driver mendaftarkan satu komponen dengan memanggil WdfDeviceWdmAssignPowerFrameworkSettings.

VOID
MyComponentIdleStateCallback(
    _In_ PVOID Context,
    _In_ ULONG Component,
    _In_ ULONG State
    )
{
    PFDO_DEVICE_DATA deviceData;
    PFDO_INTERRUPT_CONTEXT interruptContext;

    deviceData = FdoGetData((WDFDEVICE)Context);
    interruptContext = InterruptGetData(deviceData->Interrupt);

    switch (State) {
        case 0:
             …
            break;

        //
        // PoFx may make us go to any of the F-states directly, hence we execute
        // F0Exit code for all of the Fx states. Note that transition to any Fx 
        // state happens from F0 (and not another Fx state).
        //
        default:
            //
            // Disable interrupt generation at hardware if needed.
            // 
            WdfInterruptAcquireLock(deviceData->Interrupt);
            DisableInterruptInHardware();
            WdfInterruptReleaseLock(deviceData->Interrupt);

            //
            // Report that interrupt is now inactive.
            //
            WdfInterruptReportInactive(deviceData->Interrupt);

            interruptContext->ReportedInactive = TRUE;

        break;

    …

}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8
Target Platform Universal
Versi KMDF minimum 1.11
Header wdfinterrupt.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL <=DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf)

Lihat juga

WdfInterruptReportActive