C28648
advertencia C28648: PulseEvent es una función no confiable
Un subproceso que espera en un objeto de sincronización se puede quitar momentáneamente del estado de espera mediante un APC en modo kernel y, a continuación, volver al estado de espera una vez completado el APC. Si la llamada a PulseEvent se produce durante el período en el que se quitó el subproceso del estado de espera, el subproceso no se liberará y se "bloqueará" para siempre. Esto se debe a que PulseEvent libera solo los subprocesos que están esperando en el momento en que se llama.
Algunas de las formas de corregir el uso de PulseEvent:
Si solo uno de los subprocesos que esperan en el evento debe liberarse Y el evento es un evento de restablecimiento manual, cámbielo a un evento de restablecimiento automático y llame a SetEvent en lugar de PulseEvent.
Si solo uno de los subprocesos que esperan en el evento debe liberarse Y el evento es un evento de restablecimiento automático, llame a SetEvent en lugar de PulseEvent.
Si todos los subprocesos que esperan el evento deben liberarse Y el evento es un evento de restablecimiento manual, rediseñe el código para usar un tipo diferente de objeto de sincronización (como un semáforo).
Si todos los subprocesos que esperan el evento deben liberarse Y el evento es un evento de restablecimiento automático, llame a SetEvent en lugar de PulseEvent (la llamada original a PulseEvent estaba liberando solo un subproceso).