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.


uint32 ResizeVirtualHardDisk(
  [in]  string              Path,
  [in]  uint64              MaxInternalSize,
  [out] CIM_ConcreteJob REF Job


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 - JobStarted (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)


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.


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"]);
            Console.WriteLine("Unable to resize {0}", inParams["Path"]);



Minimum supported client

Windows 8 [desktop apps only]

Minimum supported server

Windows Server 2012 [desktop apps only]





See also




Community Additions