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.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database