RtlDecompressBufferEx2-Funktion (ntifs.h)
Die RtlDecompressBufferEx2-Funktion dekomprimiert einen gesamten komprimierten Puffer und verwendet nach Möglichkeit mehrere Prozessoren. Die Unterstützung mehrerer Prozessoren wird nur für Kernelmodusaufrufer implementiert.
Syntax
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx2(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedBuffer,
[in] ULONG UncompressedBufferSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG UncompressedChunkSize,
[out] PULONG FinalUncompressedSize,
[in, optional] PVOID WorkSpace
);
Parameter
[in] CompressionFormat
Eine Bitmaske, die das Komprimierungsformat des komprimierten Puffers angibt. Dieser Parameter muss auf COMPRESSION_FORMAT_LZNT1 festgelegt werden. Die Bedeutung dieses und anderer verwandter Komprimierungsformatwerte lautet wie folgt.
Wert | Bedeutung |
---|---|
COMPRESSION_FORMAT_NONE | Von dieser Funktion nicht unterstützt. |
COMPRESSION_FORMAT_DEFAULT | Von dieser Funktion nicht unterstützt. |
COMPRESSION_FORMAT_LZNT1 | Die Funktion führt die LZ-Komprimierung aus. |
COMPRESSION_FORMAT_XPRESS | Die Funktion führt Xpress-Komprimierung aus. |
COMPRESSION_FORMAT_XPRESS_HUFF | Die Funktion führt die Xpress Huffman-Dekomprimierung aus. |
[out] UncompressedBuffer
Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer (zugeordnet aus einem ausgelagerten oder nicht ausgelagerten Pool), der die dekomprimierten Daten aus CompressedBuffer empfängt. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in] UncompressedBufferSize
Die Größe des UncompressedBuffer-Puffers in Bytes.
[in] CompressedBuffer
Ein Zeiger auf den Puffer, der die zu dekomprimierenden Daten enthält. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in] CompressedBufferSize
Die Größe des CompressedBuffer-Puffers in Bytes.
[in] UncompressedChunkSize
Die Größe jedes Blöckes innerhalb des Komprimierungspuffers in Bytes. Gültige Werte sind 512, 1024, 2048 und 4096.
[out] FinalUncompressedSize
Ein Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Größe der in UncompressedBuffer gespeicherten dekomprimierten Daten in Bytes empfängt. Dieser Parameter ist erforderlich und darf nicht NULL sein.
[in, optional] WorkSpace
Ein Zeiger auf einen vom Aufrufer zugewiesenen Arbeitsraumpuffer, der von der RtlDecompressBufferEx2-Funktion während der Dekomprimierung verwendet wird. Verwenden Sie die RtlGetCompressionWorkSpaceSize-Funktion , um die richtige Größe des Arbeitsraumpuffers zu bestimmen.
Rückgabewert
RtlDecompressBufferEx2 gibt einen entsprechenden Fehler status Wert zurück, z. B. einen der folgenden.
Rückgabecode | Beschreibung |
---|---|
STATUS_SUCCESS | Der CompressedBuffer-Puffer wurde erfolgreich dekomprimiert. |
STATUS_INVALID_PARAMETER | Mit dem CompressionFormat-Parameter wurde ein ungültiges Komprimierungsformat angegeben. Wenn CompressionFormat entweder COMPRESSION_FORMAT_NONE oder COMPRESSION_FORMAT_DEFAULT ist (aber nicht beide), wird dieser Wert zurückgegeben. |
STATUS_UNSUPPORTED_COMPRESSION | Mit dem CompressionFormat-Parameter wurde ein ungültiges Komprimierungsformat angegeben. Wenn CompressionFormat keine der folgenden Elemente ist, wird STATUS_UNSUPPORTED_COMPRESSION zurückgegeben: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUFF, COMPRESSION_FORMAT_NONE, COMPRESSION_FORMAT_DEFAULT |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedBuffer ist nicht groß genug, um die nicht komprimierten Daten zu enthalten. |
Hinweise
Die RtlDecompressBufferEx2-Funktion übernimmt als Eingabe einen gesamten komprimierten Puffer und erzeugt dessen dekomprimiertes Äquivalent, sofern die nicht komprimierten Daten in den angegebenen Zielpuffer passen.
Verwenden Sie die RtlDecompressFragment-Funktion , um nur einen Teil eines komprimierten Puffers (d. h. ein "Fragment" des Puffers) zu dekomprimieren.
Verwenden Sie die Funktion RtlCompressBuffer , um einen nicht komprimierten Puffer zu komprimieren.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Zielplattform | Universell |
Header | ntifs.h (einschließlich Fltkernel.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |