共用方式為


VDS 通知

[從Windows 8和Windows Server 2012開始,虛擬磁碟服務COM 介面會由Windows 儲存體管理 API取代。

提供者可以將事件通知傳送至 VDS,而 VDS 可以接著將通知轉送至應用程式。 VDS 所使用的通知模型類似于 COM 物件所使用的連接點模型。

VDS 會產生服務通知,例如磁碟機號指派或未配置磁片的抵達。 一旦 VDS 將磁片配置給提供者,提供者就會負責產生相關聯的通知。 下圖顯示 VDS 通知模型中所使用的介面和方法。

此圖顯示應用程式、虛擬磁碟服務和 V D S 提供者之間的介面和方法 (建議、OnLoad 和 OnNotify) 。

為了接收通知,VDS 會呼叫IVdsProviderPrivate::OnLoad方法,並將指標傳遞至介面,向提供者物件註冊其IVdsAdviseSink介面。 當通知事件發生時,例如新磁片區或磁片磁碟機的抵達,提供者會將適當的通知結構傳遞至 VDS 作為 IVdsAdviseSink::OnNotify 方法參數。

應用程式與 VDS 之間的程式很類似。 具體而言,若要接收通知,應用程式會藉由呼叫IVdsService::Advise方法,並將指標傳遞至介面,向 VDS 註冊其IVdsAdviseSink介面。 當 VDS 收到來自提供者的通知時,它會將適當的通知結構傳遞至註冊的應用程式作為 IVdsAdviseSink::OnNotify 方法參數。

注意

呼叫 建議 的應用程式最終必須呼叫 IVdsService::Unadvise 方法。 在理想情況下,它應該在不再需要收到通知時立即呼叫 Unadvise

 

下列資料表會依物件類型列出提供者產生的通知。

物件 通知 事件描述的連結
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
磁碟區 VDS_NF_VOLUME_ARRIVE 4 VDS_VOLUME_NOTIFICATION
磁碟區 VDS_NF_VOLUME_DEPART 5 VDS_VOLUME_NOTIFICATION
磁碟區 VDS_NF_VOLUME_MODIFY 6 VDS_VOLUME_NOTIFICATION
磁碟區 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
Subsystem VDS_NF_SUB_SYSTEM_ARRIVE 101 VDS_SUB_SYSTEM_NOTIFICATION
Subsystem VDS_NF_SUB_SYSTEM_DEPART 102 VDS_SUB_SYSTEM_NOTIFICATION
Subsystem 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
磁碟區 VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

VDS 物件模型

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::建議