Metodo MergeVirtualHardDisk della classe Msvm_ImageManagementService

Unisce un disco rigido virtuale figlio in una catena di differenze con uno o più dischi rigidi virtuali padre nella catena. Per questo metodo, vedere la sezione Osservazioni relative alle restrizioni di utilizzo.

Se l'utente che esegue questa funzione non dispone dell'autorizzazione per aggiornare le macchine virtuali, questa funzione avrà esito negativo.

Sintassi

uint32 MergeVirtualHardDisk(
  [in]  string              SourcePath,
  [in]  string              DestinationPath,
  [out] CIM_ConcreteJob REF Job
);

Parametri

SourcePath [in]

Tipo: string

Percorso completo che specifica il percorso del file del disco rigido virtuale da unire.

DestinationPath [in]

Tipo: string

Percorso completo che specifica il percorso del file del disco rigido virtuale padre in cui unire i dati. Potrebbe trattarsi del disco rigido virtuale padre immediato del file di unione o dell'immagine del disco padre a pochi livelli fino alla catena di differenze.

Processo [out]

Tipo: CIM_ConcreteJob

Se l'operazione viene eseguita in modo asincrono, questo metodo restituirà 4096 e questo parametro conterrà un riferimento a un oggetto derivato da CIM_ConcreteJob.

Valore restituito

Tipo: uint32

Questo metodo può restituire uno dei valori seguenti.

Completata senza errore (0)

Parametri del metodo controllati - Processo avviato (4096)

Non riuscito (32768)

Accesso negato (32769)

Non supportato (32770)

Lo stato è sconosciuto (32771)

Timeout (32772)

Parametro non valido (32773)

Il sistema è in uso (32774)

Stato non valido per questa operazione (32775)

Tipo di dati non corretto (32776)

Sistema non disponibile (32777)

Memoria insufficiente (32778)

File non trovato (32779)

Commenti

Il disco rigido virtuale figlio deve essere offline.

Con questo metodo è possibile usare solo i tipi di dischi rigidi virtuali seguenti:

  • Disco rigido virtuale differenze
  • VHDX differenze

L'accesso alla classe Msvm_ImageManagementService potrebbe essere limitato dal filtro controllo dell'account utente. Per altre informazioni, vedere Controllo dell'account utente e WMI.

Esempio

L'esempio C# seguente espande un file del disco rigido virtuale. Le utilità a cui si fa riferimento sono disponibili in Utilità comuni per gli esempi di virtualizzazione (V2).

// Merges a VHD into a parent VHD.
// ChildPath: The path to the VHD to merge.</param>
// ParentPath: The path to the parent into which to merge.</param>
public static void MergeVirtualHardDisk(string ChildPath, string ParentPath)
{
    ManagementScope scope = new ManagementScope(@"root\virtualization\v2", null);
    ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");

    ManagementBaseObject inParams = imageService.GetMethodParameters("MergeVirtualHardDisk");

    inParams["SourcePath"] = ChildPath;
    inParams["DestinationPath"] = ParentPath;

    ManagementBaseObject outParams = imageService.InvokeMethod("MergeVirtualHardDisk", inParams, null);

    if ((UInt32)outParams["ReturnValue"] == ReturnCode.Started)
    {
        if (Utility.JobCompleted(outParams, scope))
        {
            Console.WriteLine("MergeVirtualHardDisk succeeded.");
        }
        else
        {
            Console.WriteLine("MergeVirtualHardDisk failed.");
        }
    }

    outParams.Dispose();
    inParams.Dispose();
    imageService.Dispose();
}

Requisiti

Requisito Valore
Client minimo supportato
Windows 8 [solo app desktop]
Server minimo supportato
Windows Server 2012 [solo app desktop]
Spazio dei nomi
Root\Virtualization\V2
MOF
WindowsVirtualization.V2.mof
DLL
Vmms.exe

Vedi anche

CIM_ConcreteJob

Msvm_ImageManagementService