IVdsOpenVDisk::Compact メソッド (vds.h)

[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。

仮想ディスクを圧縮して、バッキング ファイルの物理サイズを小さくします。

構文

HRESULT Compact(
  [in]  COMPACT_VIRTUAL_DISK_FLAG Flags,
  [in]  ULONG                     Reserved,
  [out] IVdsAsync                 **ppAsync
);

パラメーター

[in] Flags

仮想ディスクの圧縮方法を指定する COMPACT_VIRTUAL_DISK_FLAG 列挙値。 COMPACT_VIRTUAL_DISK_FLAG_NONEに設定する必要があります。

[in] Reserved

このパラメーターは、システムで使用するために予約されています。

[out] ppAsync

正常に完了すると、この操作を監視および制御するための IVdsAsync インターフェイスを受け取る IVdsAsync インターフェイスへのポインター。 呼び出し元は、受信したインターフェイスが終了したら、それを解放する必要があります。 インターフェイスで IVdsAsync::Wait メソッドが呼び出され、成功した HRESULT 値が返された場合、 VDS_ASYNC_OUTPUT 構造体で返されるインターフェイスは、各インターフェイス ポインターで IUnknown::Release メソッドを呼び出して解放する必要があります。 ただし、Wait がエラー HRESULT 値を返す場合、または WaitpHrResult パラメーターがエラー HRESULT 値を受け取る場合、VDS_ASYNC_OUTPUT構造体のインターフェイス ポインターは NULL であり、解放する必要はありません。 成功または失敗の HRESULT 値をテストするには、Winerror.h で定義 されている SUCCEEDED マクロと FAILED マクロを使用します。

戻り値

このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、 VDS 固有の戻り値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。

リターン コード 説明
S_OK
メソッドは正常に完了しました。

解説

仮想ディスクは、次のいずれかの状態にある場合にのみ圧縮できます。

  • デタッチ済み (オフライン モード)
  • 読み取り専用アクセスで接続および開く (オンライン モード)
その他の状態の場合、圧縮操作は失敗します。

仮想ディスクは、展開可能 (動的とも呼ばれます) または差分仮想ディスクである必要があります。

操作は安全に中断され、後で再実行できます。 操作が中断され、バッキング ファイルが再度開かれると、ファイルを開いたときにファイルのサイズが小さくなる可能性があります。

操作は、仮想ディスクの大きさと操作が必要な未使用のブロックの数に応じて、CPU を集中的に使用するか、I/O 集中型にするか、またはその両方にすることができます。

このメソッドは、未使用の領域を再利用することで、仮想ディスクのバッキング ストア ファイルのサイズを小さくします。 デタッチされた仮想ディスクに対してこのメソッドを呼び出すと、データの書き込みに使用されなかったファイル内の領域のみを再利用できます。 読み取り専用アクセスで接続され、開かれている仮想ディスクに対して呼び出された場合は、一度使用されたが、後で解放された領域を再利用できます。 読み取り専用アクセスで接続され、開かれている仮想ディスクに対してこのメソッドを呼び出すと、バッキング ストア ファイル内の最大空き領域が再利用されます。

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー vds.h
Library Uuid.lib

こちらもご覧ください

IVdsOpenVDisk