VDS 通知

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

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

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

Diagram that shows the interface and methods (Advise, OnLoad, and OnNotify) between Applications, Virtual Disk Service, and V D S Providers.

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

此过程在应用程序和 VDS 之间相似。 具体而言,若要接收通知,应用程序通过调用 IVdsService::Advise 方法并将指针传递给接口,向 VDS 注册其 IVdsAdviseSink 接口。 当 VDS 从提供程序接收通知时,它将相应的通知结构传递给注册的应用程序作为 IVdsAdviseSink::OnNotify 方法参数。

注意

调用 建议 的应用程序最终必须调用 IVdsService::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