CompactVirtualDisk 関数 (virtdisk.h)
仮想ハード ディスク (VHD) バッキング ストア ファイルのサイズを小さくします。
構文
DWORD CompactVirtualDisk(
[in] HANDLE VirtualDiskHandle,
[in] COMPACT_VIRTUAL_DISK_FLAG Flags,
[in, optional] PCOMPACT_VIRTUAL_DISK_PARAMETERS Parameters,
[in, optional] LPOVERLAPPED Overlapped
);
パラメーター
[in] VirtualDiskHandle
OpenVirtualDisk に渡される VirtualDiskAccessMask パラメーターのVIRTUAL_DISK_ACCESS_METAOPS フラグを使用して開かれている必要がある、開いている仮想ディスクへのハンドル。 仮想ディスクを開く方法については、 OpenVirtualDisk 関数を参照してください。
[in] Flags
COMPACT_VIRTUAL_DISK_FLAG列挙のCOMPACT_VIRTUAL_DISK_FLAG_NONE値 (0) である必要があります。
[in, optional] Parameters
圧縮パラメーター データを含む有効な COMPACT_VIRTUAL_DISK_PARAMETERS 構造体への省略可能なポインター。
[in, optional] Overlapped
非同期操作が必要な場合は、有効な OVERLAPPED 構造体への省略可能なポインター。
戻り値
要求の状態。
関数が成功した場合、戻り値は ERROR_SUCCESS。
関数が失敗した場合、戻り値はエラー コードです。 詳細については、「 システム エラー コード」を参照してください。
注釈
圧縮は、動的に拡張または差分が可能な仮想ディスクでのみ実行できます。
圧縮には 2 種類があります。
- 最初の種類であるファイル システム対応圧縮では、NTFS ファイル システムを使用して空き領域を決定します。 これを行うには、OpenVirtualDisk に渡される VirtualDiskAccessMask パラメーターにVIRTUAL_DISK_ACCESS_METAOPSフラグとVIRTUAL_DISK_ACCESS_ATTACH_RO フラグを含め、AttachVirtualDisk を呼び出して VHD をアタッチし、VHD が CompactVirtualDisk を呼び出してアタッチされている間に、VHD を読み取り専用デバイスとしてアタッチします。 圧縮を行う前に VHD をデタッチすると、圧縮が完了する前に圧縮でエラーが返される可能性があります (圧縮のキャンセルと同様)。
- 2 番目の種類であるファイル システムに依存しない圧縮では、ファイル システムは含まれませんが、完全にゼロ (0) で満たされた VHD ブロックのみが検索されます。 これを行うには、OpenVirtualDisk に渡される VirtualDiskAccessMask パラメーターに VIRTUAL_DISK_ACCESS_METAOPS フラグを含め、CompactVirtualDisk を呼び出します。
仮想ディスクでの圧縮操作は安全に中断し、後で再実行できます。 中断された仮想ディスク ファイルを再度開くと、開くときに仮想ディスク ファイルのサイズが減少する可能性があります。
圧縮は、仮想ディスクの大きさと、移動が必要なブロックの数に応じて、CPU を集中的に使用したり、I/O 集中型にしたりできます。
CompactVirtualDisk 関数は、呼び出し元と同じセキュリティ コンテキストで仮想ディスク上で実行されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 |
サポートされている最小のサーバー | Windows Server 2008 R2 |
対象プラットフォーム | Windows |
ヘッダー | virtdisk.h |
Library | VirtDisk.lib |
[DLL] | VirtDisk.dll |