IVdsPack::MigrateDisks メソッド (vds.h)

[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。

1 つのパックから別のパックに一連のディスクを移行します。

構文

HRESULT MigrateDisks(
  [in]  VDS_OBJECT_ID *pDiskArray,
  [in]  LONG          lNumberOfDisks,
  [in]  VDS_OBJECT_ID TargetPack,
  [in]  BOOL          bForce,
  [in]  BOOL          bQueryOnly,
  [out] HRESULT       *pResults,
  [out] BOOL          *pbRebootNeeded
);

パラメーター

[in] pDiskArray

GUID の配列へのポインター。ディスクごとに 1 つ。

[in] lNumberOfDisks

移行するディスクの数。

[in] TargetPack

パック オブジェクトの GUID。

[in] bForce

このパラメーターが TRUE に設定されている場合、VDS はこのメソッドのすべてのエラーを無視し、ディスクの無条件移行を試みます。 FALSE に設定されている場合、操作は続行されません。 場合によっては、強制移行によってデータが失われる可能性があります。

[in] bQueryOnly

このパラメーターが TRUE に設定されている場合、移行は行われません。 FALSE に設定すると、操作が続行されます。

[out] pResults

HRESULT 値の呼び出し元によって割り当てられた配列のアドレス。 配列内の要素の数は lNumberOfDisks です

ディスクを移行できる場合、または正常に移行された場合、対応する配列要素は S_OKを受け取ります。それ以外の場合は、プロバイダーによって返された警告コードまたはエラー コードを受け取ります。 その他の結果コードの一覧については、「戻り値」を参照してください。

[out] pbRebootNeeded

このパラメーターが TRUE に設定されている場合は、コンピューターを再起動して操作を完了する必要があります。 FALSE に設定すると、再起動せずに操作が完了します。

戻り値

このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、 VDS 固有の戻り値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。

リターン コード/値 説明
S_OK
移行が正常に完了しました。
S_FALSE
少なくとも 1 つのディスクを変換できないか、警告で変換できます。
VDS_E_DISK_NOT_ONLINE
0x8004244BL
いずれかのディスクを使用できません。
VDS_E_IMPORT_SET_INCOMPLETE
0x80042451L
外部パック内のディスクのサブセットをインポートしようとしました。
 

pResults を使用して、次の警告とエラーを返すことができます。

リターン コード/値 説明
VDS_S_BOOT_PARTITION_NUMBER_CHANGE
0x00042436L
移行操作の結果として、ブート パーティションのパーティション番号が変更されました。
VDS_E_NO_FREE_SPACE
0x80042437L
選択したディスクに、操作を完了するための十分な空き領域がありません。
VDS_E_ACTIVE_PARTITION
0x80042438L
選択したディスクでアクティブパーティションが検出され、アクティブなオペレーティング システムの起動に使用されるアクティブパーティションではありません。
VDS_E_PARTITION_OF_UNKNOWN_TYPE
0x80042439L
パーティション情報を読み取ることができません。
VDS_E_LEGACY_VOLUME_FORMAT
0x8004243AL
選択したディスクで、不明な種類のパーティションが検出されました。
VDS_E_NON_CONTIGUOUS_DATA_PARTITIONS
0x8004243BL
選択した GPT ディスクには、1 つ以上の基本データ パーティションの前と後の両方の基本データ パーティションが含まれています。
VDS_E_MIGRATE_OPEN_VOLUME
0x8004243CL
選択したディスク上のボリュームを開くことができません。

解説

VDS はこのメソッドを実装します。

1 つのパックに含めることができるベーシック ディスクは 1 つだけです。 そのため、ベーシック パックとダイナミック パックの間で一度に移行できるディスクは 1 つだけです。

ベーシック ディスクをダイナミック ディスク形式に変換し、ディスクの末尾に LDM データベースに十分な領域がない場合は、この操作を強制する必要があります。 スペースの制限にもかかわらず、 bForce パラメーターを true に設定し、操作を強制します。 同様に、OEM パーティションが MBR ディスクの中央にあり、どちらの側にも空き領域またはデータ ボリュームがある場合も同様です。

ダイナミック ディスクをダイナミック パックに移行した後、 IVdsPack::GetProperties メソッドを使用して、ソース パックと移行先パックがオンライン パックかどうかを判断する必要があります。

MigrateDisks メソッドを使用してパックに外部ディスクを追加する方法については、「パックへの外部ディスクの追加」を参照してください。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー vds.h
Library Uuid.lib

関連項目

IVdsPack

IVdsPack::GetProperties