IVdsAdviseSink::OnNotify 方法 (vdshwprv.h)
[从Windows 8和Windows Server 2012开始,虚拟磁盘服务 COM 接口由 Windows 存储管理 API 取代。]
将通知从提供程序传递到 VDS,并将通知从 VDS 传递到应用程序。
语法
HRESULT OnNotify(
[in] LONG lNumberOfNotifications,
[in] VDS_NOTIFICATION *pNotificationArray
);
参数
[in] lNumberOfNotifications
pNotificationArray 中指定的通知数。
[in] pNotificationArray
指向 VDS_NOTIFICATION 结构的数组的指针。 当提供程序调用服务时,提供程序为数组分配内存;服务释放数组。 当服务调用应用程序时,VDS 会分配数组。 在这种情况下,调用方必须使用 CoTaskMemFree 函数释放数组。
返回值
此方法可以返回标准 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 特定于 VDS 的返回值。 它还可以使用 HRESULT_FROM_WIN32 宏返回转换的系统错误代码。 错误可能源自 VDS 本身或正在使用的基础 VDS 提供程序 。 可能的返回值包括以下内容。
返回代码 | 说明 |
---|---|
|
如果提供程序调用此方法时服务未完全初始化,或者服务丢失了某些通知,VDS 会将此值返回到提供程序。 |
备注
应用程序实现此方法以接收来自 VDS 的通知。 其中一些通知源自 VDS;其他是 VDS 转发的提供程序通知。
VDS 维护有关所有 VDS 对象(例如子系统和控制器)属性的信息缓存。 每当发生触发通知的更改时,都会自动更新此缓存。 此外,调用 IVdsHwProvider::Refresh 或 IVdsService::Refresh 以响应 VDS 通知可能会导致发送无休止的通知循环。 出于这些原因,应用程序不应在此方法的实现中调用 IVdsHwProvider::Refresh 或 IVdsService::Refresh 。
对于使用此方法发送通知的提供程序,最好将源自单个事件的通知组合在一起。 例如,删除 LUN 时,一起发送所有受影响驱动器 的VDS_NF_DRIVE_MODIFY 通知。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | vdshwprv.h |
Library | Uuid.lib |