"Надежны ли оконные сообщения"?

Это в некоторой степени общий вопрос, касающийся программирования Windows:

Являются ли сообщения Windows «надежными»?

Для пример (это только примеры ):

  • Можете ли вы быть уверены в том, что WM_MOUSEMOVE произойдет до того, как курсор появится на вашем экране?

  • Можете ли вы быть уверены , что получите сообщение WM_DEVICECHANGE , если устройство вставлено?

  • Можете ли вы быть уверены в том, что получите сообщение Сообщение WM_KILLFOCUS , если ваше окно теряет фокус?

Или, другими словами: можете ли вы быть уверены , что получите соответствующее сообщение в нужное время, или вы всегда придется использовать защитный код на случай, если каким-то образом вы можете пропустить сообщение без явно документированной причины?


Пример:

  • Это гарантия ed (AFAIK), что драйвер фильтра файловой системы не «пропустит» файловую операцию или уведомление об изменении.

  • Напротив, не гарантировано, что ReadDirectoryChangesW будет не пропустите уведомление. Фактически, он может пропустить довольно много, если его буфер переполнен.

Примечание:

Я не говорю о ситуации против злоумышленника (например, кто-то захватывает вашу оконную процедуру или устанавливает ловушку / фильтр); это в значительной степени аннулирует любую гарантию. Я спрашиваю только о непонятных ситуациях, которые действительно могут произойти, даже если никто не имел в виду ничего плохого намеренно, например, если какое-то случайное переполнение буфера, если кто-то использует SendInput и т. Д., при условии, что вы контролируете ваш собственный код .

5
задан Mehrdad 24 May 2011 в 17:50
поделиться