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
バッファーを圧縮するために必要なサイズ (バイト単位) を受け取る呼び出し元によって割り当てられたバッファーへのポインター。 この値は、 RtlCompressBuffer の WorkSpace バッファーの正しいサイズを決定するために使用されます。
[out] CompressFragmentWorkSpaceSize
圧縮されたバッファーをフラグメントに圧縮解除するために必要なサイズ (バイト単位) を受け取る呼び出し元によって割り当てられたバッファーへのポインター。 この値は、 RtlDecompressFragment の WorkSpace バッファーの正しいサイズを決定するために使用されます。 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 パラメーターは、適切なサイズの作業空間バッファーを指す必要があります。 RtlGetCompressionWorkSpaceSize の CompressBufferWorkSpaceSize パラメーターは、このサイズを提供します。
圧縮されていないバッファーを圧縮するには、 RtlCompressBuffer 関数を 使用します。
圧縮バッファーを圧縮解除するには、 RtlDecompressBuffer 関数を 使用します。
圧縮バッファーの一部 (つまり、バッファーの "フラグメント") のみを圧縮解除するには、 RtlDecompressFragment 関数を使用します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Fltkernel.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示