共用方式為


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結構的陣列指標;每個磁片都有一個 結構。

注意 除非磁片區只有一個具有一個成員的 plex,否則呼叫端不應該搭配 Extend 方法使用預設成員索引。
 

[in] lNumberOfDisks

磁片區中的磁片總數。 當磁片區Plex 包含足夠的空間來擴充磁片區時,呼叫端可以傳遞零; pInputDiskArray 必須是 Null

[out] ppAsync

IVdsAsync介面指標的位址,VDS 會在傳回時初始化。 呼叫端必須釋放 介面。 使用此指標來取消、等候或查詢作業的狀態。 如果您在此介面上呼叫IVdsAsync::Wait方法,並傳回成功的 HRESULT 值,則必須在每個介面指標上呼叫IUnknown::Release方法,以釋放VDS_ASYNC_OUTPUT結構中傳回的介面。 不過,如果Wait傳回失敗 HRESULT 值,或WaitpHrResult參數收到失敗 HRESULT 值,則VDS_ASYNC_OUTPUT結構中的介面指標為Null且不需要釋放。 您可以使用 Winerror.h 中定義的 SUCCEEDEDFAILED 宏來測試成功或失敗 HRESULT 值。

傳回值

這個方法可以傳回標準 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 VDS 特定的傳回值。 它也可以使用HRESULT_FROM_WIN32宏傳回已轉換的系統錯誤碼。 錯誤可能源自 VDS 本身,或來自正在使用的基礎 VDS 提供者 。 可能的傳回值包括下列專案。

傳回碼/值 描述
S_OK
方法已成功競爭。
VDS_E_CANNOT_EXTEND
0x8004240EL
無法擴充磁片區,因為磁片區上的檔案系統不支援此作業。
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
沒有足夠的空間可擴充磁片區。
VDS_E_VOLUME_NOT_HEALTHY
0x8004243EL
磁片區狀況不良。

備註

此方法會擴充相同磁片上的簡單磁片區,或藉由將磁片區延伸至多個磁片來建立跨越的磁片區。 呼叫端可以在基本磁碟上擴充磁片區,不過磁片範圍必須與磁片區連續。

VDS 會自動擴充檔案系統,以符合擴充的磁片區大小。 檔案系統必須支援這項作業。 如果呼叫端無法指定要使用的範圍,VDS 會擴充檔案系統,但不會擴充磁片區。

只有 NTFS 和 RAW 磁片區才支援擴充和 壓縮 作業。

擴充磁片區時,VDS 會套用下列規則:

  • 針對簡單且跨越的 plex 類型,VDS 會將 plex 的唯一成員擴充為尚未參與另一個 plex 的任何磁片範圍,不論該範圍是否位於相同的磁片上。 VDS 會依照呼叫端指定的順序使用磁片範圍,忽略範圍的成員索引。 除非在基本磁碟上,否則 VDS 可以使用相同磁片或不同磁片上的任何磁片範圍,擴充 plex 的唯一成員。
  • 對於等量和等量等量與等量等量型別,VDS 會將範圍指派給 plex 的成員,如下所示:
    • 範圍會移至呼叫端所指定的成員索引。
    • 當呼叫端無法指定成員識別碼時,範圍會移至佔用相同磁片的成員索引。
    VDS 永遠不會將範圍指派給相同磁片上的多個成員。 呼叫端必須指定所有範圍或無的成員;呼叫端無法為某些範圍指定成員,而不能指定其他範圍的成員。
當呼叫端針對pInputDiskArray傳遞NulllNumberOfDisks為零時,VDS 會在非同步物件中傳回S_FALSE,並針對 方法傳回S_OK。 在此情況下, S_OK 表示 VDS 已啟動作業,但作業是同步的。

不論呼叫是否起始非同步作業,實作器都必須傳回這個方法 IVdsAsync 介面的指標。

規格需求

   
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平臺 Windows
標頭 vds.h
程式庫 Uuid.lib

另請參閱

IVdsAsync

IVdsAsync::Wait

IVdsVolume

IVdsVolumeShrink::Shrink

VDS_ASYNC_OUTPUT

VDS_INPUT_DISK