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 (包括 Fltkernel.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx