共用方式為


RtlDecompressFragment 函式 (ntifs.h)

RtlDecompressFragment 函式是用來解壓縮壓縮緩衝區的一部分(也就是緩衝區「片段」)。

語法

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragment(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedFragment,
  [in]  ULONG  UncompressedFragmentSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [in]  ULONG  FragmentOffset,
  [out] PULONG FinalUncompressedSize,
  [in]  PVOID  WorkSpace
);

參數

[in] CompressionFormat

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

價值 意義
COMPRESSION_FORMAT_NONE 此函式不支援。
COMPRESSION_FORMAT_DEFAULT 此函式不支援。
COMPRESSION_FORMAT_LZNT1 指定應該執行壓縮。 此值是必要的。

[out] UncompressedFragment

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

[in] UncompressedFragmentSize

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

[in] CompressedBuffer

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

[in] CompressedBufferSize

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

[in] FragmentOffset

以位元組為單位的以零起始的位移,其中未壓縮的片段正在擷取。 這個位移值是原始未壓縮緩衝區內的位置。

[out] FinalUncompressedSize

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

[in] WorkSpace

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

傳回值

RtlDecompressFragment會傳回適當的 NTSTATUS 程式代碼,例如下列其中一項:

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

言論

相對於 RtlDecompressBuffer 函式,RtlDecompressFragment 用於從壓縮緩衝區解壓縮部分數據(相對於整個緩衝區)。

若要判斷 WorkSpace 參數的正確緩衝區大小,請使用 RtlGetCompressionWorkSpaceSize 函式(也就是 RtlGetCompressionWorkSpaceSize 參數所傳回的值)。

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

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

要求

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

另請參閱

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx