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.
Od Windows 8 mohou ovladače volat rutiny v rozhraní GUID_D3COLD_SUPPORT_INTERFACE, aby určily možnosti D3cold zařízení a umožnily těmto zařízením používat D3cold. Dvě primární rutiny v tomto rozhraní jsou SetD3ColdSupport a GetIdleWakeInfo.
Rozhraní ovladače GUID_D3COLD_SUPPORT_INTERFACE poskytuje podporu pro podstavový stav D3cold v rámci stavu napájení zařízení D3. D3 je rozdělený do dvou podstavů, D3hot a D3cold. D3 je nejnižší stav napájení zařízení a D3cold využívá méně energie než D3hot. Zařízení může vstoupit do D3cold pouze v případě, že zařízení, nadřazený ovladač sběrnice a firmware platformy podporují tento stav. Zařízení, které podporuje D3cold, může vstoupit a ukončit tento stav, když je počítač ve stavu napájení systému S0 (pracovní).
Ovladač, který je vlastníkem zásad napájení (PPO) pro zařízení, volá rutiny v tomto rozhraní pro provedení následujících úkonů:
- Zjistěte, jestli zařízení, ovladač nadřazené sběrnice a firmware platformy podporují přechody do podstavu D3cold.
- Zjistěte, jestli zařízení může signalizovat událost probuzení procesoru, když je zařízení v podstavu D3cold.
- Povolte a zakažte, aby zařízení přecházelo do podstavu D3cold.
Ovladač zařízení odešle IRP typu IRP_MN_QUERY_INTERFACE dolů po zásobníku ovladačů, aby dotazoval toto rozhraní. Pro tento IRP ovladač nastaví vstupní parametr InterfaceType na GUID_D3COLD_SUPPORT_INTERFACE. Po úspěšném dokončení protokolu IRP je výstupní parametr rozhraní ukazatelem na strukturu D3COLD_SUPPORT_INTERFACE. Tato struktura obsahuje ukazatele na rutiny v rozhraní.
Další informace o stavu napájení zařízení D3cold naleznete v tématu Podpora D3cold v ovladači.
Ovladač volá rutinu SetD3ColdSupport , která dynamicky povolí a zakáže přechody zařízení na D3cold, ke kterým může dojít, když je počítač v S0. Pokud zařízení musí být schopné signalizovat událost probuzení z jakéhokoli stavu nízkého výkonu Dx, do kterého zařízení vstoupí, ovladač by měl dovolit zařízení vstoupit do D3cold pouze v případě, že zařízení může signalizovat události probuzení z D3cold. V opačném případě může být zařízení po vstupu D3cold nedostupné, dokud počítač neopustí stav S0.
Ve výchozím nastavení jsou před prvním voláním rutiny SetD3ColdSupport zakázány přechody D3hot-to-D3cold. Pokud chcete toto výchozí nastavení změnit tak, aby přechody D3hot-to-D3cold byly povoleny před prvním voláním SetD3ColdSupport , může balíček ovladače pro zařízení obsahovat následující dva řádky v části DDInstall.HW souboru INF, který nainstaluje ovladač:
Include = machine.inf
Needs = PciD3ColdSupported
Rutina GetIdleWakeInfo umožňuje ovladači zařízení zjistit stavy napájení zařízení, ze kterých může zařízení signalizovat událost probuzení, když je počítač v určitém stavu napájení systému. Volající této rutiny určuje stav napájení systému jako vstupní parametr a jako výstupní parametr rutina hlásí nejnižší stav napájení zařízení, ze kterého může zařízení signalizovat událost čekání, když je počítač v zadaném stavu napájení systému. Například rutina GetIdleWakeInfo může ovladači sdělit, zda zařízení může signalizovat událost probuzení z D3cold, když je počítač v S0.
Rutina GetIdleWakeInfo poskytuje ucelenější informace o probuzení zařízení, než je k dispozici v požadavku IRP_MN_QUERY_CAPABILITIES . Tento požadavek, který podporuje všechny verze Windows, poskytuje strukturu DEVICE_CAPABILITIES , která popisuje možnosti zařízení. Člen DeviceWake této struktury obsahuje podmnožinu informací, které jsou k dispozici z rutiny GetIdleWakeInfo. Tento člen označuje nejnižší stav napájení zařízení, ze kterého může zařízení signalizovat událost čekání. Informace v tomto členu jsou zaručeny přesné pouze v případě, že počítač je v nízkoenergetickém stavu systému, jak je uvedeno členem SystemWake struktury. Pokud systemWake = PowerSystemSleeping3, informace v DeviceWake jsou známé jako platné pro S3, můžou být často platné pro S1 a S2 a mohou být platné i pro S0.
Jako osvědčený postup by však ovladač neměl předpokládat, že informace v metodě DeviceWake jsou platné pro jakýkoli jiný stav napájení systému než stav, který označuje SystemWake. U některých zařízení se nejnižší stav Dx, ze kterého může zařízení signalizovat událost probuzení, liší podle toho, jestli je počítač v pracovním stavu S0 nebo ve stavu nízkého výkonu (S1, S2, S3 nebo S4). U jiných zařízení mohou autobusy, ke kterým jsou zařízení připojena, zpracovávat signály probuzení, když je počítač v S0, ale zařízení nemohou. Přesně popsat funkce probuzení zařízení těchto zařízení může pouze rutina GetIdleWakeInfo .
Specifikace PCI Express Base 3.0 například definuje dva samostatné mechanismy pro signál událostí probuzení – jeden mechanismus se používá při zapnutí propojení PCI Express (sběrnice) a druhý se použije, když je propojení vypnuté. Když je spojení zapnuté, zařízení odešle datový proud paketů PM_PME transakční vrstvy (TLPs), aby signalizovaly, že by se zařízení mělo přesunout z nízkoenergetického stavu Dx do D0. Když je odkaz vypnutý, zařízení požádá o zapnutí odkazu, aby mohlo zařízení odesílat PM_PME TLPs. Pokud chcete požádat o zapnutí propojení, zařízení buď aktivuje svůj WAKE# signál (pro běžnější provedení zařízení), nebo použije mechanismus "beaconing" (méně časté).
Specifikace PCI Express vyžaduje, aby všechna zařízení, která mají schopnost signalizovat události řízení spotřeby (PME) z D3cold, implementovala oba tyto mechanismy probuzení zařízení, ale vývojář ovladačů může potřebovat povolit zařízení, které tyto mechanismy neimplementuje správně.
Pokud zařízení může správně doručovat PM_PME TLP, když je link zapnutý, ovladač může zařízení umožnit, aby vstoupilo do D3hot, když je počítač v S0. Pokud zařízení dokáže správně uplatnit signál WAKE# pro zapnutí propojení a poté použít PM_PME TLP k zahájení přechodu na D0, může ovladač povolit zařízení vstup do D3cold, když je počítač v S0.
Ovladač by ale neměl povolit, aby zařízení zadalo buď D3hot, nebo D3cold, pokud systémový firmware (BIOS) nemůže zaručit, že mechanismy probuzení zařízení PCI Express jsou správně zpracovány hardwarovou platformou. Ovladač může volat rutinu GetIdleWakeInfo a zjistit, jestli firmware prohlašuje podporu těchto mechanismů. Pokud ovladač používá Kernel-Mode Driver Framework (KMDF) 1.11 nebo novější, je možné jako praktickou alternativu k volání GetIdleWakeInfo použít metodu WdfDeviceAssignS0IdleSettings, která umožní zařízení nečinně setrvat v nejnižším stavu napájení Dx, ze kterého může zařízení signalizovat událost probuzení.