设备消息和设备更改事件

【勇芳软件工作室】汉化HomePreviousNext

设备消息是通知应用程序和其他组件设备更改事件的系统消息。当系统检测到对系统硬件的更改(例如用户停靠或取消停靠膝上型计算机)或插入或移除诸如PCMCIA卡的设备时,会发生这些事件。更改事件可能会在系统运行或系统暂时暂停后恢复运行时发生。

为了帮助确保应用程序和可安装的驱动程序在设备变得不可用时不会丢失数据,操作系统会监视硬件配置并向应用程序和可安装的驱动程序发送设备消息,以通知他们这些更改,并为他们提供准备发生之前发生变化。

对于每个事件,系统向所有应用程序和可安装驱动程序广播WM_DEVICECHANGE消息。在此消息中,【wParam中】参数标识事件类型,【lParam的】参数通常是事件特定数据的地址。

事件特定数据标识设备并提供有关事件的其他详细信息。此数据的格式取决于设备类型,但前几个字节总是与DEV_BROADCAST_HDR结构格式相同。这意味着您可以随时检查数据中的dbch_devicetypecebceb成员以确定设备类型。

无论何时插入设备并可以使用,系统都会发送一条DBT_DEVICEARRIVAL消息(即,一个具有【wParam中】设置为DBT_DEVICEARRIVAL的WM_DEVICECHANGE消息)。应用程序通常检查设备类型,并在适当时立即开始使用设备。

系统发送DBT_DEVICEQUERYREMOVE消息以请求删除设备的权限。如果应用程序确定需要该设备,则可以拒绝此请求,并通过返回BROADCAST_QUERY_DENY取消删除。要确定是否需要该设备,应用程序可以显示一个对话框以提示用户指示。如果应用程序不需要该设备,则必须返回TRUE。如果任何应用程序或驱动程序取消先前的删除设备请求,系统立即发送DBT_DEVICEQUERYREMOVEFAILED消息。

在删除设备之前,系统会发送DBT_DEVICEREMOVEPENDING消息作为最后一个警告。此时,应用程序无法取消删除,因此如果使用该设备,则必须准备其删除以防止丢失数据。当网络连接被删除时,这尤其重要。应用程序必须确定其打开的文件或管道是否在该连接上。它可以通过将消息的事件特定数据中的网络资源标识符与先前为文件和管道获得的资源标识进行比较来实现。当设备已被删除并且不再可用时,系统发送DBT_DEVICEREMOVECOMPLETE消息。

系统发送DBT_QUERYCHANGECONFIG消息以请求更改当前配置的权限(停靠或停用)。任何应用程序都可以返回BROADCAST_QUERY_DENY以拒绝该请求并取消更改。如果应用程序拒绝该请求,则系统发送DBT_CONFIGCHANGECANCELED消息。如果当前配置已更改,由于停靠或停靠,系统将发送DBT_CONFIGCHANGED消息。

每当发生设备特定事件时,系统发送DBT_DEVICETYPESPECIFIC消息。