Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция 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
Размер в байтах буфера сжатойBuffer.
[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 (include Fltkernel.h, Ntifs.h) |
| библиотеки | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |