Desktopaktivitätenmoderator

Plattform

Clients – Windows 8

Hinweis

Die SPERRE ist nur auf Windows 8 Clientcomputern vorhanden, die den verbundenen Standbymodus unterstützen. DIE -DATEI ist auf Server-SKUs nicht vorhanden.

Hinweis

Windows Store Apps, die für Windows 8 erstellt wurden, sind nicht von der Sperre der -App(en) in Der -App-Sperre (- oder -App)-App nicht von der -App-App(en) in

Beschreibung

Unsere Kunden entwickeln sich in Richtung einfacherer, kleinerer, mobiler Plattformen, um ihre Computinganforderungen zu erfüllen. Im Rahmen der Umstellung auf mobile Geräte machen sich Benutzer zunehmend Sorgen über die Akkulaufzeit ihrer Geräte. Desktop Activity Moderator (CS) ist eines von mehreren neuen Features in Windows 8, um eine konsistente, lange Akkulaufzeit für Geräte zu gewährleisten, die den verbundenen Standbymodus unterstützen.

Der verbundene Standbymodus tritt auf, wenn das Gerät eingeschaltet ist, der Bildschirm jedoch ausgeschaltet ist. In diesem Energiezustand ist das System technisch gesehen immer "ein" (um wichtige Szenarien wie E-Mail, VoIP, soziale Netzwerke und Instant Messaging mit Windows Store unterstützen). Dies entspricht dem Zustand, in dem sich ein Smartphone befindet, wenn der Benutzer den Netzschalter drückt.

Daher muss sich Software (einschließlich Apps und Betriebssystemsoftware) während des verbundenen Standbymodus gut verhalten. DIE -Datei wurde erstellt, um die Ausführung von Desktop-Apps auf ähnliche Weise wie beim Sleep-Zustand (S3 auf ACPI-Geräten) zu unterdrücken. Hierzu werden Desktopsoftwareprozesse im gesamten System bei einem verbundenen Standbyeintrag angehalten oder gedrosselt. Dies ermöglicht Systemen, die den verbundenen Standbymodus unterstützen, eine minimierte Ressourcennutzung und eine lange, konsistente Akkulebensdauer, während Windows Store-Apps die von ihnen garantierten verbundenen Erfahrungen bieten können.

Details

