Share via


IVdsPack2::CreateVolume2 方法 (vds.h)

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

使用選擇性對齊參數在磁碟套件中建立磁碟區。

語法

HRESULT CreateVolume2(
  [in]  VDS_VOLUME_TYPE type,
  [in]  VDS_INPUT_DISK  *pInputDiskArray,
  [in]  LONG            lNumberOfDisks,
  [in]  ULONG           ulStripeSize,
  [in]  ULONG           ulAlign,
  [out] IVdsAsync       **ppAsync
);

參數

[in] type

VDS_VOLUME_TYPE 列舉的值 ,指出要建立的磁碟區類型。

[in] pInputDiskArray

VDS_INPUT_DISK 結構的陣列,指出要在其中建立磁碟區的磁碟。

注意 此陣列的大小必須是32個物件或更少,因為Windows會強制限制,其中不能超過32個磁碟與單一磁碟區搭配使用。
 

[in] lNumberOfDisks

pInputDiskArray 參數所指向陣列中的元素數目。

[in] ulStripeSize

新磁碟區的等量大小,以位元組為單位。

注意 如果類型VDS_VT_STRIPE或VDS_VT_PARITY,等量大小必須為 65536;否則,等量大小必須為 0。
 

[in] ulAlign

磁碟區對齊的位元組數目。 此參數是選擇性的,而且可以是零。 如果指定零,伺服器會根據磁碟區建立所在的磁碟大小來判斷對齊值。

Windows 7、Windows Server 2008 R2、Windows Vista 和 Windows Server 2008: 在基本磁碟上, CreateVolume2 方法會忽略此參數和 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment 登錄機碼。 這是已知的問題,正在解決。 因應措施是使用 IVdsAdvancedDisk::CreatePartitionIVdsCreatePartitionEx::CreatePartitionEx 方法 ,在基本磁碟上建立分割區,使其正確對齊。動態分割區和磁碟區會使用下列登入機碼下的值對齊:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

如果磁碟為 4 GB 或更大,則預設對齊方式為 1 MB,如果磁碟小於 4 GB,則為 64 KB。

[out] ppAsync

在成功完成時, IVdsAsync 介面的指標會接收 IVdsAsync 介面,以監視和控制這項作業。 呼叫端必須在完成介面時釋放接收的介面。 如果在介面上呼叫 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_S_NO_NOTIFICATION
0x00042517L
未收到磁碟區抵達通知。 您可能需要呼叫 IVdsService::Refresh
VDS_S_UPDATE_BOOTFILE_FAILED
0x00042434L
已成功建立磁碟區,但 VDS 無法更新開機設定數據 (BCD) 存放區中的開機選項。
VDS_E_ALIGN_IS_ZERO
0x80042590L
指定的對齊方式為零。
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
0x8004258FL
指定的對齊方式不是兩個的乘冪。
VDS_E_DISK_NOT_FOUND_IN_PACK
0x8004252DL
指定的磁碟不屬於相同的套件。
VDS_E_DMADMIN_METHOD_CALL_FAILED
0x80042420L
LDM 服務失敗了方法。
VDS_E_EXTENT_SIZE_LESS_THAN_MIN
0x80042433L
傳入的範圍大小太小。
VDS_E_INVALID_DISK_COUNT
0x80042526L
此作業指定的磁碟數目無效。
VDS_E_INVALID_MEMBER_COUNT
0x80042522L
磁碟區的成員計數必須大於零。
VDS_E_INVALID_MEMBER_ORDER
0x80042524L
成員索引必須以單調方式增加,並以零開頭。
VDS_E_INVALID_OPERATION
0x80042415L
傳入的磁碟是CD-ROM或 DVD 裝置。
VDS_E_INVALID_PACK
0x8004251AL
此磁碟套件上不允許此作業。
VDS_E_INVALID_PLEX_COUNT
0x80042521L
磁碟區的 plex 計數必須大於零。
VDS_E_INVALID_PLEX_ORDER
0x80042523L
plex 索引必須以單調方式增加,並以零開頭。
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
以位元組為單位的等量大小必須是 2 的等量和 RAID-5 磁碟區類型的電源,而且所有其他磁碟區類型都必須是零。
VDS_E_MISSING_DISK
0x80042454L
遺漏指定的磁碟。
VDS_E_NO_MEDIA
0x80042412L
卸除式磁碟驅動器中沒有透過磁碟數位列傳入的媒體。
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
其中一個磁碟上沒有足夠的空間。
VDS_E_NOT_SUPPORTED
0x80042400L
不支援磁碟區類型。
VDS_E_OBJECT_NOT_FOUND
0x80042405L
找不到至少一個傳入的磁碟。
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
單一磁碟無法參與相同磁碟區的多個成員或多個叢集。
VDS_E_PACK_OFFLINE
0x80042444L
無法存取目標套件。
VDS_E_PARTITION_LIMIT_REACHED
0x80042407L
呼叫端嘗試建立其他主要分割區或擴充分割區時,已存在具有擴充分割區) 的主要分割區 (數目上限。
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
動態提供者快取已損毀。
VDS_E_VOLUME_DISK_COUNT_MAX_EXCEEDED
0x80042529L
每個磁碟區不允許超過 32 個磁碟。
VDS_E_VOLUME_TOO_SMALL
0x8004242CL
磁碟區大小太小。

規格需求

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

另請參閱

IVdsPack2

IVdsPack::CreateVolume