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 |
程式庫 | Uuid.lib |