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.
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 |