共用方式為


RtlGetCompressionWorkSpaceSize 函式 (ntifs.h)

RtlGetCompressionWorkSpaceSize 函式可用來判斷 RtlCompressBufferRtlDecompressFragment 函式 WorkSpace 緩衝區的正確大小。

語法

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

參數

[in] CompressionFormatAndEngine

指定壓縮格式和引擎類型的位掩碼。 此參數必須設定為一個格式類型和一個引擎類型的有效位 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 UncompressedBuffer 緩衝區會使用提供數據壓縮與效能平衡的演算法進行壓縮。 這個值不能與COMPRESSION_ENGINE_MAXIMUM搭配使用。
COMPRESSION_ENGINE_MAXIMUM UncompressedBuffer 緩衝區會使用提供最大數據壓縮但效能相對較慢的演算法進行壓縮。 這個值不能與COMPRESSION_ENGINE_STANDARD搭配使用。
COMPRESSION_ENGINE_HIBER 此函式不支援。

[out] CompressBufferWorkSpaceSize

呼叫端配置的緩衝區指標,接收壓縮緩衝區所需的大小,以位元組為單位。 這個值可用來判斷 RtlCompressBufferWorkSpace 緩衝區的正確大小。

[out] CompressFragmentWorkSpaceSize

呼叫端配置的緩衝區指標,接收壓縮緩衝區到片段所需的大小,以位元組為單位。 這個值可用來判斷WorkSpace 緩衝區RtlDecompressFragment 的正確大小。 請注意,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或COMPRESSION_ENGINE_MAXIMUM,則會傳回此值。

言論

RtlCompressBufferRtlDecompressFragment函式需要適當大小的工作空間緩衝區才能成功壓縮和解壓縮。 若要判斷正確的工作空間緩衝區大小,以位元組為單位,請呼叫 RtlGetCompressionWorkSpaceSize 函式。

例如,RtlCompressBuffer 函式的 WorkSpace 參數必須指向適當大小的工作空間緩衝區。 RtlGetCompressionWorkSpaceSizeCompressBufferWorkSpaceSize 參數會提供這個大小。

若要壓縮未壓縮的緩衝區,請使用 RtlCompressBuffer 函式。

若要解壓縮壓縮的緩衝區,請使用 RtlDecompressBuffer 函式。

若要僅解壓縮壓縮緩衝區的一部分(也就是緩衝區的「片段」),請使用 RtlDecompressFragment 函式。

要求

要求 價值
最低支援的用戶端 Windows XP
目標平臺 普遍
標頭 ntifs.h (include Fltkernel.h, Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressFragment