NTSYSAPI NTSTATUS NTAPIRtlCompressBuffer(
IN ULONG CompressionFormat, IN PVOID SourceBuffer, IN ULONG SourceBufferLength, OUT PVOID DestinationBuffer, IN ULONG DestinationBufferLength, IN ULONG Unknown, OUT PULONG pDestinationSize, IN PVOID WorkspaceBuffer );
CompressionFormat
Поддерживаются только 2 младших байта. Старшие байты означают движок компрессии. Младшие байты означают формат компрессии.Compression format (0-15). Биты 4-7 не используются. В NT 4.0 sp6 поддерживается только LZNT1. #define COMPRESSION_FORMAT_NONE (0x0000) // [result:STATUS_INVALID_PARAMETER] #define COMPRESSION_FORMAT_DEFAULT (0x0001) // [result:STATUS_INVALID_PARAMETER] #define COMPRESSION_FORMAT_LZNT1 (0x0002) #define COMPRESSION_FORMAT_NS3 (0x0003) // STATUS_NOT_SUPPORTED #define ... // STATUS_NOT_SUPPORTED #define COMPRESSION_FORMAT_NS15 (0x000F) // STATUS_NOT_SUPPORTED #define COMPRESSION_FORMAT_SPARSE (0x4000) // ??? [result:STATUS_INVALID_PARAMETER] Compression engine. Уровень сжатия. Большее значение означает большую компрессию, но более длинное время процесса сжатия. #define COMPRESSION_ENGINE_STANDARD (0x0000) // Standart compression #define COMPRESSION_ENGINE_MAXIMUM (0x0100) // Maximum (slowest but better) #define COMPRESSION_ENGINE_HIBER (0x0200) // STATUS_NOT_SUPPORTED Unknown
Здесь указывается 0x1000. Это, возможно, размер страницы.pDestinationSize
Размер данных после сжатия.WorkspaceBuffer