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

압축되지 않은 조각이 추출되는 0부터 시작하는 오프셋(바이트)입니다. 이 오프셋 값은 원래 압축되지 않은 버퍼 내의 위치입니다.

[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 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

추가 정보

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx