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 |