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.
Niektóre urządzenia mogą wprowadzać stan niskiego zużycia energii (Dx), gdy system pozostaje w stanie roboczym (S0). Począwszy od systemu Windows 8, urządzenia mogą przejść do stanu zasilania o niskiej mocy (Fx) przed wejściem do stanu Dx. W przypadku takich urządzeń system inicjuje obniżenie mocy urządzenia lub składnika, gdy urządzenie lub składnik pozostaje nieaktywny przez ustalony (i konfigurowalny) czas.
Niektóre z tych urządzeń mogą również wyzwalać sygnał obudzenia w magistrali po wykryciu zdarzenia zewnętrznego. Sterownik magistrali reaguje na ten sygnał, a stos sterowników przywraca urządzenie do stanu pracy. (Urządzenia, które nie wykrywają zdarzeń zewnętrznych, pozostają w stanie niskiego zużycia energii, dopóki framework nie poprosi sterownika magistrali o rozpoczęcie przywracania urządzenia do jego stanu roboczego).
Jeśli Twoje urządzenie lub składnik mogą być wyłączone, gdy są bezczynne, funkcja wywołania zwrotnego EvtDriverDeviceAdd w właścicielu zasad zasilania musi wykonać następujące dwa kroki:
Wywołaj WdfDeviceAssignS0IdleSettings, aby określić:
- Stan niskiego zasilania, który zostanie wprowadzony przez urządzenie
- Czas, przez jaki urządzenie #B0 musi pozostać bezczynne #C1, zanim jego stan zasilania zostanie obniżony
- Czy urządzenie może wykryć zdarzenie zewnętrzne i wyzwolić sygnał wznawiania na magistrali
- Czy użytkownicy mogą kontrolować ustawienia bezczynności urządzenia
- Czy funkcja wyłączania zasilania podczas bezczynności urządzenia jest włączona, czy wyłączona
- Czy urządzenie powróci do stanu pracy (D0), gdy system powróci do stanu roboczego (S0)
- Czy wartość limitu czasu bezczynności dla urządzenia jest określana przez strukturę zarządzania energią (PoFx)
- Czy platforma może umieścić urządzenie w stanie zasilania D3cold po wygaśnięciu okresu bezczynności
Aby uzyskać więcej informacji na temat tych ustawień, zapoznaj się ze strukturą WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS, a także z obsługą funkcjonalnych stanów zasilania.
Wywołaj WdfDeviceInitSetPowerPolicyEventCallbacks, aby, jeśli są potrzebne dla twojego urządzenia, zarejestrować następujące funkcje zwrotne wywołań zdarzeń:
- #B0 #A1 EvtDeviceArmWakeFromS0 #A2 #A3 , co umożliwia sprzętowi urządzenia (a nie magistrali) reagowanie na zewnętrzny sygnał wybudzający
- Funkcja EvtDeviceDisarmWakeFromS0, która wyłącza zdolność urządzenia (a nie zdolność szyny) do reagowania na zewnętrzne zdarzenie wybudzenia.
- #B0 #A1 EvtDeviceWakeFromS0Triggered #A2 #A3 , który informuje kierowcę, że autobus wykrył sygnał wznawiania.
Warunki bezczynności
Platforma uważa, że urządzenie jest bezczynne i rozpoczyna liczenie czasu bezczynności, gdy spełnione są wszystkie następujące warunki:
- Żadna z kolejek zarządzanych energią, utworzonych dla tego wystąpienia urządzenia, nie ma żadnych żądań oczekujących w kolejce ani wysłanych do sterownika. Jeśli żądanie zostało wysłane do sterownika, a sterownik wysłał je do docelowego obiektu I/O, żądanie jest nadal powiązane z kolejką. Urządzenie nie zostanie uznane za bezczynne, chyba że sterownik użył opcji wyślij i zapomnij, aby wysłać żądanie. Żądania w kolejkach niezarządzanych przez zasilanie nie są liczone przy obliczaniu bezczynności urządzenia.
- Jeśli sterownik wcześniej wywołał WdfDeviceStopIdle, to następnie wywołał WdfDeviceResumeIdle.
- Jeśli właściciel polityki zasilania jest kierowcą magistrali, żadne z urządzeń podrzędnych kierowcy magistrali nie znajduje się w D0.
Jeśli twój sterownik (lub użytkownik) włącza automatyczne wyłączanie przy bezczynności dla urządzenia, może być konieczne skorzystanie z metody WdfDeviceStopIdle. Jeśli urządzenie jest w stanie roboczym (D0), ta metoda zapobiega przejściu urządzenia w stan bezczynności, dopóki sterownik nie wywoła WdfDeviceResumeIdle. Jeśli urządzenie jest w stanie niskiego zasilania, gdy sterownik wywołuje WdfDeviceStopIdle, a system jest w stanie pracy (S0), strukturą prosi sterownik magistrali o przywrócenie urządzenia do stanu pracy (D0). Każde pomyślne wywołanie WdfDeviceStopIdle musi być odpowiadać wywołaniu WdfDeviceResumeIdle. Aby uzyskać informacje na temat wyświetlania liczby referencji zasilania w debugerze, zobacz Debugowanie przecieków referencji zasilania w WDF.
Aby uzyskać więcej informacji o tym, kiedy sterownik może musieć wywołać WdfDeviceStopIdle, zobacz stronę z dokumentacją metody.
Jeśli urządzenie może wznawiać się ze stanu niskiego zasilania, sterownik magistrali urządzenia uczestniczy w przebudzeniu urządzenia. Sterownik magistrali zazwyczaj zapewnia funkcje wywołania zwrotnego EvtDeviceEnableWakeAtBus i EvtDeviceDisableWakeAtBus. Te funkcje robią wszystko, co jest niezbędne na adapterze magistrali, aby włączyć i wyłączyć możliwość budzenia urządzenia ze stanu niskiego zużycia energii.
Aby uzyskać informacje na temat wpisów rejestru, które kontrolują możliwości bezczynności urządzenia, zobacz Kontrola użytkownika nad bezczynnością urządzenia i zachowaniem w stanie wznawiania.