RtlGetCompressionWorkSpaceSize 함수(ntifs.h)

RtlGetCompressionWorkSpaceSize 함수는 RtlCompressBufferRtlDecompressFragment 함수에 대한 WorkSpace 버퍼의 올바른 크기를 결정하는 데 사용됩니다.

구문

NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
  [in]  USHORT CompressionFormatAndEngine,
  [out] PULONG CompressBufferWorkSpaceSize,
  [out] PULONG CompressFragmentWorkSpaceSize
);

매개 변수

[in] CompressionFormatAndEngine

압축 형식 및 엔진 유형을 지정하는 비트 마스크입니다. 이 매개 변수는 하나의 형식 형식과 하나의 엔진 형식의 유효한 비트 OR 조합으로 설정해야 합니다. 예를 들어 COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.

이러한 의미 및 기타 관련 값은 다음과 같습니다.

의미
COMPRESSION_FORMAT_NONE 이 함수에서 지원되지 않습니다.
COMPRESSION_FORMAT_DEFAULT 이 함수에서 지원되지 않습니다.
COMPRESSION_FORMAT_LZNT1 함수는 LZ 압축을 수행합니다.
COMPRESSION_FORMAT_XPRESS 함수는 Xpress 압축을 수행합니다.
COMPRESSION_FORMAT_XPRESS_HUFF 함수는 Xpress Huffman 압축을 수행합니다.
COMPRESSION_ENGINE_STANDARD UncompressedBuffer 버퍼는 데이터 압축과 성능 간의 균형을 제공하는 알고리즘을 사용하여 압축됩니다. 이 값은 COMPRESSION_ENGINE_MAXIMUM 사용할 수 없습니다.
COMPRESSION_ENGINE_MAXIMUM UncompressedBuffer 버퍼는 최대 데이터 압축을 제공하지만 성능이 상대적으로 느린 알고리즘을 사용하여 압축됩니다. 이 값은 COMPRESSION_ENGINE_STANDARD 사용할 수 없습니다.
COMPRESSION_ENGINE_HIBER 이 함수에서 지원되지 않습니다.

[out] CompressBufferWorkSpaceSize

버퍼를 압축하는 데 필요한 크기(바이트)를 수신하는 호출자 할당 버퍼에 대한 포인터입니다. 이 값은 RtlCompressBufferWorkSpace 버퍼의 올바른 크기를 결정하는 데 사용됩니다.

[out] CompressFragmentWorkSpaceSize

압축된 버퍼를 조각으로 압축 해제하는 데 필요한 크기(바이트)를 수신하는 호출자 할당 버퍼에 대한 포인터입니다. 이 값은 RtlDecompressFragmentWorkSpace 버퍼의 올바른 크기를 결정하는 데 사용됩니다. RtlCompressFragment 함수는 현재 존재하지 않습니다.

반환 값

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

반환 코드 설명
STATUS_SUCCESS 필요한 버퍼 크기(바이트)가 성공적으로 반환되었습니다.
STATUS_INVALID_PARAMETER CompressionFormatAndEngine 매개 변수를 통해 잘못된 압축 형식을 지정했습니다. CompressionFormatAndEngine이 COMPRESSION_FORMAT_NONE 또는 COMPRESSION_FORMAT_DEFAULT(둘 다 아님)인 경우 이 값이 반환됩니다.
STATUS_UNSUPPORTED_COMPRESSION CompressionFormatAndEngine 매개 변수를 통해 잘못된 압축 형식을 지정했습니다. CompressionFormatAndEngine이 다음 중 하나가 아닌 경우 STATUS_UNSUPPORTED_COMPRESSION 반환됩니다. COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUF
STATUS_NOT_SUPPORTED CompressionFormatAndEngine 매개 변수를 통해 잘못된 압축 엔진을 지정했습니다. CompressionFormatAndEngine이 COMPRESSION_ENGINE_STANDARD 또는 COMPRESSION_ENGINE_MAXIMUM(둘 다 아님)이 아닌 경우 이 값이 반환됩니다.

설명

RtlCompressBufferRtlDecompressFragment함수는 압축을 풀고 압축을 풀기 위해 적절한 크기의 작업 공간 버퍼가 필요합니다. 올바른 작업 공간 버퍼 크기를 확인하려면 RtlGetCompressionWorkSpaceSize 함수를 호출합니다.

예를 들어 RtlCompressBuffer 함수의 WorkSpace 매개 변수는 적절한 크기의 작업 공간 버퍼를 가리킵니다. RtlGetCompressionWorkSpaceSizeCompressBufferWorkSpaceSize 매개 변수는 이 크기를 제공합니다.

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

압축된 버퍼의 압축을 풀려면 RtlDecompressBuffer 함수를 사용합니다.

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

요구 사항

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

추가 정보

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressFragment