SystemEvents.PowerModeChanged is not raised on suspend/resume on Surface Pro
- Langage dominant
- C#
- Étoiles
- 18.3k
- Forks
- 5.6k
- Métriques de merge des PR
- Métriques de PR en attente
Description
### 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
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par suivre l’implémentation de SystemEvents.PowerModeChanged et la manière dont elle traite WM_POWERBROADCAST. Comparez ce chemin avec PowerRegisterSuspendResumeNotification, puis exécutez la reproduction fournie sur un Surface Pro. Le travail est terminé lorsque l’événement signale Suspend pendant la mise en veille et la reprise, sans régression du comportement sur ordinateur de bureau.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- csharp
- Domaine
- desktop, operating-systems
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100