IoEvent.h) (设备事件
应用程序(包括服务)可以注册以接收设备事件的通知。 例如,目录服务可以收到正在装载或卸载卷的通知,以便可以调整卷上文件的路径。 系统通过向应用程序发送 WM_DEVICECHANGE 消息来通知应用程序发生了设备事件。 系统通过调用服务的事件处理程序函数 HandlerEx,通知服务发生了设备事件。
若要接收设备事件通知,请使用 DEV_BROADCAST_HANDLE 结构调用 RegisterDeviceNotification 函数。 请务必将 dbch_handle 成员设置为从 CreateFile 函数获取的设备句柄。 此外,将 dbch_devicetype 成员设置为 DBT_DEVTYP_HANDLE。 函数返回设备通知句柄。 请注意,这与卷句柄不同。
当应用程序收到通知时,如果事件类型 为DBT_CUSTOMEVENT,则可能已收到 IoEvent.h 中定义的设备事件之一。 若要确定是否发生了其中一个事件,请使用以下步骤。
- 将事件数据视为 DEV_BROADCAST_HDR 结构。 验证 dbch_devicetype 成员是否设置为 DBT_DEVTYP_HANDLE。
- 如果DBT_DEVTYP_HANDLE dbch_devicetype,则事件数据实际上是指向DEV_BROADCAST_HANDLE结构的指针。
- 使用 IsEqualGUID 函数将 dbch_eventguid 成员与下表中列出的 GUID进行比较。
-
GUID_IO_CDROM_EXCLUSIVE_LOCK
-
-
bc56c139-7a10-47ee-a294-4c6a38f0149a
-
CD-ROM 设备已被锁定,以便进行独占访问。
Windows Server 2003 和 Windows XP: 支持此值需要 IMAPI 2.0。 有关详细信息,请参阅 映像主控 API。
-
-
GUID_IO_CDROM_EXCLUSIVE_UNLOCK
-
-
a3b6d27d-5e35-4885-81e5-ee18c00ed779
-
已解锁为独占访问锁定的 CD-ROM 设备。
Windows Server 2003 和 Windows XP: 支持此值需要 IMAPI 2.0。 有关详细信息,请参阅 映像主控 API。
-
-
GUID_IO_DEVICE_BECOMING_READY
-
-
d07433f0-a98e-11d2-917a-00a0c9068ff3
-
媒体启动正在进行中。
-
-
GUID_IO_DEVICE_EXTERNAL_REQUEST
-
-
d07433d0-a98e-11d2-917a-00a0c9068ff3
-
此事件有多种可能的原因;有关详细信息,请参阅 GET EVENT STATUS NOTIFICATION 命令的 T10 MMC 规范。
-
-
GUID_IO_MEDIA_ARRIVAL
-
-
d07433c0-a98e-11d2-917a-00a0c9068ff3
-
已将可移动媒体添加到设备。 dbch_data 成员是指向 CLASS_MEDIA_CHANGE_CONTEXT 结构的指针。 NewState 成员提供状态信息。 例如, MediaUnavailable 的值指示媒体 (不可用,例如,由于) 活动录制会话。
Windowsxp:dbch_data成员是一个 ULONG 值,表示自系统启动以来媒体被更改的次数。
-
-
GUID_IO_MEDIA_EJECT_REQUEST
-
-
d07433d1-a98e-11d2-917a-00a0c9068ff3
-
可移动媒体的驱动器已收到用户的弹出指定槽或介质的请求。
-
-
GUID_IO_MEDIA_REMOVAL
-
-
d07433c1-a98e-11d2-917a-00a0c9068ff3
-
可移动媒体已从设备中删除或不可用。 dbch_data 成员是指向 CLASS_MEDIA_CHANGE_CONTEXT 结构的指针。 NewState 成员提供状态信息。 例如, MediaUnavailable 的值指示媒体 (不可用,例如,由于) 活动录制会话。
Windowsxp:dbch_data成员是一个 ULONG 值,表示自系统启动以来媒体被更改的次数。
-
-
GUID_IO_VOLUME_CHANGE
-
-
7373654a-812a-11d0-bec7-08002be2092f
-
卷标签已更改。
-
-
GUID_IO_VOLUME_CHANGE_SIZE
-
-
3a1625be-ad03-49f1-8ef8-6bbac182d1fd
-
卷上文件系统的大小已更改。
Windows Server 2003 和 Windows XP: 不支持此值。
-
-
GUID_IO_VOLUME_DISMOUNT
-
-
d16a55e8-1059-11d2-8ffd-00a0c9a06d32
-
正在尝试卸载卷。 应关闭卷上文件和目录的所有句柄。 此事件不一定前面有 GUID_IO_VOLUME_LOCK 事件。
-
-
GUID_IO_VOLUME_DISMOUNT_FAILED
-
-
e3c5b178-105d-11d2-8ffd-00a0c9a06d32
-
尝试卸载卷失败。 发生这种情况通常是因为另一个进程无法通过关闭其未完成句柄来响应 GUID_IO_VOLUME_DISMOUNT 通知。 由于卸载失败,因此可以重新打开受影响卷的任何句柄。
-
-
GUID_IO_VOLUME_FVE_STATUS_CHANGE
-
-
062998b2-ee1f-4b6a-b857-e76cbbe9a6da
-
卷的 BitLocker 驱动器加密状态已更改。 当启用或禁用 BitLocker,或者加密开始、结束、暂停或恢复时,将发出此事件的信号。
Windows Server 2003 和 Windows XP: 不支持此值。
-
-
GUID_IO_VOLUME_LOCK
-
-
50708874-c9af-11d1-8fef-00a0c9a06d32
-
另一个进程正在尝试锁定卷。 应关闭卷上文件和目录的所有句柄。
-
-
GUID_IO_VOLUME_LOCK_FAILED
-
-
ae2eed10-0ba8-11d2-8ffb-00a0c9a06d32
-
尝试锁定卷失败。 发生这种情况通常是因为另一个进程无法通过关闭其未完成句柄来响应 GUID_IO_VOLUME_LOCK 事件。 由于锁定失败,因此可以重新打开受影响卷的任何句柄。
-
-
GUID_IO_VOLUME_MOUNT
-
-
b5804878-1a96-11d2-8ffd-00a0c9a06d32
-
卷已由另一个进程装载。 可以打开它的一个或多个句柄。
-
-
GUID_IO_VOLUME_NAME_CHANGE
-
-
2de97f83-4c06-11d2-a532-00609713055a
-
卷名称已更改。
-
-
GUID_IO_VOLUME_NEED_CHKDSK
-
-
799a0960-0a0b-4e03-ad88-2fa7c6ce748a
-
文件系统检测到卷损坏。 应用程序应在卷上运行 CHKDSK,或通知用户执行此操作。
Windows Server 2003 和 Windows XP: 不支持此值。
-
-
GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE
-
-
2de97f84-4c06-11d2-a532-00609713055a
-
卷的物理构成或当前物理状态已更改。
-
-
GUID_IO_VOLUME_PREPARING_EJECT
-
-
c79eb16e-0dac-4e7a-a86c-b25ceeaa88f6
-
文件系统正在准备要弹出的光盘。 例如,文件系统正在停止后台格式设置操作或关闭写入一次媒体上的会话。
Windows Server 2003 和 Windows XP: 不支持此值。
-
-
GUID_IO_VOLUME_UNIQUE_ID_CHANGE
-
-
af39da42-6622-41f5-970b-139d092fa3d9
-
卷的唯一标识符已更改。 有关唯一标识符的详细信息,请参阅 IOCTL_MOUNTDEV_QUERY_UNIQUE_ID。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 在 Windows Server 2008 R2 和 Windows 7 之前不支持此值。
-
-
GUID_IO_VOLUME_UNLOCK
-
-
9a8c3d68-d0cb-11d1-8fef-00a0c9a06d32
-
卷已被另一个进程解锁。 可以打开它的一个或多个句柄。
-
-
GUID_IO_VOLUME_WEARING_OUT
-
-
873113ca-1486-4508-82ac-c3b2e5297aaa
-
媒体正在磨损。当文件系统确定卷上的错误率过高或其缺陷替换空间几乎耗尽时,将发送此事件。
Windows Server 2003 和 Windows XP: 不支持此值。
-
注解
GUID_IO_VOLUME_DISMOUNT和GUID_IO_VOLUME_DISMOUNT_FAILED事件是相关的,GUID_IO_VOLUME_LOCK和GUID_IO_VOLUME_LOCK_FAILED事件也相关。 GUID_IO_VOLUME_DISMOUNT和GUID_IO_VOLUME_LOCK事件指示正在尝试操作。 应对事件通知执行操作,并记录所执行的操作。 GUID_IO_VOLUME_DISMOUNT_FAILED和GUID_IO_VOLUME_LOCK_FAILED事件指示尝试的操作失败。 然后,可以使用记录撤消为响应操作而执行的操作。
DEV_BROADCAST_HANDLE 结构的dbch_hdevnotify成员指示受影响的设备。 请注意,这是 RegisterDeviceNotification 返回的设备通知句柄,而不是卷句柄。 若要对卷执行操作,请将此句柄映射到相应的卷句柄。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows XP |
最低受支持的服务器 |
Windows Server 2003 |
标头 |
|