dotnet / dotnet/runtime

SystemEvents.PowerModeChanged is not raised on suspend/resume on Surface Pro

Offen
#123,773 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area-Microsoft.Win32 bug help wanted
Vorherrschende Sprache
C#
Sterne
18.3k
Forks
5.6k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

### Description

When Surface Pro sleeps, the [SystemEvents.PowerModeChanged](https://learn.microsoft.com/en-us/dotnet/api/microsoft.win32.systemevents.powermodechanged) event is not raised

### Reproduction Steps

`SystemEvents.PowerModeChanged += (s, e) => Debug.WriteLine(e.Mode);`

### Expected behavior

Should print `Suspend` on Sleep

### Actual behavior

Prints 'Suspend' on Desktop
No output on Surface Pro

### Regression?

_No response_

### Known Workarounds

Use `PowerRegisterSuspendResumeNotification`

### Configuration

dotnet SDK 10.0.102
Windows 11 (10.0.26200)
x64

### Other information

WM_POWERBROADCAST doesn't work for laptops
https://learn.microsoft.com/en-us/windows/win32/power/wm-powerbroadcast

PowerRegisterSuspendResumeNotification is available on Windows 8+ which works as expected:
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-registersuspendresumenotification

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne damit, die Implementierung von SystemEvents.PowerModeChanged und die Verarbeitung von WM_POWERBROADCAST nachzuverfolgen. Vergleiche diesen Pfad mit PowerRegisterSuspendResumeNotification und führe anschließend die bereitgestellte Reproduktion auf einem Surface Pro aus. Als abgeschlossen gilt die Aufgabe, wenn das Ereignis während des Ruhezustands und beim Fortsetzen Suspend meldet, ohne das Verhalten auf Desktop-Systemen zu beeinträchtigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp
Bereich
desktop, operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.