dotnet / dotnet/runtime

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

Ouverte
#123,773 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
area-Microsoft.Win32 bug help wanted
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.