Функция RtlDecompressFragmentEx (ntifs.h)
Функция RtlDecompressFragmentEx используется для распаковки части сжатого буфера (т. е. буфера "фрагмент"), используя по возможности несколько процессоров.
Синтаксис
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragmentEx(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedFragment,
[in] ULONG UncompressedFragmentSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG FragmentOffset,
[in] ULONG UncompressedChunkSize,
[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
Отсчитываемое от нуля смещение в байтах, из которого извлекается несжатый фрагмент. Это значение смещения — это позиция в исходном несжатом буфере.
[in] UncompressedChunkSize
Размер (в байтах) каждого блока в буфере сжатия. Допустимые значения: 512, 1024, 2048 и 4096.
[out] FinalUncompressedSize
Указатель на переменную, выделенную вызывающим объектом, которая получает размер в байтах распакованных данных, хранящихся в UncompressedFragment. Этот параметр является обязательным и не может иметь значение NULL.
[in] WorkSpace
Указатель на буфер рабочего пространства, выделенный вызывающим объектом, используемый функцией RtlDecompressFragmentEx во время распаковки. Используйте функцию RtlGetCompressionWorkSpaceSize , чтобы определить правильный размер буфера рабочего пространства.
Возвращаемое значение
RtlDecompressFragmentEx возвращает соответствующий код 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 недостаточно велик, чтобы содержать несжатые данные. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Fltkernel.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по