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 提供程序 。 可能的返回值包括以下内容。

返回代码 说明
S_FALSE
如果提供程序调用此方法时服务未完全初始化,或者服务丢失了某些通知,VDS 会将此值返回到提供程序。

备注

应用程序实现此方法以接收来自 VDS 的通知。 其中一些通知源自 VDS;其他是 VDS 转发的提供程序通知。

VDS 维护有关所有 VDS 对象(例如子系统和控制器)属性的信息缓存。 每当发生触发通知的更改时,都会自动更新此缓存。 此外,调用 IVdsHwProvider::RefreshIVdsService::Refresh 以响应 VDS 通知可能会导致发送无休止的通知循环。 出于这些原因,应用程序不应在此方法的实现中调用 IVdsHwProvider::RefreshIVdsService::Refresh

对于使用此方法发送通知的提供程序,最好将源自单个事件的通知组合在一起。 例如,删除 LUN 时,一起发送所有受影响驱动器 的VDS_NF_DRIVE_MODIFY 通知。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 vdshwprv.h
Library Uuid.lib

另请参阅

IVdsAdviseSink

IVdsHwProvider::Refresh

IVdsService::Advise

IVdsService::Refresh

IVdsService::Unadvise

VDS 通知

VDS_NOTIFICATION