IVdsPack::CreateVolume メソッド (vds.h)
[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。
パック内にボリュームを作成します。 新しい ボリューム オブジェクト のインターフェイス ポインターを取得するには、 IVdsAsync::Wait through the ppAsync パラメーターを呼び出します。 返される VDS_ASYNC_OUTPUT 構造体には、 cv.pVolumeUnk メンバー内のボリューム オブジェクト インターフェイス ポインターが含まれています。
構文
HRESULT CreateVolume(
[in] VDS_VOLUME_TYPE type,
[in] VDS_INPUT_DISK *pInputDiskArray,
[in] LONG lNumberOfDisks,
[in] ULONG ulStripeSize,
[out] IVdsAsync **ppAsync
);
パラメーター
[in] type
VDS_VOLUME_TYPEによって列挙されたボリュームの種類。 ベーシック ディスク上のボリュームはエクステントを 1 つだけ持ち、 VDS_VT_SIMPLE フラグのみが有効です。
[in] pInputDiskArray
VDS_INPUT_DISK構造体の配列へのポインター。ディスクごとに 1 つの構造体。 ディスクを配列に含めることができるのは 1 回だけです。 配列内のすべてのディスクを使用する必要があります。または、 メソッドが失敗します。 呼び出し元は、配列を割り当てて初期化し、呼び出しが返されたときにメモリを解放する必要があります。
[in] lNumberOfDisks
ボリュームに寄与するディスクの合計数。
[in] ulStripeSize
ボリュームがストライピングされている場合は、各ストライプのサイズ (バイト単位)。 VDS_VT_SIMPLE、VDS_VT_SPAN、VDS_VT_MIRRORの場合は 0 バイトで渡します。VDS_VT_STRIPEとVDS_VT_PARITYの場合は 64 キロバイト。
[out] ppAsync
戻り時に VDS が初期化する IVdsAsync インターフェイス ポインターのアドレス。 呼び出し元はインターフェイスを解放する必要があります。 操作の状態をキャンセル、待機、またはクエリするには、このポインターを使用します。
このメソッドで IVdsAsync::Wait を呼び出し、成功した HRESULT 値が返された場合は、各インターフェイス ポインターで IUnknown::Release メソッドを呼び出して、VDS_ASYNC_OUTPUT構造体で返されるインターフェイスを解放する必要があります。 ただし、Wait がエラー HRESULT 値を返す場合、または Wait の pHrResult パラメーターがエラー HRESULT 値を受け取る場合、VDS_ASYNC_OUTPUT構造体のインターフェイス ポインターは NULL であり、解放する必要はありません。 成功または失敗の HRESULT 値をテストするには、Winerror.h で定義 されている SUCCEEDED マクロと FAILED マクロを使用します。
戻り値
このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、 VDS 固有の戻り値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。
リターン コード/値 | 説明 |
---|---|
|
ボリュームが正常に作成されました。 |
|
ボリューム到着通知が受信されませんでした。 IVdsService::Refresh を呼び出す必要がある場合があります。 |
|
ボリュームは正常に作成されますが、VDS はブート構成データ (BCD) ストアのブート オプションを更新できませんでした。
Windows Server 2003: ブート オプションは、itanium システムの x86 または x64 システムまたは NVRAM の boot.ini ファイルに格納されます。 |
|
指定されたディスクは、同じパックに属していません。 |
|
LDM サービスがメソッドに失敗しました。 |
|
渡されるエクステント サイズが小さすぎます。 |
|
指定されたディスクの数は、この操作では無効です。 |
|
ボリュームのメンバー数は、0 より大きくする必要があります。 |
|
メンバー インデックスは単調に増加し、ゼロから始まる必要があります。 |
|
渡されるディスクは CD-ROM または DVD デバイスです。 |
|
このディスク パックでは、この操作は許可されていません。 |
|
ボリュームのプレックス数は、0 より大きくする必要があります。 |
|
plex インデックスは単調に増加し、ゼロから始まる必要があります。 |
|
ストライプ・サイズ (バイト単位) は、ストライプ・ボリューム・タイプと RAID-5 ボリューム・タイプの場合は 2 の累乗でなければなりません。また、他のすべてのボリューム・タイプの場合はゼロでなければなりません。 |
|
指定されたディスクがありません。 |
|
ディスク アレイを介して渡されるリムーバブル ドライブにはメディアがありません。 |
|
ディスクの 1 つに十分な領域がありません。 |
|
ボリュームの種類がサポートされていないか、 メソッドに渡されたリムーバブル ディスクにボリュームが既に存在します。 リムーバブル ディスクにはボリュームを 1 つだけ含めることができます。 |
|
渡されたディスクの少なくとも 1 つが見つかりません。 |
|
1 つのディスクが、同じボリュームの複数のメンバーまたは複数のプレックスに寄与することはできません。 |
|
ターゲット パックにアクセスできません。 |
|
呼び出し元が追加のプライマリ パーティションまたは拡張パーティションを作成しようとしたときに、パーティションの最大数 (プライマリ パーティションまたは拡張パーティションを含むプライマリ パーティション) が既に存在します。 |
|
動的プロバイダー キャッシュが破損しています。 |
|
ボリュームあたり 32 個以下のディスクを使用できます。 |
|
ボリューム サイズが小さすぎます。 |
注釈
ベーシック ディスクには、単純なボリュームのみを含めることができます。 ダイナミック ディスクには、オペレーティング システムがバインド操作をサポートしている限り、すべての種類のボリュームを含めることができます。サーバー以外のプラットフォームでは、フォールト トレラント バインディング操作はサポートされていません。 新しく作成されたすべてのボリュームにドライブ文字がありません。
このメソッドは、ベーシック ディスク上にプライマリ パーティションを作成します。 ディスクに既に 3 つのプライマリ パーティションがある場合は、ディスク上に残っている最大の連続する空きディスク領域をカバーする拡張パーティションを作成し、拡張パーティション内に論理ドライブを作成します。
1 つのディスクが同じボリュームの複数のプレックスに寄与することはできません。ただし、1 つのディスクが複数のボリュームに影響を与える可能性があります。 単純ボリュームの VDS_INPUT_DISK 構造は 1 つだけですが、スパン、ストライプ、ミラー化、RAID-5 の各ボリュームには、コントリビューションディスクごとに 1 つの構造があります。
VDS_INPUT_DISK構造体で指定されたディスクのサイズは、ディスク全体またはディスクの一部にすることができます。 2 つのディスクがミラーボリュームを形成する場合、VDS は最小のディスクを使用してミラーのサイズを計算します。 (プロバイダー ポリシーは、特定の入力ディスクに割り当てられたディスク エクステントの実際のオフセット、長さ、および数を決定します)。作成されたボリュームの正確なサイズを確認するには、 IVdsPack::QueryVolumes メソッドを使用します。
オプションの配置パラメーターを使用して論理ボリュームを作成するには、 IVdsPack2::CreateVolume2 メソッドを使用するか 、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vds\Alignment レジストリ キーを使用してアラインメント値をバイト単位で指定します。
Windows 7、Windows Server 2008 R2、Windows Vista、Windows Server 2008: ベーシック ディスクでは、CreateVolume メソッドは 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 です。
実装者は、呼び出しが非同期操作を開始するかどうかに関係なく、このメソッドの IVdsAsync インターフェイスへのポインターを返す必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | vds.h |
Library | Uuid.lib |