VDS 通知

[从 Windows 8 和 Windows Server 2012 开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]

提供程序可以向 VDS 发送事件通知,VDS 可以将通知转发到应用程序。 VDS 使用的通知模型类似于 COM 对象使用的连接点模型。

VDS 为诸如驱动器号分配或未分配磁盘的到达等事件生成服务通知。 VDS 将磁盘分配给提供程序后,提供程序将负责生成关联的通知。 下图显示了 VDS 通知模型中使用的接口和方法。

显示应用程序、虚拟磁盘服务和 V DS 提供程序之间的接口和方法 (Advise、OnLoad 和 OnNotify) 的关系图。

为了接收通知,VDS 通过调用 IVdsProviderPrivate::OnLoad 方法并传递指向接口的指针,将 IVdsAdviseSink 接口注册到提供程序对象。 发生通知事件(例如新卷或驱动器的到达)时,提供程序将相应的通知结构作为 IVdsAdviseSink::OnNotify 方法参数传递给 VDS

应用程序与 VDS 之间的过程类似。 具体而言,为了接收通知,应用程序通过调用 IVdsService ::Advise 方法并传递指向接口的指针,将 IVdsAdviseSink 接口注册到 VDS 。 当 VDS 收到来自提供程序的通知时,它将相应的通知结构作为 IVdsAdviseSink::OnNotify 方法参数传递给已注册的应用程序。

注意

调用 Advise 的应用程序最终必须调用 IVdsService::Unadvise 方法。 理想情况下,它应在不再需要接收通知时立即调用 Unadvise

 

下表按对象类型列出提供程序生成的通知。

Object 通知 指向事件说明的链接
Pack VDS_NF_PACK_ARRIVE 1 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_DEPART 2 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_MODIFY 3 VDS_PACK_NOTIFICATION
数据量(Volume) VDS_NF_VOLUME_ARRIVE 4 VDS_VOLUME_NOTIFICATION
数据量(Volume) VDS_NF_VOLUME_DEPART 5 VDS_VOLUME_NOTIFICATION
数据量(Volume) VDS_NF_VOLUME_MODIFY 6 VDS_VOLUME_NOTIFICATION
数据量(Volume) VDS_NF_VOLUME_REBUILDING_PROGRESS 7 VDS_VOLUME_NOTIFICATION
磁盘 VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
磁盘 VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
磁盘 VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
分区 VDS_NF_PARTITION_ARRIVE 11 VDS_PARTITION_NOTIFICATION
分区 VDS_NF_PARTITION_DEPART 12 VDS_PARTITION_NOTIFICATION
分区 VDS_NF_PARTITION_MODIFY 13 VDS_PARTITION_NOTIFICATION
子系统 VDS_NF_SUB_SYSTEM_ARRIVE 101 VDS_SUB_SYSTEM_NOTIFICATION
子系统 VDS_NF_SUB_SYSTEM_DEPART 102 VDS_SUB_SYSTEM_NOTIFICATION
子系统 VDS_NF_SUB_SYSTEM_MODIFY 151 VDS_SUB_SYSTEM_NOTIFICATION
控制器 VDS_NF_CONTROLLER_ARRIVE 103 VDS_CONTROLLER_NOTIFICATION
控制器 VDS_NF_CONTROLLER_DEPART 104 VDS_CONTROLLER_NOTIFICATION
控制器 VDS_NF_CONTROLLER_MODIFY 350 VDS_CONTROLLER_NOTIFICATION
控制器 VDS_NF_CONTROLLER_REMOVED 351 VDS_CONTROLLER_NOTIFICATION
端口 VDS_NF_PORT_MODIFY 352 VDS_PORT_NOTIFICATION
端口 VDS_NF_PORT_REMOVED 353 VDS_PORT_NOTIFICATION
驱动器 VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
驱动器 VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
驱动器 VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
驱动器 VDS_NF_DRIVE_REMOVED 354 VDS_DRIVE_NOTIFICATION
LUN VDS_NF_LUN_ARRIVE 108 VDS_LUN_NOTIFICATION
LUN VDS_NF_LUN_DEPART 109 VDS_LUN_NOTIFICATION
LUN VDS_NF_LUN_MODIFY 110 VDS_LUN_NOTIFICATION

 

VDS 生成剩余的通知。 下表按类别列出了基于服务的通知常量。

类别 通知 指向事件说明的链接
磁盘 VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
磁盘 VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
磁盘 VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
驱动器号 VDS_NF_DRIVE_LETTER_FREE 201 VDS_DRIVE_LETTER_NOTIFICATION
驱动器号 VDS_NF_DRIVE_LETTER_ASSIGN 202 VDS_DRIVE_LETTER_NOTIFICATION
文件系统 VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
文件系统 VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204 VDS_FILE_SYSTEM_NOTIFICATION
数据量(Volume) VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

VDS 对象模型

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Advise