Compartir a través de


Función MergeVirtualDisk (virtdisk.h)

Combina un disco duro virtual secundario (VHD) en una cadena de diferenciación con uno o varios discos virtuales primarios en la cadena.

Sintaxis

DWORD MergeVirtualDisk(
  [in]           HANDLE                         VirtualDiskHandle,
  [in]           MERGE_VIRTUAL_DISK_FLAG        Flags,
  [in]           PMERGE_VIRTUAL_DISK_PARAMETERS Parameters,
  [in, optional] LPOVERLAPPED                   Overlapped
);

Parámetros

[in] VirtualDiskHandle

Identificador del disco virtual abierto, que se debe haber abierto con la marca VIRTUAL_DISK_ACCESS_METAOPS . Para obtener información sobre cómo abrir un disco virtual, consulte la función OpenVirtualDisk .

[in] Flags

Debe ser el valor MERGE_VIRTUAL_DISK_FLAG_NONE de la enumeración MERGE_VIRTUAL_DISK_FLAG .

[in] Parameters

Puntero a una estructura de MERGE_VIRTUAL_DISK_PARAMETERS válida que contiene datos de parámetros de combinación.

[in, optional] Overlapped

Puntero opcional a una estructura SUPERPUESTA válida si se desea una operación asincrónica .

Valor devuelto

Estado de la solicitud.

Si la función se ejecuta correctamente, el valor devuelto se ERROR_SUCCESS.

Si se produce un error en la función, el valor devuelto es un código de error. Para obtener más información, vea Códigos de error del sistema.

Comentarios

Nota Todas las apariciones del término disco de esta sección hacen referencia a discos virtuales. El término memoria auxiliar hace referencia al almacenamiento en disco físico donde residen los archivos o archivos de imagen del disco duro virtual.
 
La función MergeVirtualDisk actualiza todos los bloques de datos de uno o varios discos primarios con los bloques de datos del disco secundario al que hace referencia el parámetro VirtualDiskHandle . Básicamente, se trata de una operación de copia.

La combinación de un disco requiere que los discos afectados se desasocie durante la operación.

El autor de la llamada debe tener READ|Acceso WRITE al almacén de respaldo para los discos afectados.

El RWDepth del disco debe ser mayor que la profundidad de combinación especificada por el OPEN_VIRTUAL_DISK_PARAMETERS.

La combinación modifica el disco primario en el que se combina, por lo tanto, cualquier otro disco de diferenciación que dependa de ese elemento primario ya no será válido.

El disco primario en el que se combina se cambia para representar los mismos datos que se mantienen en el disco de diferenciación secundario en el que se realiza la combinación.

Los datos preexistentes en el disco primario en los que se combinan se sobrescriben.

Si se interrumpe una operación de combinación, el disco secundario sigue usable. La función MergeVirtualDisk se puede volver a ejecutar para finalizar la combinación.

La profundidad de una solicitud de combinación es el número de archivos de imagen VHD primarios en la cadena de diferenciación que se va a combinar. Por ejemplo, si el miembro MergeDepth tiene un valor de 1, los bloques de datos del disco de diferenciación especificado se mueven a su elemento primario. Si el miembro MergeDepth tiene un valor de 2 y el elemento primario del disco de diferenciación especificado también es un disco de diferenciación (lo que significa que hay un tercer disco en la cadena), los bloques de datos de los discos primero y segundo se mueven al tercer disco (con bloques del primer disco que tienen prioridad sobre los bloques del segundo durante la operación final).

Tras la finalización, los discos secundarios afectados ya no se consideran válidos y las operaciones futuras en ellos tendrán resultados no admitidos. En el ejemplo anterior, una vez completada correctamente la combinación, el tercer disco es válido y el primero y el segundo no. La función MergeVirtualDisk no eliminará ningún disco que no sea válido ni realizará ninguna reconexión de relación de diferenciación automática. El autor de la llamada debe hacerlo explícitamente.

Si se realiza una operación de combinación en un nodo noaf de un disco de diferenciación, es responsabilidad del autor de la llamada corregir la información primaria de los nodos secundarios del disco que se está combinando.

Requisitos

   
Cliente mínimo compatible Windows 7
Servidor mínimo compatible Windows Server 2008 R2
Plataforma de destino Windows
Encabezado virtdisk.h
Library VirtDisk.lib
Archivo DLL VirtDisk.dll

Consulte también

Acerca de VHD

Referencia de VHD