IoEvent.h) (设备事件

应用程序(包括服务)可以注册以接收设备事件的通知。 例如,目录服务可以收到正在装载或卸载卷的通知,以便可以调整卷上文件的路径。 系统通过向应用程序发送 WM_DEVICECHANGE 消息来通知应用程序发生了设备事件。 系统通过调用服务的事件处理程序函数 HandlerEx,通知服务发生了设备事件。

若要接收设备事件通知,请使用 DEV_BROADCAST_HANDLE 结构调用 RegisterDeviceNotification 函数。 请务必将 dbch_handle 成员设置为从 CreateFile 函数获取的设备句柄。 此外,将 dbch_devicetype 成员设置为 DBT_DEVTYP_HANDLE。 函数返回设备通知句柄。 请注意,这与卷句柄不同。

当应用程序收到通知时,如果事件类型 为DBT_CUSTOMEVENT,则可能已收到 IoEvent.h 中定义的设备事件之一。 若要确定是否发生了其中一个事件,请使用以下步骤。

  1. 将事件数据视为 DEV_BROADCAST_HDR 结构。 验证 dbch_devicetype 成员是否设置为 DBT_DEVTYP_HANDLE
  2. 如果DBT_DEVTYP_HANDLE dbch_devicetype,则事件数据实际上是指向DEV_BROADCAST_HANDLE结构的指针。
  3. 使用 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_DISMOUNTGUID_IO_VOLUME_DISMOUNT_FAILED事件是相关的,GUID_IO_VOLUME_LOCKGUID_IO_VOLUME_LOCK_FAILED事件也相关。 GUID_IO_VOLUME_DISMOUNTGUID_IO_VOLUME_LOCK事件指示正在尝试操作。 应对事件通知执行操作,并记录所执行的操作。 GUID_IO_VOLUME_DISMOUNT_FAILEDGUID_IO_VOLUME_LOCK_FAILED事件指示尝试的操作失败。 然后,可以使用记录撤消为响应操作而执行的操作。

DEV_BROADCAST_HANDLE 结构的dbch_hdevnotify成员指示受影响的设备。 请注意,这是 RegisterDeviceNotification 返回的设备通知句柄,而不是卷句柄。 若要对卷执行操作,请将此句柄映射到相应的卷句柄。

要求

要求
最低受支持的客户端
Windows XP
最低受支持的服务器
Windows Server 2003
标头
IoEvent.h