IVdsVolume::Extend 方法 (vds.h)
[從Windows 8和Windows Server 2012開始,虛擬磁碟服務COM 介面會由Windows 儲存體管理 API取代。
將磁片區新增至每個 plex 的每個成員,以擴充目前磁片區的大小。
語法
HRESULT Extend(
[in] VDS_INPUT_DISK *pInputDiskArray,
[in] LONG lNumberOfDisks,
[out] IVdsAsync **ppAsync
);
參數
[in] pInputDiskArray
VDS_INPUT_DISK結構的陣列指標;每個磁片都有一個 結構。
[in] lNumberOfDisks
磁片區中的磁片總數。 當磁片區Plex 包含足夠的空間來擴充磁片區時,呼叫端可以傳遞零; pInputDiskArray 必須是 Null。
[out] ppAsync
IVdsAsync介面指標的位址,VDS 會在傳回時初始化。 呼叫端必須釋放 介面。 使用此指標來取消、等候或查詢作業的狀態。 如果您在此介面上呼叫IVdsAsync::Wait方法,並傳回成功的 HRESULT 值,則必須在每個介面指標上呼叫IUnknown::Release方法,以釋放VDS_ASYNC_OUTPUT結構中傳回的介面。 不過,如果Wait傳回失敗 HRESULT 值,或Wait的pHrResult參數收到失敗 HRESULT 值,則VDS_ASYNC_OUTPUT結構中的介面指標為Null且不需要釋放。 您可以使用 Winerror.h 中定義的 SUCCEEDED 和 FAILED 宏來測試成功或失敗 HRESULT 值。
傳回值
這個方法可以傳回標準 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 VDS 特定的傳回值。 它也可以使用HRESULT_FROM_WIN32宏傳回已轉換的系統錯誤碼。 錯誤可能源自 VDS 本身,或來自正在使用的基礎 VDS 提供者 。 可能的傳回值包括下列專案。
傳回碼/值 | 描述 |
---|---|
|
方法已成功競爭。 |
|
無法擴充磁片區,因為磁片區上的檔案系統不支援此作業。 |
|
沒有足夠的空間可擴充磁片區。 |
|
磁片區狀況不良。 |
備註
此方法會擴充相同磁片上的簡單磁片區,或藉由將磁片區延伸至多個磁片來建立跨越的磁片區。 呼叫端可以在基本磁碟上擴充磁片區,不過磁片範圍必須與磁片區連續。
VDS 會自動擴充檔案系統,以符合擴充的磁片區大小。 檔案系統必須支援這項作業。 如果呼叫端無法指定要使用的範圍,VDS 會擴充檔案系統,但不會擴充磁片區。
只有 NTFS 和 RAW 磁片區才支援擴充和 壓縮 作業。
擴充磁片區時,VDS 會套用下列規則:
- 針對簡單且跨越的 plex 類型,VDS 會將 plex 的唯一成員擴充為尚未參與另一個 plex 的任何磁片範圍,不論該範圍是否位於相同的磁片上。 VDS 會依照呼叫端指定的順序使用磁片範圍,忽略範圍的成員索引。 除非在基本磁碟上,否則 VDS 可以使用相同磁片或不同磁片上的任何磁片範圍,擴充 plex 的唯一成員。
- 對於等量和等量等量與等量等量型別,VDS 會將範圍指派給 plex 的成員,如下所示:
- 範圍會移至呼叫端所指定的成員索引。
- 當呼叫端無法指定成員識別碼時,範圍會移至佔用相同磁片的成員索引。
不論呼叫是否起始非同步作業,實作器都必須傳回這個方法 IVdsAsync 介面的指標。
規格需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平臺 | Windows |
標頭 | vds.h |
程式庫 | Uuid.lib |