Трансляция сообщений


Каждые сообщение состоит из  кода сообщения и двух параметров, wParam и lParam. Код сообщения - это уникальное значение, которое устанавливает предназначение сообщения. Параметры обеспечивают дополнительную информацию, которая является конкретной для сообщения, но параметр wParam  - обычно типовое значение, которое предоставляет подробную информацию о сообщении.

Трансляционное сообщение (message broadcast) - просто отправка сообщения многочисленным получателям его в системе. Чтобы транслировать сообщение из приложения, используйте функцию BroadcastSystemMessage, определяя получателей сообщения. Вместо того, чтобы задавать конкретных  получателей сообщения, Вы должны установить один или несколько типов получателей сообщения. Эти типы являются приложениями, устанавливаемыми драйверами, сетевыми драйверами, и драйверами устройств системного уровня. Система отправляет транслируемые сообщения всем членам каждого указанного типа.

Система обычно транслирует сообщения в ответ на изменения, которые происходят внутри драйверов устройств системного уровня или связанных с ним компонентов. Драйвер или родственный ему компонент транслируют сообщение приложениям и другим компонентам, чтобы уведомить их об изменениях. Например, компонент, ответственный за дисководы транслирует сообщение всякий раз, когда драйвер  дисковода гибких магнитных дисков обнаруживает изменение информации такое как, когда пользователь вставляет диск в устройство.

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

Вы можете также транслировать сообщения  всем окнам верхнего уровня, определяя флажок HWND_BROADCAST в функции SendMessage, SendMessageCallback, SendMessageTimeout или  SendNotifyMessage.

Приложения получают сообщения через оконную процедуру своих окон верхнего уровня. Сообщения дочерним окнам не отправляются. Сервисы (серверные процессы) могут получить сообщения через оконную процедуру или через свои обработчики управления сервисом.

Обратите внимание! на то, что драйверы устройств системного уровня используют связанные с ним функции системного уровня, чтобы транслировать системные сообщения.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz