|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Device Messages and Device Change Events
Device messages are system messages that notify applications and other components of device change events. These events occur whenever the system detects a change to the system hardware such as when the user docks or undocks a laptop computer, or inserts or removes a device such as a PCMCIA card. Change events can occur while the system is running or when the system resumes operation after temporarily being suspended.
To help ensure that applications and installable drivers do not lose data when devices become unavailable, the operating system monitors the hardware configuration and sends device message to the applications and installable drivers to notify them of the changes and to give them the opportunity to prepare for the changes before they occur. For each event, the system broadcasts a WM_DEVICECHANGE message to all applications and installable drivers. In this message, the wParam parameter identifies the event type and the lParam parameter is usually the address of event-specific data.
The event-specific data identifies the device and provides additional detail about the event. The format of this data depends on the device type, but the first few bytes always has the same format as the DEV_BROADCAST_HDR structure. This means you can always check the dbch_devicetype member in the data to determine the device type. The system sends a DBT_DEVICEARRIVAL message (that is, a WM_DEVICECHANGE message with wParam set to DBT_DEVICEARRIVAL) whenever a device has been inserted and is available for use. Applications typically check the device type and begin using the device immediately if appropriate.
The system sends a DBT_DEVICEQUERYREMOVE message to request permission to remove a device. If an application determines that it needs the device, it can deny this request and cancel the removal by returning BROADCAST_QUERY_DENY. To determine whether it needs the device, an application can display a dialog box to prompt the user for instructions. If the application does not need the device, it must return TRUE. The system immediately sends a DBT_DEVICEQUERYREMOVEFAILED message if any application or driver canceled a previous request to remove a device.
The system sends a DBT_DEVICEREMOVEPENDING message as a last warning before a device is removed. At this point, the application cannot cancel the removal, so if it is using the device it must prepare for its removal to prevent loss of data. This is especially important when a network connection is being removed. The application must determine whether any of its open files or pipes are on that connection. It can do this by comparing the network resource identifier in the event-specific data of the message with the resource identifiers previously obtained for the files and pipes. The system sends a DBT_DEVICEREMOVECOMPLETE message when a device has been removed and is no longer available.
The system sends a DBT_QUERYCHANGECONFIG message to request permission to change the current configuration (dock or undock). Any application can return BROADCAST_QUERY_DENY to deny the request and cancel the change. If an application denies the request, the system sends a DBT_CONFIGCHANGECANCELED message. If the current configuration has changed, due to a dock or undock, the system sends a DBT_CONFIGCHANGED message. The system sends DBT_DEVICETYPESPECIFIC message whenever a device-specific event occurs.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Сообщения Устройства и Устройства Изменяют События
Сообщения Устройства являются системными сообщениями, которые уведомляют приложения и другие компоненты о событиях изменения устройства. Эти события происходят всякий раз, когда система обнаруживает изменение в системные аппаратные средства как например, когда потребитель причаливает или undocks компьютер laptop или включает или удаляет устройство как например, карта PCMCIA. События Изменения могут произойти пока система выполняет или когда система продолжает действие после временно приостановленное.
Для того, чтобы помогать проверять, что приложения и installable драйверы не терять данные когда устройства становятся недоступно, операционная система проверяет конфигурацию аппаратных средств и посылает устройству сообщение в приложения и installable драйверы, чтобы уведомлять их об изменениях и, чтобы давать им возможность готовиться к изменениям прежде, чем они произойдут. Для каждого события, система транслирует сообщению WM_DEVICECHANGE во все приложения и installable драйверы. В этом сообщении, параметр wParam идентифицирует тип события и параметр lParam является обычно адресом событие-специфических данных.
Событие-специфические данные идентифицирует устройство и обеспечивает дополнительную деталь о событии. Формат этих данных зависит от типа устройства, но первых несколько байтов всегда имеет тот же формат как структура DEV_BROADCAST_HDR. Это означает, что Вы можете всегда проверить dbch_devicetype элемент в данных, чтобы определять тип устройства. Система посылает сообщение DBT_DEVICEARRIVAL (то есть, сообщение WM_DEVICECHANGE с wParam было установлено на DBT_DEVICEARRIVAL) всякий раз, когда устройство включено и доступно для использования. Приложения обычно проверяют тип устройства и начинают использовать устройство немедленно если подходящий.
Система посылает сообщение DBT_DEVICEQUERYREMOVE, чтобы запрашивать разрешение удалять устройство. Если приложение определяет это, ему нужно устройство, это может запретить этот запрос и отменять удаление возвращав BROADCAST_QUERY_DENY. Чтобы определять независимо ему нужно устройство, приложение может отобразить диалогового блока, чтобы подсказывать пользователя для инструкций. Если приложение не нужно устройство, это должно возвращать ИСТИНУ. Система немедленно посылает сообщение DBT_DEVICEQUERYREMOVEFAILED если любое приложение или драйвер отменял бы предшествующий запрос, чтобы удалять устройство.
Система посылает сообщение DBT_DEVICEREMOVEPENDING как последнее предупреждение прежде, чем устройство будет удалено. В этой точке, приложение не может отменить удаление, так что если это использует устройство, которое он должен приготовиться к своему удалению, чтобы предохранять убыток данных. Особенно важно когда сетевая связь удаляется. Приложение должно определить независимо любой из своих открытых файлов или трубы находятся на этой связи. Это может сделать с помощью сравнения сетевого идентификатора ресурса в событие-специфических данных сообщения с идентификаторами ресурса прежде полученными для файлов и труб. Система посылает сообщение DBT_DEVICEREMOVECOMPLETE когда устройство удалено и - больше не поставляетсяся.
Система посылает сообщение DBT_QUERYCHANGECONFIG, чтобы запрашивать разрешение изменять текущую конфигурацию (док или undock). Любое приложение может возвращать BROADCAST_QUERY_DENY, чтобы запрещать запрос и отменять изменение. Если приложение запрещит запрос, система посылает сообщение DBT_CONFIGCHANGECANCELED. Если текущая конфигурация изменила бы, из-за дока или undock, система посылает сообщение DBT_CONFIGCHANGED. Система посылает сообщение DBT_DEVICETYPESPECIFIC всякий раз, когда зависящее от устройства событие происходит.
|
|
|
|
| |