SystemEvents.PowerModeChanged is not raised on suspend/resume on Surface Pro
- Lenguaje dominante
- C#
- Estrellas
- 18.3k
- Forks
- 5.6k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
### 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
Guía de contribución
Línea de trabajo
Empieza rastreando la implementación de SystemEvents.PowerModeChanged y cómo gestiona WM_POWERBROADCAST. Compara ese flujo con PowerRegisterSuspendResumeNotification y, a continuación, ejecuta la reproducción proporcionada en un Surface Pro. Se considera terminado cuando el evento informa de Suspend durante la suspensión y la reanudación sin introducir regresiones en el comportamiento de escritorio.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- csharp
- Área
- desktop, operating-systems
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100