IVdsPack2::CreateVolume2 メソッド (vds.h)

[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management 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構造体の配列。

メモ Windows では 1 つのボリュームで使用できるディスクが 32 個以下の制限があるため、この配列のサイズは 32 オブジェクト以下である必要があります。
 

[in] lNumberOfDisks

pInputDiskArray パラメーターによって指される配列内の要素の数。

[in] ulStripeSize

新しいボリュームのストライプ サイズ (バイト単位)。

メモ 種類がVDS_VT_STRIPEまたはVDS_VT_PARITYの場合、ストライプ サイズは 65536 にする必要があります。それ以外の場合、ストライプ サイズは 0 にする必要があります。
 

[in] ulAlign

ボリュームアラインメントのバイト数。 このパラメーターは省略可能であり、0 にすることができます。 0 を指定すると、ボリュームが作成されるディスクのサイズに応じて、サーバーによってアラインメント値が決定されます。

Windows 7、Windows Server 2008 R2、Windows Vista、Windows Server 2008: Basic ディスクでは、 CreateVolume2 メソッドは、このパラメーターと HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment レジストリ キーを無視します。 これは既知の問題であり、対処中です。 回避策として、 IVdsAdvancedDisk::CreatePartition または IVdsCreatePartitionEx::CreatePartitionEx メソッドを使用して、パーティションが正しく配置されるようにベーシック ディスクにパーティションを作成します。動的パーティションとボリュームは、次のレジストリ キーの値を使用して配置されます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment

既定の配置は、ディスクが 4 GB 以上の場合は 1 MB、ディスクが 4 GB より小さい場合は 64 KB です。

[out] ppAsync

正常に完了すると IVdsAsync インターフェイスを受け取り、この操作を監視および制御する IVdsAsync インターフェイスへのポインター。 呼び出し元は、受信したインターフェイスが完了したら、それを解放する必要があります。 インターフェイスで IVdsAsync::Wait メソッドが呼び出され、成功した HRESULT 値が返された場合、 VDS_ASYNC_OUTPUT 構造体で返されるインターフェイスは、各インターフェイス ポインターで IUnknown::Release メソッドを呼び出して解放する必要があります。 ただし、Wait がエラー HRESULT 値を返す場合、または WaitpHrResult パラメーターがエラー HRESULT 値を受け取る場合、VDS_ASYNC_OUTPUT構造体のインターフェイス ポインターは NULL であり、解放する必要はありません。 成功または失敗の HRESULT 値をテストするには、Winerror.h で定義 されている SUCCEEDED マクロと FAILED マクロを使用します。

戻り値

このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、 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
指定した配置は 0 です。
VDS_E_ALIGN_NOT_A_POWER_OF_TWO
0x8004258FL
指定した配置は 2 の累乗ではありません。
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
ボリュームのメンバー数は、0 より大きくする必要があります。
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
ボリュームのプレックス数は、0 より大きくする必要があります。
VDS_E_INVALID_PLEX_ORDER
0x80042523L
plex インデックスは単調に増加し、ゼロから始まる必要があります。
VDS_E_INVALID_STRIPE_SIZE
0x80042525L
ストライプ・サイズ (バイト単位) は、ストライプ・ボリューム・タイプと RAID-5 ボリューム・タイプの場合は 2 の累乗でなければなりません。また、他のすべてのボリューム・タイプの場合はゼロでなければなりません。
VDS_E_MISSING_DISK
0x80042454L
指定されたディスクがありません。
VDS_E_NO_MEDIA
0x80042412L
ディスク アレイを介して渡されるリムーバブル ドライブにはメディアがありません。
VDS_E_NOT_ENOUGH_SPACE
0x8004240FL
ディスクの 1 つに十分な領域がありません。
VDS_E_NOT_SUPPORTED
0x80042400L
ボリュームの種類はサポートされていません。
VDS_E_OBJECT_NOT_FOUND
0x80042405L
渡されたディスクの少なくとも 1 つが見つかりません。
VDS_E_ONE_EXTENT_PER_DISK
0x80042531L
1 つのディスクが、同じボリュームの複数のメンバーまたは複数のプレックスに寄与することはできません。
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
Library Uuid.lib

こちらもご覧ください

IVdsPack2

IVdsPack::CreateVolume