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
WindowsVirtualization.V2.mof
DLL
Vmms.exe

See also

CIM_ConcreteJob

Msvm_ImageManagementService