Функция RtlGetCompressionWorkSpaceSize (ntifs.h)
Функция RtlGetCompressionWorkSpaceSize используется для определения правильного размера буфера WorkSpace для функций RtlCompressBuffer и RtlDecompressFragment .
Синтаксис
NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
[in] USHORT CompressionFormatAndEngine,
[out] PULONG CompressBufferWorkSpaceSize,
[out] PULONG CompressFragmentWorkSpaceSize
);
Параметры
[in] CompressionFormatAndEngine
Битовая маска, указывающая формат сжатия и тип обработчика. Для этого параметра необходимо задать допустимое побитовое или сочетание одного типа формата и одного типа подсистемы. Например, 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
Указатель на буфер, выделенный вызывающим объектом, получающий размер в байтах, необходимый для сжатия буфера. Это значение используется для определения правильного размера буфера WorkSpace RtlCompressBuffer.
[out] CompressFragmentWorkSpaceSize
Указатель на буфер, выделенный вызывающим объектом, получающий размер в байтах, необходимый для распаковки сжатого буфера во фрагмент. Это значение используется для определения правильного размера буфера WorkSpace RtlDecompressFragment. Обратите внимание, что функция 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 .
Например, параметр WorkSpace функции RtlCompressBuffer должен указывать на буфер рабочего пространства соответствующего размера. Параметр CompressBufferWorkSpaceSizeобъекта RtlGetCompressionWorkSpaceSize предоставляет этот размер.
Чтобы сжать несжатый буфер, используйте функцию RtlCompressBuffer .
Чтобы распаковать сжатый буфер, используйте функцию RtlDecompressBuffer .
Чтобы распаковка только части сжатого буфера (то есть "фрагмента" буфера), используйте функцию RtlDecompressFragment .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Fltkernel.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по