다음을 통해 공유


RtlDecompressFragmentEx 함수(ntifs.h)

RtlDecompressFragmentEx 함수는 가능한 경우 여러 프로세서를 사용하여 압축된 버퍼(즉, 버퍼 "조각")의 일부를 압축 해제하는 데 사용됩니다.

구문

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragmentEx(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedFragment,
  [in]  ULONG  UncompressedFragmentSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [in]  ULONG  FragmentOffset,
  [in]  ULONG  UncompressedChunkSize,
  [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부터 시작하는 오프셋(바이트)입니다. 이 오프셋 값은 원래 압축되지 않은 버퍼 내의 위치입니다.

[in] UncompressedChunkSize

압축 버퍼 내의 각 청크의 크기(바이트)입니다. 유효한 값은 512, 1024, 2048 및 4096입니다.

[out] FinalUncompressedSize

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

[in] WorkSpace

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

반환 값

RtlDecompressFragmentEx 는 다음 중 하나와 같은 적절한 NTSTATUS 코드를 반환합니다.

반환 코드 설명
STATUS_SUCCESS CompressedBuffer 버퍼가 압축 해제됨Fragment로 압축 해제되었습니다.
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 압축되지 않은Fragment 는 압축되지 않은 데이터를 포함할 만큼 크지 않습니다.

요구 사항

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

추가 정보

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragment