Это довольно общий вопрос, касающийся программирования Windows:
Являются ли сообщения Windows "надежными"?
Для пример (это всего лишь примеры ):
Можете ли вы быть уверенным , что WM_MOUSEMOVE
произойдет до того, как курсор появится на вашем экране?
Можете ли вы быть уверенными , что вы получите сообщение WM_DEVICECHANGE
, если устройство вставлено?
Можете ли вы быть уверенными , чтоВы получите сообщение WM_KILLFOCUS
, если ваше окно потеряет фокус?
Или, другими словами: Можете ли вы быть уверенным , что получите соответствующее сообщениев соответствующее время, или вам всегда нужно защищаться, если каким-то образом вы можете пропустить сообщение без явно задокументированной причины?
Пример:
гарантировано (AFAIK), что драйвер фильтра файловой системы не "пропустит" файловую операцию или не изменитсяification.
В отличие от этого, не гарантирует, что ReadDirectoryChangesW не пропустит уведомление.На самом деле, он может пропустить немало, если его буфер переполнится.
Примечание:
Я не говорю о ситуации с противником(например, кто-то угоняет вашу оконную процедуру или устанавливает крюк / фильтр);это в значительной степени аннулирует любую гарантию.Я спрашиваю только о непонятных ситуациях, которые действительно могут произойти, даже если никто намеренно не имел в виду ничего плохого, например, случайное переполнение буфера, если кто-то использует SendInput
и т. Д. , предполагая, что у вас есть контроль над собственным кодом .