WM_DEVICECHANGE    
The
WM_DEVICECHANGE device message notifies an application or device driver of a
change to the hardware configuration of a device or the computer.
Event = (UINT) wParam;
dwData = (DWORD) lParam;
 
Parameters
Event
Event type.
This parameter can be one of the following values:
| Value | Meaning | 
| DBT_CONFIGCHANGECANCELED  | A request
  to change the current configuration (dock or undock) has been canceled. | 
| DBT_CONFIGCHANGED | The current
  configuration has changed, due to a dock or undock.  | 
| DBT_DEVICEARRIVAL | A device
  has been inserted and is now available.  | 
| DBT_DEVICEQUERYREMOVE | Permission
  is requested to remove a device. Any application can deny this request and cancel
  the removal. | 
| DBT_DEVICEQUERYREMOVEFAILED | A request
  to remove a device has been canceled. | 
| DBT_DEVICEREMOVECOMPLETE | A device
  has been removed. | 
| DBT_DEVICEREMOVEPENDING | A device is
  about to be removed. Cannot be denied. | 
| DBT_DEVICETYPESPECIFIC | A
  device-specific event has occurred. | 
| DBT_QUERYCHANGECONFIG  | Permission
  is requested to change the current configuration (dock or undock).  | 
| DBT_USERDEFINED  | The meaning
  of this message is user-defined. | 
dwData
Address of a
structure that contains event-specific data. Its meaning depends on the given
event.
Return Values
Return TRUE
to grant a requested action.
Return
QUERY_BROADCAST_DENY to deny a requested action.
Remarks
For devices
that offer software-controllable features, such as ejection and locking, the
operating system typically sends a DBT_DEVICEREMOVEPENDING message to let
applications and device drivers end their use of the device gracefully. 
If the
operating system forcibly removes a device, it may not send a
DBT_DEVICEQUERYREMOVE message before doing so.
DBT_CONFIGCHANGECANCELED, DBT_CONFIGCHANGED, DBT_DEVICEARRIVAL4IS8ZQ, DBT_DEVICEQUERYREMOVE, DBT_DEVICEQUERYREMOVEFAILED, DBT_DEVICEREMOVECOMPLETE, DBT_DEVICEREMOVEPENDING, DBT_DEVICETYPESPECIFIC, DBT_QUERYCHANGECONFIG, DBT_USERDEFINED