共用方式為


VDS 物件模型

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

VDS 可讓您間接存取主機型存放裝置,例如磁片和 CD-ROM 裝置,以及硬體 RAID 控制器所管理的磁片陣列。 雖然有些儲存體實體會模型實體裝置,但其他則模型虛擬建構:磁片區、分割區等等。 本主題中所述的物件代表 VDS 的實體和虛擬實體。

應用程式會呼叫這些物件公開的方法,而 VDS 會呼叫適當的提供者來執行要求的儲存體作業。 應用程式永遠不會直接呼叫提供者程式。

物件的分類

如下圖所示,軟體提供者程式會實作模型主機型實體的物件;硬體提供者程式會實作模型內部和外部硬體 RAID 裝置的物件;其餘的通用物件與提供者無關,或由 VDS 實作。 非 VDS 物件的軸是一般儲存媒體的詞彙,其中包含磁片或磁片磁碟機範圍。

此圖顯示物件的分類,定義為「通用物件」、「軟體提供者物件」和「硬體提供者物件」。

若要深入瞭解每個物件的行為,請從下列主題中選取:

建立物件

與物件建立相關聯的組態和查詢作業可能需要相當長的時間才能完成;因此,VDS 會以非同步方式叫用所有方法。 探索提供者會傳回所有完成、錯誤或狀態變更事件。 軟體提供者也會記錄所有錯誤和重大狀態變更。

刪除物件

數個 VDS 方法會刪除或轉換 VDS 物件。 呼叫端可以在方法傳回之後,藉由介面指標來保存已刪除物件的參考。 當呼叫端釋放介面時,VDS 會刪除 物件。

對於刪除物件,呼叫端應該避免叫用這些介面上的 IUnknown::Release 方法以外的任何專案。 提供者必須夠強固,才能處理錯誤呼叫端;如果呼叫端在已刪除的物件上叫用方法,提供者應該傳回 VDS_E_OBJECT_DELETED

服務初始化

VDS 會為服務載入器和服務物件提供類別識別碼 (Clsid) ,但只有服務載入器 Clsid 是公用的。 當提供者、呼叫的應用程式和服務執行下列工作時,就會進行服務初始化:

  • 每個新的提供者會在安裝期間叫用 IVdsAdmin::RegisterProvider 方法,以向 VDS 註冊。 呼叫會在 SYSTEM hive 下建立登錄機碼,由提供者的物件 GUID 識別。 此金鑰下包含提供者物件的 Clsid、名稱、版本和提供者的版本 GUID。

    注意

    提供者物件 GUID 是持續性的;軟體和硬體物件 GUID 不是。

     

  • 應用程式會呼叫 CoCreateInstance 函式,並將服務載入器 Clsid 傳遞為引數。 透過服務載入器物件的指標,應用程式可以在本機或遠端啟動 VDS,方法是將所需的電腦名稱稱當做參數傳遞至 IVdsServiceLoader::LoadService 方法。

  • 當初始應用程式附加至服務時,VDS 會先在每個登錄機碼下找到的 Clsid 上呼叫 CoCreateInstance ,然後在每個提供者上呼叫 IVdsProviderPrivate::OnLoad 方法,以初始化程式。

關於 VD

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad