通知应用程序设备或计算机的硬件配置发生更改。
窗口通过其 WindowProc 函数接收此消息。
LRESULT CALLBACK WindowProc(HWND   hwnd,     // handle to window
                            UINT   uMsg,     // WM_DEVICECHANGE
                            WPARAM wParam,   // device-change event
                            LPARAM lParam ); // event-specific data
参数
 - 
              hwnd 
- 
窗口的句柄。 
- 
              uMsg 
- 
              WM_DEVICECHANGE标识符。 
- 
              wParam 
- 
发生的事件。 此参数可以是 Dbt.h 头文件中的以下值之一。 
| 值 | 含义 |  
| DBT_DEVNODES_CHANGED0x0007
 | 设备已添加到系统或从系统中删除。 |  
| DBT_QUERYCHANGECONFIG0x0017
 | 请求权限以更改当前配置 (停靠或取消停靠) 。 |  
| DBT_CONFIGCHANGED0x0018
 | 由于停靠或取消停靠,当前配置已更改。 |  
| DBT_CONFIGCHANGECANCELED0x0019
 | 已取消更改当前配置 (停靠或取消停靠) 的请求。 |  
| DBT_DEVICEARRIVAL0x8000
 | 已插入设备或介质片段,现已可用。 |  
| DBT_DEVICEQUERYREMOVE0x8001
 | 请求权限以删除设备或介质。 任何应用程序都可以拒绝此请求并取消删除。 |  
| DBT_DEVICEQUERYREMOVEFAILED0x8002
 | 删除设备或介质的请求已取消。 |  
| DBT_DEVICEREMOVEPENDING0x8003
 | 即将删除设备或介质片段。 不可拒绝。 |  
| DBT_DEVICEREMOVECOMPLETE0x8004
 | 已删除设备或介质片段。 |  
| DBT_DEVICETYPESPECIFIC0x8005
 | 发生了特定于设备的事件。 |  
| DBT_CUSTOMEVENT0x8006
 | 发生了自定义事件。 |  
| DBT_USERDEFINED0xFFFF
 | 此消息的含义是用户定义的。 |  
 
- 
              lParam 
- 
指向包含特定于事件的数据的结构的指针。 其格式取决于 wParam 参数的值。 有关详细信息,请参阅每个事件的文档。 
返回值
返回 TRUE 以授予请求。
返回 拒绝请求BROADCAST_QUERY_DENY 。
对于提供软件可控制功能(如弹出和锁定)的设备,系统通常会发送 DBT_DEVICEREMOVEPENDING 消息,让应用程序和设备驱动程序正常结束对设备的使用。 如果系统强行删除设备,则它可能不会在这样做之前发送 DBT_DEVICEQUERYREMOVE 消息。
要求
| 要求 | 值 | 
| 最低受支持的客户端 | Windows XP | 
| 最低受支持的服务器 | Windows Server 2003 | 
| 标头 |  Winuser.h (包括 Windows.h 或 Dbt.h)  | 
另请参阅
 - 
              DBT_CONFIGCHANGECANCELED 
- 
              DBT_CONFIGCHANGED 
- 
              DBT_CUSTOMEVENT 
- 
              DBT_DEVICEARRIVAL 
- 
              DBT_DEVICEQUERYREMOVE 
- 
              DBT_DEVICEQUERYREMOVEFAILED 
- 
              DBT_DEVICEREMOVECOMPLETE 
- 
              DBT_DEVICEREMOVEPENDING 
- 
              DBT_DEVICETYPESPECIFIC 
- 
              DBT_DEVNODES_CHANGED 
- 
              DBT_QUERYCHANGECONFIG 
- 
              DBT_USERDEFINED