RtlGetCompressionWorkSpaceSize 함수(ntifs.h)
RtlGetCompressionWorkSpaceSize 함수는 RtlCompressBuffer 및 RtlDecompressFragment 함수에 대한 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
버퍼를 압축하는 데 필요한 크기(바이트)를 수신하는 호출자 할당 버퍼에 대한 포인터입니다. 이 값은 RtlCompressBuffer의 WorkSpace 버퍼의 올바른 크기를 결정하는 데 사용됩니다.
[out] CompressFragmentWorkSpaceSize
압축된 버퍼를 조각으로 압축 해제하는 데 필요한 크기(바이트)를 수신하는 호출자 할당 버퍼에 대한 포인터입니다. 이 값은 RtlDecompressFragment의 WorkSpace 버퍼의 올바른 크기를 결정하는 데 사용됩니다. 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(둘 다 아님)이 아닌 경우 이 값이 반환됩니다. |
설명
RtlCompressBuffer 및 RtlDecompressFragment함수는 압축을 풀고 압축을 풀기 위해 적절한 크기의 작업 공간 버퍼가 필요합니다. 올바른 작업 공간 버퍼 크기를 확인하려면 RtlGetCompressionWorkSpaceSize 함수를 호출합니다.
예를 들어 RtlCompressBuffer 함수의 WorkSpace 매개 변수는 적절한 크기의 작업 공간 버퍼를 가리킵니다. RtlGetCompressionWorkSpaceSize의 CompressBufferWorkSpaceSize 매개 변수는 이 크기를 제공합니다.
압축되지 않은 버퍼를 압축하려면 RtlCompressBuffer 함수를 사용합니다.
압축된 버퍼의 압축을 풀려면 RtlDecompressBuffer 함수를 사용합니다.
압축된 버퍼의 일부(즉, 버퍼의 "조각")만 압축 해제하려면 RtlDecompressFragment 함수를 사용합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows XP |
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Fltkernel.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |