RtlDecompressBufferEx2 函式 (ntifs.h)

RtlDecompressBufferEx2 函式會盡可能使用多個處理器解壓縮整個壓縮緩衝區。 只有核心模式呼叫端才實作多個處理器支援。

語法

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx2(
  [in]           USHORT CompressionFormat,
  [out]          PUCHAR UncompressedBuffer,
  [in]           ULONG  UncompressedBufferSize,
  [in]           PUCHAR CompressedBuffer,
  [in]           ULONG  CompressedBufferSize,
  [in]           ULONG  UncompressedChunkSize,
  [out]          PULONG FinalUncompressedSize,
  [in, optional] PVOID  WorkSpace
);

參數

[in] CompressionFormat

指定壓縮緩衝區壓縮格式的位掩碼。 此參數必須設定為 COMPRESSION_FORMAT_LZNT1。 這和其他相關壓縮格式值的意義如下。

意義
COMPRESSION_FORMAT_NONE 此函式不支援。
COMPRESSION_FORMAT_DEFAULT 此函式不支援。
COMPRESSION_FORMAT_LZNT1 函式會執行 LZ 壓縮。
COMPRESSION_FORMAT_XPRESS 函式會執行 Xpress 壓縮。
COMPRESSION_FORMAT_XPRESS_HUFF 函式會執行 Xpress Huffman 解壓縮。

[out] UncompressedBuffer

呼叫端配置的緩衝區指標 (從分頁或非分頁集區配置,) 從 CompressedBuffer 接收解壓縮的數據。 這個參數是必要的,而且不能是 NULL。

[in] UncompressedBufferSize

UncompressedBuffer 緩衝區的大小,以位元組為單位。

[in] CompressedBuffer

緩衝區的指標,其中包含要解壓縮的數據。 這個參數是必要的,而且不能是 NULL。

[in] CompressedBufferSize

CompressedBuffer 緩衝區的大小,以位元組為單位。

[in] UncompressedChunkSize

壓縮緩衝區內每個區塊的大小,以位元組為單位。 有效值為 512、1024、2048 和 4096。

[out] FinalUncompressedSize

呼叫端配置的變數指標,可接收 儲存在 UncompressedBuffer 中之解壓縮數據的位元組大小。 這個參數是必要的,而且不能是 NULL。

[in, optional] WorkSpace

在解壓縮期間, RtlDecompressBufferEx2 函式所使用的呼叫端配置工作區緩衝區指標。 使用 RtlGetCompressionWorkSpaceSize 函式來判斷正確的工作區緩衝區大小。

傳回值

RtlDecompressBufferEx2 會傳回適當的錯誤狀態值,例如下列其中一個。

傳回碼 Description
STATUS_SUCCESS CompressedBuffer 緩衝區已成功解壓縮。
STATUS_INVALID_PARAMETER 透過 CompressionFormat 參數指定了無效的壓縮格式。 如果 CompressionFormat 是COMPRESSION_FORMAT_NONE或COMPRESSION_FORMAT_DEFAULT (,但不是兩者) ,則會傳回此值。
STATUS_UNSUPPORTED_COMPRESSION 透過 CompressionFormat 參數指定了無效的壓縮格式。 如果 CompressionFormat 不是下列其中一項,則會傳回STATUS_UNSUPPORTED_COMPRESSION:COMPRESSION_FORMAT_LZNT1、COMPRESSION_FORMAT_XPRESS、COMPRESSION_FORMAT_XPRESS_HUFF、COMPRESSION_FORMAT_NONE、COMPRESSION_FORMAT_DEFAULT
STATUS_BAD_COMPRESSION_BUFFER UncompressedBuffer 不夠大,無法包含未壓縮的數據。

備註

RtlDecompressBufferEx2 函式會接受整個壓縮緩衝區的輸入,併產生其解壓縮的對等專案,前提是未壓縮的數據符合指定的目的地緩衝區。

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

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

規格需求

需求
最低支援的用戶端 Windows 10
目標平台 Universal
標頭 ntifs.h (包括 Fltkernel.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL <= APC_LEVEL

另請參閱

<FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressFragment

RtlDecompressFragmentEx