RtlDecompressBufferEx 함수(ntifs.h)

RtlDecompressBufferEx 함수는 압축된 전체 버퍼의 압축을 해제합니다.

구문

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedBuffer,
  [in]  ULONG  UncompressedBufferSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [out] PULONG FinalUncompressedSize,
  [in]  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

압축되지 않은 버퍼의 크기(바이트)입니다.

[in] CompressedBuffer

압축을 풀 데이터를 포함하는 버퍼에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] CompressedBufferSize

CompressedBuffer 버퍼의 크기(바이트)입니다.

[out] FinalUncompressedSize

UncompressedBuffer에 저장된 압축 해제된 데이터의 크기(바이트)를 수신하는 호출자 할당 변수에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] WorkSpace

압축을 풀 때 RtlDecompressBufferEx 함수에서 사용하는 호출자가 할당한 작업 공간 버퍼에 대한 포인터입니다. RtlGetCompressionWorkSpaceSize 함수를 사용하여 올바른 작업 공간 버퍼 크기를 확인합니다.

반환 값

RtlDecompressBufferEx는 다음 중 하나와 같은 적절한 오류 상태 값을 반환합니다.

반환 코드 설명
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
STATUS_BAD_COMPRESSION_BUFFER uncompressedBuffer 는 압축되지 않은 데이터를 포함할 만큼 크지 않습니다.

설명

RtlDecompressBufferEx 함수는 압축된 전체 버퍼를 입력으로 사용하고 압축되지 않은 데이터가 지정된 대상 버퍼 내에 맞는 경우 압축 해제된 해당 버퍼를 생성합니다.

압축된 버퍼의 일부(즉, 버퍼의 "조각")만 압축 해제하려면 RtlDecompressFragment 함수를 사용합니다.

압축되지 않은 버퍼를 압축하려면 RtlCompressBuffer 함수를 사용합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
대상 플랫폼 유니버설
헤더 ntifs.h(Fltkernel.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

추가 정보

<FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx2

RtlDecompressFragment

RtlDecompressFragmentEx