C28648
предупреждение C28648: PulseEvent является ненадежной функцией
Поток, ожидающий объекта синхронизации, можно на мгновение удалить из состояния ожидания с помощью APC в режиме ядра, а затем вернуться в состояние ожидания после завершения APC. Если вызов PulseEvent происходит в период, когда поток был удален из состояния ожидания, поток не будет освобожден и будет "зависать" навсегда. Это связано с тем, что PulseEvent освобождает только те потоки, которые ожидают на данный момент вызова.
Некоторые способы исправления использования PulseEvent:
Если требуется освободить только один из потоков, ожидающих события, и событие является событием сброса вручную, измените его на событие автоматического сброса и вызовите SetEvent вместо PulseEvent.
Если требуется освободить только один из потоков, ожидающих события, и событие является событием автоматического сброса, вызовите SetEvent вместо PulseEvent.
Если все потоки, ожидающие события, должны быть освобождены и событие является событием сброса вручную, измените код для использования другого типа объекта синхронизации (например, семафора).
Если все потоки, ожидающие события, должны быть освобождены и событие является событием автоматического сброса, вызовите SetEvent вместо PulseEvent (исходный вызов PulseEvent в любом случае выпускал только один поток).