共用方式為


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