Das PROGRAMM ist ein Kernelmodustreiber, der beim Systemstart geladen und initialisiert wird, wenn das System den verbundenen Standbymodus unterstützt. (Dies wird bestimmt, indem geprüft wird, ob das AOAC-Feld im SYSTEM _ Die _ von CallNtPowerInformation zurückgegebene POWER CAPABILITIES-Struktur ist auf TRUE festgelegt.

Wenn DIE AKTIVIERT ist und Ihr Desktopprozess erstellt wird, fügt das VERFAHREN Ihren Prozess zu vom System verwalteten Auftragsobjekten hinzu:

  • Wenn der Prozess in Sitzung 0 erstellt wurde, fügt DIE den Prozess einem Auftragsobjekt hinzu, für das eine Drosselung gilt.
  • Wenn der Prozess in einer interaktiven Sitzung (Sitzung 1 oder höher) erstellt wurde, fügt DIE den Prozess einem Auftragsobjekt hinzu, das einer Unterbrechung unterliegt.

Hinweis

Für Windows 8 können Auftragsobjekte geschachtelt werden. Dies bedeutet, dass die Verwendung von Auftragsobjekten durch die VERWENDUNG von AUFTRAGS-Objekten nicht die vorhandene Verwendung von Auftragsobjekten durch eine App beeinträchtigt.

Wenn der Bildschirm ein-/aus ist, wird das SYSTEM nicht mehr angezeigt und wirkt sich nicht auf Prozesse im System aus. Wenn sich das System im verbundenen Standbymodus befindet, drosselt ODER unter Umständen prozesse, je nach Aktivität im System.

  • Bei Prozessen, die angehalten werden, werden alle Threads angehalten (die Ausführung ist unter keinen Umständen zulässig). App-Zustand (Prozessspeicher) wird beibehalten
  • Prozesse, für die ein Drosselungszyklus zwischen angehalten und ungeöffnet ist (ein großteil der Zeit wird im Angehalten-Zustand verbracht)
    • Beachten Sie, Windows auch erkennen kann, dass kritische Aktivitäten auftreten und gedrosselte Dienste für längere Zeiträume während dieser Aktivität nicht mehr zur Verfügung stehen.
    • Beachten Sie auch, dass sensoren und netzwerke im verbundenen Standbymodus möglicherweise nicht verfügbar sind, daher sollten gedrosselte Prozesse so entworfen werden, dass sie gegen schlechte Netzwerkbedingungen resilient sind (für die meisten Prozesse sind keine Änderungen erforderlich).

Wenn die SUSPEND-Unterbrechung ein- oder ausgeschaltet wird, löst DIE die Übermittlung einer WM POWERBROADCAST-Nachricht an prozesse aus, für die eine Unterbrechung erfolgt ist, die sich für die Nachrichtenbereitstellung angemeldet hat (über API-Aufruf oder Kompatibilitätss shim, wie weiter unten _ beschrieben). Nach einigen Sekunden Verzögerung wird der Prozess von SUSPEND angehalten.

Es gibt keine Benachrichtigungen, wenn DIE Drosselung aktiv oder nicht mehr aktiv ist. Prozesse sollten nicht geändert werden müssen. -Prozesse funktionieren weiterhin, obwohl sie langsamer sind.

Manifestation

Prozesse werden während des verbundenen Standbyzustands häufig angehalten oder gedrosselt. Für die meisten angehaltenen Apps sollte dies einem S3-Übergang zum Aussetzen/Fortsetzen oder S4-Ruhezustand/Fortsetzen sehr ähnlich sein. Zu den Inkonsistenzen in der Betriebszeit/Laufzeit im Vergleich zur Wanduhrzeit, Inkonsistenzen im Timerverhalten oder drastische Änderungen des Betriebssystemzustands vor und nach Abschluss der Suspendierung zählen u. a. diese.

Die Unterbrechung und Drosselung erfolgt als Einheit (alle angehaltenen Prozesse werden angehalten und nicht im Gleichklang aufgehoben, und alle Prozesse, die gedrosselt werden können, werden gedrosselt und ungedrosselt), sodass die Kommunikation zwischen zwei angehaltenen Prozessen oder zwei gedrosselten Prozessen kein Problem darstellt.

Software, die auf prozessübergreifender Kommunikation basiert, muss möglicherweise besonders berücksichtigt werden:

  • Kommunikation zwischen Prozessen in Sitzung 0 (gedrosselt) und Sitzung 1+ (angehalten): Beispiele hierfür sind Taskleistensymbole oder Benutzeroberflächenkomponenten, die den aktuellen Dienststatus darstellen.
  • Kommunikation zwischen Komponenten im Benutzermodus (Sitzung 0 oder 1) und Treibern (die weder gedrosselt noch angehalten werden) – Beispiele hierfür sind Dienste, die im Auftrag eines Treibers funktionieren.

Wenn die prozessübergreifende Kommunikation in diesen Fällen nicht ordnungsgemäß verarbeitet wird, können Apps hängen bleiben oder nicht reagieren (obwohl der Benutzer diese Auswirkung möglicherweise nicht direkt sieht, da der Bildschirm im verbundenen Standbymodus deaktiviert ist). In den meisten Fällen sollten Dienste und Treiber jedoch bereits entwickelt werden, um gegenüber prozessübergreifenden Kommunikationsproblemen stabil zu sein.

Anbieter, die Software für das Web erstellen oder von diesem abhängig sind, sollten berücksichtigen, wie sich die Prozessaussetzung auf die Verbindungslebensdauer und den Handshakes auswirken kann. Darüber hinaus sollten Entwickler von Prozessen, die in Sitzung 0 erstellt wurden, besonders wissen, wie sich zeitweilige Netzwerkverbindungen auf den Prozess auswirken, da die Netzwerkkonnektivität im Modus "Verbundener Standbymodus" möglicherweise nicht verfügbar ist.

Lösung

Windows Store Apps sind nicht von DER -APP-A-A-A -App(en) in Der -App-2016-App-App nicht von Wenn Ihre Desktop-App von der SPERR-Anforderungsanforderung (REQUEST) abhängt, können Sie Benachrichtigungen anfordern, bevor die Unterbrechung durchgeführt wird (z. B. um den Zustand zu speichern oder Netzwerkverbindungen zu schließen). Verwenden Sie dazu eine der folgenden Methoden:

  • Wenn Ihre App über ein Fenster (HWND) verfügt und Sie diese Benachrichtigungen über Ihre Fensterprozedur behandeln möchten, rufen Sie RegisterSuspendResumeNotification auf, um sich für diese Nachrichten zu registrieren (oder UnregisterSuspendResumeNotification, um die Registrierung zu aufheben). Sie können DEVICE NOTIFY WINDOW HANDLE im Flags-Parameter verwenden und das _ _ _ HWND Ihres Fensters als Recipient-Parameter übergeben. Die empfangene Nachricht ist die WM _ POWERBROADCAST-Nachricht.
  • Wenn Ihre App über kein Fenster (HWND) verfügt oder Sie einen direkten Rückruf wünschen, rufen Sie PowerRegisterSuspendResumeNotification auf, um sich für diese Nachrichten zu registrieren (oder PowerUnregisterSuspendResumeNotification, um die Registrierung zu aufheben). Sie müssen DEVICE NOTIFY CALLBACK im Flags-Parameter verwenden und einen Wert vom Typ _ _ PDEVICE _ NOTIFY SUBSCRIBE PARAMETERS im Parameter Recipient _ _ übergeben.
  • Wenn Ihre App nicht neu kompiliert werden kann, können Sie diese WM POWERBROADCAST-Nachrichten über das _ AppCompat-Toolkit (mit dem PromoteLIZ-Shim) empfangen.

Die Suspend-Nachricht ist WM _ POWERBROADCAST mit wParam=PBT APMSUSPEND. Diese Nachricht wird gleichzeitig an alle im System angemeldeten Prozesse _ gesendet. Ihre App muss alle Aufgaben im Suspend-Pfad schnell und effizient ausführen. Das Timeout nach der Übertragungsbenachrichtigung ist global und nicht pro Prozess, sodass Ihr Prozess möglicherweise um Systemressourcen konkurrieren kann, wenn die in diesem Pfad erforderliche Arbeit umfangreich ist.

Die Fortsetzungsnachricht ist WM _ POWERBROADCAST mit wParam=PBT APMRESUME. Diese Nachricht wird nach einer Wiederaufnahme gleichzeitig an alle angemeldeten _ Prozesse gesendet. Die relative Übermittlungszeit für das Beenden des Systems aus dem verbundenen Standbymodus ist nicht garantiert.

Bei kamerabezogenen Anwendungen müssen Anwendungen beim Übergang des Energiezustands während der Unterbrechungsbenachrichtigung alle Verweise auf die Kamera veröffentlichen (alle Aufnahmepipelineobjekte müssen heruntergefahren und verworfen werden). Um einen möglichen Akkustand zu vermeiden, schließt Windows-Kamera Frame Server-Dienst auf Windows 10 RS3+-Systemen alle Erfassungssitzungen, wenn die Anwendung die Unterbrechungsbenachrichtigung nicht ordnungsgemäß verarbeitet. Dies hat den Nebeneffekt, dass sich die Erfassungspipeline der Anwendung nicht mehr in einem funktionierenden Zustand befindet, wenn das System aus dem Standby- oder S3/S4-Zustand herauskommt.

Tests

Testen Sie Ihre Software über Übergänge im verbundenen Standbymodus.

Ressourcen