Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Począwszy od systemu Windows 8, urządzenia mogą wprowadzać stan podrzędny zasilania D3cold nawet wtedy, gdy system pozostaje w stanie zasilania S0. W tym temacie opisano wymagania oprogramowania układowego dotyczące implementowania obsługi D3cold dla urządzenia osadzonego. Poniższa dyskusja ma pomóc deweloperom oprogramowania układowego, aby umożliwić swoim urządzeniom osadzonym niezawodne wprowadzanie i zamykanie aplikacji D3cold.
Ponadto krótko omówiono wymagania dotyczące sterowników urządzeń do obsługi D3cold. Aby uzyskać więcej informacji na temat obsługi sterowników urządzeń dla D3cold, zobacz Obsługa D3cold w sterowniku.
Wprowadzenie
Stany zasilania urządzenia są definiowane w specyfikacji ACPI i w różnych specyfikacjach magistrali. Specyfikacja magistrali PCI od czasu wprowadzenia zarządzania energią PCI podzieliła stan zasilania urządzenia D3 (off) na dwa stany podrzędne: D3hot i D3cold. To rozróżnienie zostało dodane do specyfikacji ACPI w ACPI 3.0 i rozszerzone w ACPI 4.0. System Windows zawsze obsługiwał oba stany podrzędne D3, ale system Windows 7 i starsze wersje systemu Windows obsługują stan podrzędny D3cold tylko wtedy, gdy cała maszyna kończy stan zasilania systemu S0 (praca), aby wprowadzić stan uśpienia lub hibernacji — zazwyczaj S3 lub S4. Począwszy od systemu Windows 8, sterowniki urządzeń mogą umożliwić urządzeniom wprowadzanie stanu D3cold nawet wtedy, gdy system pozostaje w S0.
D3hot, który jest często nazywany "D3", jest stanem "soft-off" urządzenia. W tym stanie urządzenie można wykryć za pomocą skanowania magistrali, a polecenia wysyłane do urządzenia mogą spowodować ponowne włączenie urządzenia. W D3cold wszystkie źródła zasilania są usuwane, z możliwym wyjątkiem niewielkiej ilości energii do napędzania logiki wznawiania urządzenia. Na przykład w przypadku urządzeń PCI Express (PCIe) główne źródło zasilania urządzenia, Vcc, jest często wyłączone w przejściu do D3cold. Wyłączenie Vcc może zmniejszyć zużycie energii i wydłużyć czas działania platformy sprzętu mobilnego na naładowaniu baterii. Gdy urządzenie znajduje się w D3cold, nie można go wykryć przez skanowanie magistrali i nie może odbierać poleceń. Przywracanie zasilania WCC przenosi urządzenie do stanu niezainicjowanego, który jest zwykle odpowiednikiem stanu D0. Oprogramowanie musi następnie ponownie zainicjować urządzenie, aby umieścić je w stanie roboczym.
Umieszczenie urządzenia w D3cold nie musi oznaczać, że wszystkie źródła zasilania urządzenia zostały usunięte — oznacza to tylko, że główne źródło zasilania, Vcc, jest usuwane. Pomocnicze źródło zasilania, Vaux, może być również usunięte, jeśli nie jest wymagane dla logiki wybudzania. Jednak urządzenie, którego wymaga się do sygnalizowania zdarzenia wznawiania procesorowi, musi mieć możliwość pobierania wystarczającej mocy, aby obsługiwać logikę wznawiania. Na przykład karta sieciowa Ethernet, której główne źródło zasilania zostanie usunięte, może pobierać wystarczające zasilanie z kabla Ethernet. Ewentualnie zasilanie rezerwowe do karty sieciowej Wi-Fi może zostać dostarczone ze źródła spoza interfejsu PCIe, w tym przypadku interfejs PCIe można całkowicie wyłączyć.
W poniższej dyskusji opisano zestaw wymagań dotyczących włączania przejścia stanu zasilania urządzenia na D3cold. Te wymagania należą do następujących dwóch kategorii:
Wymagania dotyczące oprogramowania układowego i platformy
Wymagania dotyczące sterowników urządzeń
Pierwsza z tych dwóch kategorii jest głównym celem tej dyskusji. Zostanie przedstawione krótkie omówienie drugiej kategorii. Aby uzyskać więcej informacji na temat wymagań dotyczących sterowników urządzeń, zobacz Obsługa D3cold w sterowniku.
Wymagania dotyczące oprogramowania układowego i platformy
W poniższej dyskusji przedstawiono wymagania oprogramowania układowego i platformy dotyczące włączania rozszerzenia D3cold w następujących dwóch przypadkach:
Kiedy urządzenie jest wyliczane w ACPI.
Gdy urządzenie jest wyliczane przez magistralę nadrzędną.
Większość poniższej dyskusji dotyczy komputera PCIe. Jednak ogólne zasady opisane tutaj w dużej mierze mają zastosowanie do innych autobusów, jak również.
Pomijając niektóre szczegóły, przejście z D3cold do D0 jest wyzwalane przez ponowne zastosowanie zasilania Vcc do urządzenia osadzonego. Ponowne stosowanie zasilania skutecznie przywraca połączenie urządzenia z magistralą. System Windows odczytuje identyfikatory urządzenia w celu rozróżnienia między następującymi dwoma przypadkami:
Urządzenie zostało usunięte i zastąpione przez inne urządzenie.
To samo urządzenie zostało usunięte, a następnie ponownie wprowadzone.
Jeśli identyfikatory są zgodne, sterownik urządzenia ponownie inicjuje urządzenie. Jeśli identyfikatory nie są zgodne, system Windows zwalnia sterownik urządzenia i tworzy nowy stos sterowników dla nowego urządzenia. Na przykład PCIe wysyła zapytania dotyczące identyfikatora dostawcy, identyfikatora urządzenia i identyfikatorów podsystemu (które są podzielone na identyfikatory podrzędnych urządzeń i dostawców podrzędnych w niektórych wersjach specyfikacji). Te identyfikatory muszą być zgodne z wcześniej dołączonymi urządzeniami po ponownym zastosowaniu zasilania (i upływie określonego przez magistralę okresu oczekiwania); W przeciwnym razie system Windows rozważy, że nowe urządzenie będzie inne niż poprzednie.
Przypadek 1: Urządzenie wbudowane jest rozpoznawane w interfejsie ACPI
Jeśli urządzenie osadzone nie jest wykrywalne za pomocą mechanizmów zdefiniowanych przez specyfikację magistrali, takich jak PCIe lub USB, ale urządzenie jest trwale połączone (lub przynajmniej połączenie jest dedykowane znanemu urządzeniu), to urządzenie można opisać w oprogramowaniu układowym platformy przez ACPI _HID i/lub _CID obiektów. Te obiekty umożliwiają wyliczanie urządzenia przez OSPM. ("OSPM" to termin zdefiniowany w specyfikacji ACPI. Oznacza to luźno "oprogramowanie, które nie jest oprogramowaniem układowym". OSPM wylicza urządzenie tylko wtedy, gdy żaden moduł wyliczający magistrali nie może wykryć identyfikatora urządzenia. Na przykład urządzenia w magistrali ISA są wyliczane przez OSPM. Ponadto urządzenia w systemie na mikroukładach (SoC) są często wyliczane przez ACPI, ponieważ znajdują się w nienumerowalnej sieci szkieletowej. Przykładami takich urządzeń są np. kontrolery hosta USB i SD.
Oprogramowanie układowe platformy (wyliczone w ACPI)
OSPM używa \_SB._OSC do przekazywania możliwości OSPM dla całej platformy do oprogramowania układowego platformy. Oprogramowanie układowe platformy musi ustawić bit 2 w wartości zwracanej przez \_SB._OSC, aby wskazać systemowi OSPM, że urządzenie obsługuje _PR3. Aby uzyskać więcej informacji, zobacz sekcję 6.2.10.2, "Platform-Wide OSPM Capabilities", w specyfikacji ACPI 5.0.
Urządzenie osadzone (odnalezione wyłącznie za pośrednictwem ACPI)
Aby obsługiwać usługę D3cold, oprogramowanie układowe platformy powinno zaimplementować następujące obiekty zasobów zasilania ACPI dla urządzenia osadzonego:
_PR0: ten obiekt ocenia wymagania dotyczące zasilania urządzenia w stanie zasilania urządzenia D0 (w pełni włączone). Wartość zwracana to lista zasobów zasilania, których urządzenie wymaga w stanie D0.
_PR2: ten obiekt ocenia wymagania dotyczące zasilania urządzenia w stanie zasilania urządzenia D2. Zwracana wartość to lista zasobów zasilania, których urządzenie wymaga w stanie D2. Należy pamiętać, że ze względów historycznych system Windows oczekuje, że _PR2 jest obecny zawsze, gdy _PR0 jest obecny. Jeśli D2 jest zaimplementowany na sprzęcie, _PR2 wyświetla listę zasobów zasilania wymaganych dla D2. Jeśli D2 nie jest zaimplementowana, _PR2 wyświetla te same zasoby co _PR0.
_PR3: ten obiekt ocenia wymagania dotyczące zasilania urządzenia w stanie zasilania urządzenia D3hot. Wartość zwracana to lista zasobów zasilania, których urządzenie wymaga w stanie D3hot.
Dla każdego zasobu zasilania zidentyfikowanego w dowolnym obiekcie _PRx należy zaimplementować następujące metody sterowania:
_OFF: ustaw źródło zasilania na stan off (wyłącz źródło).
_ON: Ustaw zasób zasilania w stan włączony.
_STA: ten obiekt oblicza bieżący stan włączonego lub wyłączonego zasobu zasilania (0: wyłączone, 1: włączone).
Przejście do D3cold ma miejsce, gdy ACPI uruchamia metodę sterowania _OFF na zasobach zasilania wymienionych w _PR3. Należy pamiętać, że jeśli sterownik funkcji urządzenia wskazuje obsługę D3cold, ta obsługa nie oznacza, że wszystkie przejścia do D3 powodują szybkie przejścia do D3cold. Możliwe, że urządzenie wchodzi i pozostaje w D3hot przez dłuższy czas, a następnie wraca do D0 bez wchodzenia do D3cold, lub wchodzi do D3cold w późniejszym czasie.
Urządzenie nadrzędne (wymienione w ACPI)
Nie ma potrzeby, aby urządzenie nadrzędne mogło być zarządzane przez zasilanie. Jeśli jednak urządzenie nadrzędne jest zarządzane energetycznie, system Windows nigdy nie wyłącza tego urządzenia, jeśli którekolwiek z jego urządzeń podrzędnych (urządzeń zależnych) nie znajduje się w stanie D3.
Przykład (enumerowany w ACPI)
Na poniższym diagramie blokowym przedstawiono urządzenie osadzone (oznaczone etykietą EMBD) w magistrali systemu. Zasilanie główne (Vcc) i zasilanie pomocnicze (Vaux) do urządzenia można niezależnie włączać i wyłączać za pośrednictwem bloku oznaczonej logiką zasilania.
W poniższym przykładzie kodu ASL opisano zasoby zasilania używane przez urządzenie osadzone na poprzednim diagramie. W tym przykładzie rozpoczyna się od deklaracji metody sterowania _OSC opisującego możliwości sterownika urządzenia. Następnie zadeklarowane są dwa zasoby zasilania urządzenia — nazwy zasobów PVCC i PVAX są przypisywane do głównych i pomocniczych źródeł zasilania urządzenia, Wcc i Vaux. Na koniec wymagania dotyczące zasobów zasilania są wyświetlane dla każdego stanu zasilania urządzenia obsługiwanego przez urządzenie, a funkcje wznawiania urządzenia zostały opisane.
Scope (\_SB)
{
Method(_OSC, 4, NotSerialized) // Platform-wide Capabilities Check.
{
... // This must indicate support for _PR3.
}
PowerResource(PVCC,0,0) // Power resource representing the main power for the device.
// Required for the device to be fully functional (D0).
{
Name(_STA,VAR1) // Return the state of the power resource.
Method(_ON,0x0) {...} // Turn on the power resource and set VAR1 to 1.
Method(_OFF,0x0) {...} // Turn off the power resource and set VAR1 to 0.
}
PowerResource(PVAX,0,0) // Power resource representing the auxiliary power for the device.
// Required for low-power, less-functional states (e.g., D3hot).
{
Name(_STA,VAR2)
Method(_ON,0x0) {...}
Method(_OFF,0x0) {...}
}
Device(EMBD) // An ACPI-enumerated device on the processor bus that supports D3Cold
{
Name(_HID, ...)
... // Other (non-power) objects for this device
// Indicate support for D0.
Name(_PR0, Package() {PVCC, PVAX}) // Power resources required for D0
// Indicate support for D1 (optional)...
// Indicate support for D2.
Name(_PR2, Package() {PVCC, PVAX}) // If D2 is implemented in the hardware,
// list the power resources needed by D2.
// If D2 is not implemented, list the same
// resources as _PR3.
// Indicate support for D3Cold.
Name(_PR3, Package() {PVCC, PVAX}) // Power resource for D3. These will be
// turned off ONLY if drivers opt-in to D3cold.
// Indicate support for wake. Required for entry into D3cold, even if the device doesn't
// need or have a wake mechanism.
Name(_S0W, 4) // The existence of this object indicates that the platform is
// capable of handling wake events from this device while in S0.
// The value of this object indicates the lowest D-state this device
// can be in to trigger wake events that can be handled while the
// platform is in S0.
// Enable wake events (optional)
// If this device actually does generate wake events, there must be a way for OSPM to
// enable and disable them. The mechanism for this depends on the platform hardware:
/*
Name(_PRW, ...) // If the event is signaled via a GPE bit (SCI) OR
// if there are power resources required only for wake.
Name(_CRS, ...) // If the event is signaled via a wake-capable interrupt.
Method(_DSW, 3) {...} // Can be used with either of the above, if wake enablement
// varies depending on the target S-state and D-state.
*/
} // End of Device EMBD
} End Scope \_SB
Przypadek 2: Urządzenie osadzone jest enumerowane przez magistralę
Jeśli urządzenie osadzone jest zgodne ze wspólną specyfikacją magistrali, taką jak PCIe lub USB, to urządzenie można odnaleźć za pomocą mechanizmów zdefiniowanych przez magistralę, a zasilanie może być dostarczane częściowo lub całkowicie przez magistralę. Jeśli to urządzenie nie jest zasilane przez inne zasoby zasilania pasma bocznego, głównym źródłem zasilania urządzenia jest połączenie, które łączy urządzenie z nadrzędnym kontrolerem magistrali. Urządzenia wyliczane magistralą można zidentyfikować za pomocą obiektu _ADR w definicji urządzenia osadzonego. Obiekt _ADR służy do przekazywania adresu urządzenia do OSPM na nadrzędnej magistrali urządzenia osadzonego. Ten adres służy do powiązania reprezentacji urządzenia przez magistralę (jak jest postrzegany przez sprzęt magistrali) z reprezentacją urządzenia przez platformę (jak jest postrzegany przez oprogramowanie układowe ACPI). (Kodowanie adresów _ADR jest specyficzne dla magistrali. Aby uzyskać więcej informacji, zobacz sekcję 6.1.1, "_ADR (adres)" w specyfikacji ACPI 5.0. Gdy ten mechanizm jest używany, wsparcie D3cold musi być koordynowane ze sterownikiem magistrali nadrzędnej.
Jeśli głównym źródłem zasilania urządzenia osadzonego jest łącze, które łączy to urządzenie z magistralą nadrzędną, kluczowym wymaganiem do umieszczenia urządzenia w D3cold jest wyłączenie łącza. Aby uzyskać więcej informacji na temat przejścia na D3cold, zobacz wykres stanu w obszarze Stany zasilania urządzenia.
Oprogramowanie układowe platformy (enumerowane przez magistralę)
OSPM używa \_SB._OSC do przekazywania możliwości OSPM dla całej platformy do oprogramowania układowego platformy. Oprogramowanie układowe platformy musi ustawić bit 2 w wartości zwracanej przez \_SB._OSC, aby wskazać systemowi OSPM, że urządzenie obsługuje _PR3. Aby uzyskać więcej informacji, zobacz sekcję 6.2.10.2, "Platform-Wide OSPM Capabilities", w specyfikacji ACPI 5.0.
Urządzenie wbudowane (enumerowane przez magistralę)
Nie są wymagane żadne zmiany dotyczące ACPI specyficzne dla D3cold. W takim przypadku, o ile sterownik urządzenia i platforma wskazały obsługę D3cold, magistralę, która dostarcza zasilanie do urządzenia osadzonego, można wyłączyć, gdy magistrala nadrzędna wychodzi z D0 i przechodzi w stan niskiego poboru mocy Dx. Przejście urządzenia osadzonego z D3hot na D3cold następuje po usunięciu zasilania z łącza. Stan Dx, do którego wchodzi magistrala nadrzędna, może być dowolnym stanem, który spowoduje wyłączenie źródła zasilania łącza.
Urządzenie nadrzędne (wyliczone magistralą)
Deskryptor ACPI dla magistrali nadrzędnej musi wykonać następujące czynności:
Zaimplementuj _S0W(Dx). Ten obiekt określa Dx jako najniższy stan D, z którego urządzenie podrzędne (osadzone) może wybudzać się, gdy system jest w stanie S0.
Zdefiniuj zasoby zasilania reprezentujące łącze łączące urządzenie podrzędne (osadzone) z magistralą nadrzędną. Ponadto _ON, _OFF i obiekty _STA powinny być zdefiniowane dla tego zasobu zasilania. Przykładowy kod ASL, który jest zgodny z tą listą, opisuje moc łącza jako dwa zasoby, PVC1 i PVX1. Dla każdego z tych zasobów definiowane są obiekty _ON, _OFF i _STA.
Jeśli "Dx" (najniższy stan mocy D; zobacz pierwszy element listy) to D3cold, określ obiekt _PR3 zawierający zasoby zasilania wymagane przez urządzenie podrzędne (wbudowane) dla D3hot (na przykład Vcc i Vaux). Jeśli te same źródła zasilania są wymagane dla D0, D2 i D3hot, _PR0, _PR2 i _PR3 wszystkie określają te same zasoby zasilania. Te zasoby są wyłączane tylko wtedy, gdy urządzenie podrzędne przechodzi do stanu D3cold.
Ze względów historycznych system Windows oczekuje, że _PR2 będzie obecny za każdym razem, gdy _PR0 jest obecny. Jeśli D2 jest zaimplementowany na sprzęcie, _PR2 wyświetla listę zasobów zasilania wymaganych dla D2. Jeśli D2 nie jest zaimplementowana, _PR2 wyświetla te same zasoby co _PR0.
Zaimplementuj _PR0. Lista zasobów w obiekcie _PR0 magistrali nadrzędnej powinna zawierać zasoby zasilające łącze łączące magistralę nadrzędną z urządzeniem podrzędnym (osadzonym).
Przykład (enumerowane przez magistralę)
Przykładowa konfiguracja sprzętu na poniższym diagramie blokowym przedstawia dwa różne sposoby włączenia konfiguracji D3cold dla urządzeń PCIe. Najpierw punkt końcowy (oznaczony etykietą ENDP) jest połączony z portem głównym PCIe (RP01) i odbiera zasilanie pomocnicze z urządzenia nadrzędnego za pośrednictwem linku PCIe. Po drugie, urządzenie HD Audio na diagramie nie ma standardowego linku do swojego urządzenia nadrzędnego (kontrolera PCI oznaczonego PCI0) i dlatego jest modelowane podobnie jak w przypadku wyliczenia ACPI.
Urządzenie RP01 na tym diagramie ma główne źródło zasilania, Vcc1 i pomocnicze źródło zasilania Vaux1. Podobnie urządzenie HD Audio ma główne źródło zasilania, Vcc2 i pomocnicze źródło zasilania Vaux2.
Poniższy kod ASL opisuje nadrzędny kontroler magistrali (PCI0) i zasoby zasilania wymagane dla urządzeń ENDP i HD Audio pokazanych na powyższym diagramie.
Scope (_SB)
{
Method(_OSC, 4, NotSerialized) // Platform-wide Capabilities Check.
{
... // This must indicate support for _PR3.
}
PowerResource(PVC1,0,0) // Power resource representing Vcc1 for the RP01 device.
// Required for the device(s) to be fully functional (D0).
{
Name(_STA,VAR0)
Method(_ON,0x0) {...}
Method(_OFF,0x0) {...}
}
PowerResource(PVX1,0,0) // Power resource representing Vaux1 for the RP01 device.
// Required for low-power, less-functional states (e.g., D3hot).
{
Name(_STA,VAR1)
Method(_ON,0x0) {...}
Method(_OFF,0x0) {...}
}
PowerResource(PVC2,0,0) // Power resource representing Vcc2 for the HD device.
// Required for the device(s) to be fully functional (D0).
{
Name(_STA,VAR2)
Method(_ON,0x0) {...}
Method(_OFF,0x0) {...}
}
PowerResource(PVX2,0,0) // Power resource representing Vaux2 for the HD device.
// Required for low-power, less-functional states (e.g., D3hot).
{
Name(_STA,VAR3)
Method(_ON,0x0) {...}
Method(_OFF,0x0) {...}
}
... // Power resources for other child devices
Device(PCI0) // The PCI root complex
{
Name(_HID, EISAID("PNP0A08")) // ACPI enumerated
Method(_OSC, 4, NotSerialized) // PCIe-specific Capabilities Check.
{
... // This must support hand-off of PCIe control to the OS.
}
... // Other (non-power) objects for this device
Device(RP01) // PCIe Root Port 1
{
Name(_ADR, "...") // Bus enumerated
... // Other (non-power) objects for this device
// Indicate support for D0.
Name(_PR0, Package() {PVC1, PVX1}) // Power resources required for D0.
// Includes the Link Power for ENDP.
// Indicate support for D1 (optional)...
// Indicate support for D2.
Name(_PR2, Package(){PVC1, PVX1})
// Indicate support for wake. Required for entry into D3cold, even if the
// device doesn't need or have a wake mechanism.
Name(_S0W, 4) // The existence of this object indicates the platform
// is capable of handling wake events from this device
// while the platform is in S0.
// The value of this object indicates the lowest D-state
// this device can be in to trigger wake events that
// can be handled while the platform is in S0.
// Enable wake events (optional)
// If this device actually does generate wake events, there must be a way
// for OSPM to enable and disable them. The mechanism for this depends on
// the platform hardware:
/*
Name(_PRW, ...) // If the event is signaled via a GPE bit (SCI) OR
// if there are power resources required only for wake.
Name(_CRS, ...) // If the event is signaled via a wake-capable interrupt.
Method(_DSW, 3) {...} // Can be used with both of the above, if wake
// enablement varies depending on the target
// S-state and D-state.
*/
Device(ENDP) // This device supports D3cold. No power-related objects
// are required.
{
Name(_ADR, "...") // Bus enumerated
... // Other (non-power) objects
} // End of Device ENDP
} // End of Device RP01
Device(HD) // A PCIe Bus0 device (HD Audio) that supports D3cold. Note that
// this case is modeled similar to the ACPI-enumerated case
// because device HD has no standard link to its parent.
{
Name(_ADR, "...") // Bus enumerated
... // Other (non-power) objects for this device
// Indicate support for D0.
Name(_PR0, Package() {PVC2, PVX2}) // Power resources required for D0
// Indicate support for D1 (optional)...
// Indicate support for D2.
Name(_PR2, Package(){PVC2, PVX2})
// Indicate support for D3Cold.
Name(_PR3, Package() {PVC2, PVX2}) // Power resource for D3; These will
// be turned off ONLY if drivers
// opt-in to D3cold.
// Indicate support for wake. Required for entry into D3cold, even if the
// device doesn't need or have a wake mechanism.
Name(_S0W, 4) // The existence of this object indicates that the platform
// is capable of handling wake events from this device
// while the platform is in S0.
// The value of this object indicates the lowest D-state
// this device can be in to trigger wake events that can
// be handled while the platform is in S0.
// Enable wake events (optional).
// If this device actually does generate wake events, there must be a way for
// OSPM to enable and disable them. The mechanism for this depends on the HW:
/*
Name(_PRW, ...) // If the event is signaled via a GPE bit (SCI) OR
// if there are power resources required only for wake.
Name(_CRS, ...) // If the event is signaled via a wake-capable interrupt.
Method(_DSW, 3) {...} // Can be used with both of the above, if wake
// enablement varies depending on the target
// S-state and D-state.
*/
} // End Device HD
... // Device objects for other child devices
} // End Device PCI0
} // End Scope _SB
Inne możliwości
Techniki przedstawione w dwóch poprzednich przykładach można połączyć w celu obsługi konfiguracji korzystających zarówno z zasilania magistrali, jak i zasilania pasmowego.
Wymagania dotyczące sterowników urządzeń
Administrator polityki zasilania urządzenia (zazwyczaj sterownik funkcji) informuje system operacyjny, czy włączyć przejście urządzenia z trybu D3hot do trybu D3cold. Sterownik może podać te informacje w pliku INF, który instaluje urządzenie. Sterownik może również wywołać procedurę SetD3ColdSupport w czasie wykonywania, aby dynamicznie włączyć lub wyłączyć przejścia urządzenia do D3cold. Po umożliwieniu urządzeniu przejścia do stanu D3cold sterownik gwarantuje następujące zachowanie:
Urządzenie może tolerować przejście z D3hot do D3cold, gdy komputer ma pozostać w S0.
Urządzenie będzie działać prawidłowo po powrocie do D0 z D3cold.
Urządzenie, które nie spełnia wymagań, może po wprowadzeniu D3cold być niedostępne do czasu ponownego uruchomienia komputera lub wejścia w stan uśpienia. Jeśli urządzenie musi być w stanie zasygnalizować zdarzenie wznawiania z każdego stanu Dx o niskiej mocy, do którego przechodzi, przejście do D3cold nie powinno być włączone, chyba że sterownik jest pewien, że sygnał wznawiania urządzenia będzie działać w D3cold.
Aby uzyskać więcej informacji, zobacz Obsługa D3cold w sterowniku.