RtlGetCompressionWorkSpaceSize 関数 (ntifs.h)

RtlGetCompressionWorkSpaceSize 関数は、RtlCompressBuffer 関数と RtlDecompressFragment 関数の WorkSpace バッファーの正しいサイズを決定するために使用されます。

構文

NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
  [in]  USHORT CompressionFormatAndEngine,
  [out] PULONG CompressBufferWorkSpaceSize,
  [out] PULONG CompressFragmentWorkSpaceSize
);

パラメーター

[in] CompressionFormatAndEngine

圧縮形式とエンジンの種類を指定するビットマスク。 このパラメーターは、1 つのフォーマット・タイプと 1 つのエンジン・タイプの有効なビットごとの OR 組み合わせに設定する必要があります。 たとえば、COMPRESSION_FORMAT_LZNT1 |COMPRESSION_ENGINE_STANDARD。

これらの意味とその他の関連する値は次のとおりです。

意味
COMPRESSION_FORMAT_NONE この関数ではサポートされていません。
COMPRESSION_FORMAT_DEFAULT この関数ではサポートされていません。
COMPRESSION_FORMAT_LZNT1 関数は LZ 圧縮を実行します。
COMPRESSION_FORMAT_XPRESS 関数は Xpress 圧縮を実行します。
COMPRESSION_FORMAT_XPRESS_HUFF 関数は Xpress Huffman 圧縮を実行します。
COMPRESSION_ENGINE_STANDARD 非圧縮バッファー バッファーは、データ圧縮とパフォーマンスのバランスを取るアルゴリズムを使用して圧縮されます。 この値は、COMPRESSION_ENGINE_MAXIMUMでは使用できません。
COMPRESSION_ENGINE_MAXIMUM 非圧縮バッファー バッファーは、最大データ圧縮を提供するが、パフォーマンスは比較的遅いアルゴリズムを使用して圧縮されます。 この値は、COMPRESSION_ENGINE_STANDARDでは使用できません。
COMPRESSION_ENGINE_HIBER この関数ではサポートされていません。

[out] CompressBufferWorkSpaceSize

バッファーを圧縮するために必要なサイズ (バイト単位) を受け取る呼び出し元によって割り当てられたバッファーへのポインター。 この値は、 RtlCompressBufferWorkSpace バッファーの正しいサイズを決定するために使用されます。

[out] CompressFragmentWorkSpaceSize

圧縮されたバッファーをフラグメントに圧縮解除するために必要なサイズ (バイト単位) を受け取る呼び出し元によって割り当てられたバッファーへのポインター。 この値は、 RtlDecompressFragmentWorkSpace バッファーの正しいサイズを決定するために使用されます。 RtlCompressFragment 関数は現在存在しないことに注意してください。

戻り値

RtlGetCompressionWorkSpaceSizeは、次のいずれかの適切なエラー状態を返します。

リターン コード 説明
STATUS_SUCCESS 必要なバッファー サイズ (バイト単位) が正常に返されました。
STATUS_INVALID_PARAMETER CompressionFormatAndEngine パラメーターを使用して、無効な圧縮形式が指定されました。 CompressionFormatAndEngine がCOMPRESSION_FORMAT_NONEまたはCOMPRESSION_FORMAT_DEFAULT (両方ではない) の場合は、この値が返されます。
STATUS_UNSUPPORTED_COMPRESSION CompressionFormatAndEngine パラメーターを使用して、無効な圧縮形式が指定されました。 CompressionFormatAndEngine が次のいずれかでない場合は、STATUS_UNSUPPORTED_COMPRESSIONが返されます: COMPRESSION_FORMAT_LZNT1、COMPRESSION_FORMAT_XPRESS、COMPRESSION_FORMAT_XPRESS_HUF
STATUS_NOT_SUPPORTED CompressionFormatAndEngine パラメーターを使用して、無効な圧縮エンジンが指定されました。 CompressionFormatAndEngine がCOMPRESSION_ENGINE_STANDARDまたはCOMPRESSION_ENGINE_MAXIMUM (両方ではない) 場合は、この値が返されます。

注釈

RtlCompressBuffer 関数と RtlDecompressFragment関数では、圧縮と圧縮解除を正常に行うために、適切なサイズの作業領域バッファーが必要です。 正しい作業領域バッファー サイズをバイト単位で確認するには、 RtlGetCompressionWorkSpaceSize 関数を呼び出します。

たとえば、RtlCompressBuffer 関数の WorkSpace パラメーターは、適切なサイズの作業空間バッファーを指す必要があります。 RtlGetCompressionWorkSpaceSizeCompressBufferWorkSpaceSize パラメーターは、このサイズを提供します。

圧縮されていないバッファーを圧縮するには、 RtlCompressBuffer 関数を 使用します。

圧縮バッファーを圧縮解除するには、 RtlDecompressBuffer 関数を 使用します。

圧縮バッファーの一部 (つまり、バッファーの "フラグメント") のみを圧縮解除するには、 RtlDecompressFragment 関数を使用します。

要件

要件
サポートされている最小のクライアント Windows XP
対象プラットフォーム ユニバーサル
Header ntifs.h (Fltkernel.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= APC_LEVEL

こちらもご覧ください

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressFragment