Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
[Platí jenom pro KMDF]
Ovladač KMDF pro zařízení s více součástmi může podporovat přepnutí do nečinného režimu a funkční stavy napájení. Vzhledem k tomu, že v tomto případě se ovladač zaregistruje přímo v rámci řízení spotřeby (PoFx), musí ovladač koordinovat výsledné změny stavu Dx s PoFx.
Poskytnutí nastavení zásad napájení zařízení pro dobu nečinnosti
Při volání WdfDeviceAssignS0IdleSettingsmusí ovladač nastavit IdleTimeoutType na DriverManagedIdleTimeout ve struktuře WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS. Kromě toho musí být ovladač nastaven tak, aby nastavil PowerUpIdleDeviceOnSystemWake na WdfTruea IdleCaps na IdleCannotWakeFromS0, jak je znázorněno v následujícím příkladu.
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS s0IdleSettings;
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS_INIT(&s0IdleSettings,
IdleCannotWakeFromS0);
s0IdleSettings.IdleTimeoutType = DriverManagedIdleTimeout;
s0IdleSettings.PowerUpIdleDeviceOnSystemWake = WdfTrue;
s0IdleSettings.IdleTimeout = 1;
status = WdfDeviceAssignS0IdleSettings(device, &s0IdleSettings);
Přechod z pracovního stavu (D0) do stavu Low-Power (Dx)
V EvtDeviceSelfManagedIoInitovladač volá WdfDeviceStopIdle, aby získal referenci k napájení, což brání WDF v umístění zařízení do nízkoenergetického stavu.
Ovladač uvolní referenci výkonu voláním WdfDeviceResumeIdle ze své rutiny zpětného volání DevicePowerRequiredCallback.
Ovladač obvykle určuje velmi krátký časový limit nečinnosti, aby WDF převedl zařízení do stavu nízké spotřeby brzy po uvolnění všech energetických odkazů.
Přechod ze stavu Low-Power (Dx) na pracovní (D0)
V DevicePowerRequiredCallbackmusí ovladač převést zařízení do funkčního stavu (D0). Aby bylo možné, musí být volání WdfDeviceStopIdle s parametrem WaitForD0 nastaveným na TRUE odloženo na pracovní vlákno. Toto blokování volání WdfDeviceStopIdle nesmí být z DevicePowerRequiredCallback.
Místo toho musí ovladač odložit blokující volání na pracovní vlákno, které běží na pasivní úrovni, a je zaručeno, že nevykoná volání WdfDeviceStopIdle v kontextu I/O dispečerské rutiny fronty spravované výkonem.
Pokud ovladač dříve zavolal na WdfDeviceInitSetPowerPageable (což znamená, že má přístup na stránkovatelná data během přechodů napájení), může ovladač zavolat na WdfWorkItemCreate pro vytvoření pracovní položky frameworku. Pokud ovladač nenastavil power-pageable, ovladač musí vytvořit vlastní systémové vlákno. Další informace naleznete v tématu PsCreateSystemThread.
Poté co WdfDeviceStopIdle vrátí, musí ovladač zavolat PoFxReportDevicePoweredOn, i když metoda vrátí chybu.