Compartir a través de


Función CompactVirtualDisk (virtdisk.h)

Reduce el tamaño de un archivo de almacenamiento de respaldo de disco duro virtual (VHD).

Sintaxis

DWORD CompactVirtualDisk(
  [in]           HANDLE                           VirtualDiskHandle,
  [in]           COMPACT_VIRTUAL_DISK_FLAG        Flags,
  [in, optional] PCOMPACT_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 en el parámetro VirtualDiskAccessMask pasado a OpenVirtualDisk. Para obtener información sobre cómo abrir un disco virtual, consulte la función OpenVirtualDisk .

[in] Flags

Debe ser el valor COMPACT_VIRTUAL_DISK_FLAG_NONE (0) de la enumeración COMPACT_VIRTUAL_DISK_FLAG .

[in, optional] Parameters

Puntero opcional a una estructura de COMPACT_VIRTUAL_DISK_PARAMETERS válida que contiene datos de parámetros de compactació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

La compactación solo se puede ejecutar en un disco virtual que se puede expandir o diferir dinámicamente.

Hay dos tipos diferentes de compactación.

  • El primer tipo, compactación compatible con el sistema de archivos, usa el sistema de archivos NTFS para determinar el espacio libre. Para ello, se adjunta el disco duro virtual como un dispositivo de solo lectura mediante la inclusión de las marcas VIRTUAL_DISK_ACCESS_METAOPS y VIRTUAL_DISK_ACCESS_ATTACH_RO en el parámetro VirtualDiskAccessMask que se pasa a OpenVirtualDisk, conectando el disco duro virtual llamando a AttachVirtualDisk y mientras el disco duro virtual está conectado llamando a CompactVirtualDisk. Desasociar el disco duro virtual antes de que se realice la compactación puede provocar un error de compactación antes de que se realice (similar a la cancelación de la compactación).
  • El segundo tipo, la compactación independiente del sistema de archivos, no implica el sistema de archivos, sino que solo busca bloques VHD rellenos completamente con ceros (0). Esto se hace incluyendo la marca VIRTUAL_DISK_ACCESS_METAOPS en el parámetro VirtualDiskAccessMask pasado a OpenVirtualDisk y llamando a CompactVirtualDisk.
La compactación compatible con el sistema de archivos es el tipo de compactación más eficaz, pero usar primero la compactación compatible con el sistema de archivos seguida de la compactación independiente del sistema de archivos producirá el VHD más pequeño.

Una operación de compactación en un disco virtual se puede interrumpir de forma segura y volver a ejecutarse más adelante. Volver a abrir un archivo de disco virtual que se ha interrumpido puede provocar la reducción del tamaño de un archivo de disco virtual en el momento de abrirse.

La compactación puede ser de uso intensivo de CPU o E/S, dependiendo del tamaño del disco virtual y de cuántos bloques requieren movimiento.

La función CompactVirtualDisk se ejecuta en el disco virtual en el mismo contexto de seguridad que el autor de la llamada.

Requisitos

Requisito Value
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