SystemEvents.PowerModeChanged is not raised on suspend/resume on Surface Pro
- 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
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