Msvm_ImageManagementService クラスの ConvertVirtualHardDisk メソッド
既存の仮想ハード ディスクを別の種類または形式に変換します。 この方法では、新しい仮想ハード ディスクが作成され、ソース仮想ハード ディスクは変換されません。 この方法の使用制限については、「解説」を参照してください。
構文
uint32 ConvertVirtualHardDisk(
[in] string SourcePath,
[in] string VirtualDiskSettingData,
[out] CIM_ConcreteJob REF Job
);
パラメーター
-
SourcePath [in]
-
型: string
変換するソース仮想ハード ディスク ファイルの完全修飾パス。 このファイルは、この操作の結果として変更されません。
-
VirtualDiskSettingData [in]
-
型: string
新しい仮想ハード ディスクの属性を指定する Msvm_VirtualHardDiskSettingData クラスの文字列表現。 Path、Type、Format、ParentPath、BlockSize、LogicalSectorSize の各プロパティを設定する必要があります。 ParentPath プロパティは、必要ない場合は Null にすることができます。 既定値を使用するには、 BlockSize プロパティと LogicalSectorSize プロパティを 0 に設定します。
新しい仮想ハード ディスクの形式 (VHD または VHDX) を指定するには、 パス の拡張子を適切な値 (".vhd" または ".vhdx") に設定します。 Format プロパティは、Path 内のファイル名拡張子と一致する必要があります。
LogicalSectorSize プロパティは無視されます。
-
ジョブ [out]
-
種類: CIM_ConcreteJob
操作が非同期に実行された場合、このメソッドは 4096 を返し、このパラメーターには CIM_ConcreteJob から派生したオブジェクトへの参照が含 まれます。
戻り値
型: uint32
このメソッドは、次のいずれかの値を返すことができます。
-
エラーなしで完了 (0)
-
チェックされたメソッド パラメーター - ジョブの開始 (4096)
-
失敗 ( 32768)
-
アクセスが拒否されました (32769)
-
サポートされていません (32770)
-
状態が不明 (32771)
-
タイムアウト (32772)
-
パラメーターが無効です (32773)
-
システムが使用中 (32774)
-
この操作の無効な状態 (32775)
-
正しくないデータ型 (32776)
-
システムは使用できません (32777)
-
メモリ不足 (32778)
-
ファイルが見つかりません (32779)
解説
この方法では、次の種類の仮想ハード ディスクのみを使用できます。
- VHD を修正しました
- VHDX を修正しました
- 動的 VHD
- 動的 VHDX
- 差分 VHD
- 差分 VHDX
MSVM_IMAGEMANAGEMENTSERVICE クラスへのアクセスは、UAC フィルター処理によって制限される場合があります。 詳細については、「 ユーザー アカウント制御と WMI」を参照してください。
例
次の C# の例では、仮想ハード ディスクを変換します。 参照されるユーティリティについては、「 仮想化サンプルの一般的なユーティリティ (V2)」を参照してください。
public enum VirtualHardDiskType
{
Fixed = 2,
Dynamic = 3,
Differencing = 4
}
public enum VirtualHardDiskFormat
{
Unknown = 0,
Vhd = 2,
Vhdx = 3
}
public static void ConvertVirtualHardDisk(string sourcePath, string destinationPath, VirtualHardDiskType diskType, VirtualHardDiskFormat diskFormat)
{
ManagementScope scope = new ManagementScope(@"root\virtualization\V2", null);
ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");
ManagementPath path = new ManagementPath()
{
Server = null,
NamespacePath = imageService.Path.Path,
ClassName = "Msvm_VirtualHardDiskSettingData"
};
ManagementClass settingsClass = new ManagementClass(path);
ManagementObject settingsInstance = settingsClass.CreateInstance();
settingsInstance["Path"] = destinationPath;
settingsInstance["Type"] = diskType;
settingsInstance["Format"] = diskFormat;
settingsInstance["ParentPath"] = null;
settingsInstance["MaxInternalSize"] = 0;
settingsInstance["BlockSize"] = 0;
settingsInstance["LogicalSectorSize"] = 0;
settingsInstance["PhysicalSectorSize"] = 0;
ManagementBaseObject inParams = imageService.GetMethodParameters("ConvertVirtualHardDisk");
inParams["SourcePath"] = sourcePath;
inParams["VirtualDiskSettingData"] = settingsInstance.GetText(TextFormat.WmiDtd20);
ManagementBaseObject outParams = imageService.InvokeMethod("ConvertVirtualHardDisk", inParams, null);
UInt32 result = (UInt32)outParams["ReturnValue"];
if (ReturnCode.Completed == result)
{
Console.WriteLine("{0} was converted successfully.", inParams["SourcePath"]);
}
else if (ReturnCode.Started == result)
{
if (Utility.JobCompleted(outParams, scope))
{
Console.WriteLine("{0} was converted successfully.", inParams["SourcePath"]);
}
else
{
Console.WriteLine("Unable to convert {0}", inParams["SourcePath"]);
}
}
else
{
// The method failed.
Console.WriteLine("ConvertVirtualHardDisk failed with error code {0}.", result);
}
outParams.Dispose();
inParams.Dispose();
imageService.Dispose();
}
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 8 [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2012 [デスクトップ アプリのみ] |
名前空間 |
Root\Virtualization\V2 |
MOF |
|
[DLL] |
|