ResizeVirtualHardDisk method of the Msvm_ImageManagementService class
Resizes an existing virtual hard disk. The virtual hard disk must be offline. See Remarks for usage restrictions for this method.
Syntax
uint32 ResizeVirtualHardDisk(
[in] string Path,
[in] uint64 MaxInternalSize,
[out] CIM_ConcreteJob REF Job
);
Parameters
-
Path [in]
-
Type: string
The fully qualified path of the virtual hard disk file.
-
MaxInternalSize [in]
-
Type: uint64
The maximum size of the virtual hard disk as viewable by the virtual machine, in bytes. MaxInternalSize minimum value is DiskSize + 512 - (DiskSize mod 512). DiskSize is the size of the virtual hard disk file, in bytes. The InvalidParameter error (32773) is returned if the MaxInternalSize value specified is less than the minimum value.
-
Job [out]
-
Type: CIM_ConcreteJob
If the operation is performed asynchronously, this method will return 4096, and this parameter will contain a reference to an object derived from CIM_ConcreteJob.
Return value
Type: uint32
This method can return one of the following values.
-
Completed with No Error (0)
-
Method Parameters Checked - Job Started (4096)
-
Failed (32768)
-
Access Denied (32769)
-
Not Supported (32770)
-
Status is unknown (32771)
-
Timeout (32772)
-
Invalid parameter (32773)
-
System is in use (32774)
-
Invalid state for this operation (32775)
-
Incorrect data type (32776)
-
System is not available (32777)
-
Out of memory (32778)
-
File not found (32779)
Remarks
Only the following types of virtual hard disks can be used with this method when the size of the virtual hard disk is being increased:
- Fixed VHD
- Fixed VHDX
- Dynamic VHD
- Dynamic VHDX
- Differencing VHDX
Only the following types of virtual hard disks can be used with this method when the size of the virtual hard disk is being decreased:
- Fixed VHDX
- Dynamic VHDX
- Differencing VHDX
Access to the Msvm_ImageManagementService class might be restricted by UAC Filtering. For more information, see User Account Control and WMI.
Examples
The following C# example expands a virtual hard disk file. The referenced utilities can be found in Common utilities for the virtualization samples (V2).
const UInt64 size1G = 0x40000000;
public static void ResizeVirtualHardDisk(string path, UInt64 maxInternalSize)
{
ManagementScope scope = new ManagementScope(@"root\virtualization\V2", null);
ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");
ManagementBaseObject inParams = imageService.GetMethodParameters("ResizeVirtualHardDisk");
inParams["Path"] = path;
inParams["MaxInternalSize"] = maxInternalSize * size1G;
ManagementBaseObject outParams = imageService.InvokeMethod("ResizeVirtualHardDisk", inParams, null);
if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
{
if (Utility.JobCompleted(outParams, scope))
{
Console.WriteLine("{0} was resized successfully.", inParams["Path"]);
}
else
{
Console.WriteLine("Unable to resize {0}", inParams["Path"]);
}
}
outParams.Dispose();
inParams.Dispose();
imageService.Dispose();
}
Requirements
Requirement | Value |
---|---|
Minimum supported client |
Windows 8 [desktop apps only] |
Minimum supported server |
Windows Server 2012 [desktop apps only] |
Namespace |
Root\Virtualization\V2 |
MOF |
|
DLL |
|