Freigeben über


RtlDecompressBufferEx2-Funktion (ntifs.h)

Die RtlDecompressBufferEx2 Funktion dekomprimiert einen gesamten komprimierten Puffer, wobei nach Möglichkeit mehrere Prozessoren verwendet werden. Die Unterstützung mehrerer Prozessor ist nur für Kernelmodus-Aufrufer 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 sind 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 LZ-Komprimierung durch.
COMPRESSION_FORMAT_XPRESS Die Funktion führt Xpress-Komprimierung durch.
COMPRESSION_FORMAT_XPRESS_HUFF Die Funktion führt die Xpress Huffman-Dekompression aus.

[out] UncompressedBuffer

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer (zugewiesen von einem ausgelagerten oder nicht ausgelagerten Pool), der die dekomprimierten Daten von CompressedBufferempfängt. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[in] UncompressedBufferSize

Die Größe des "UncompressedBuffer" Puffers in Byte.

[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 Byte.

[in] UncompressedChunkSize

Die Größe der einzelnen Blöcke im Komprimierungspuffer in Byte. Gültige Werte sind 512, 1024, 2048 und 4096.

[out] FinalUncompressedSize

Ein Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Größe der dekomprimierten Daten in Bytes empfängt, die in UncompressedBuffergespeichert sind. Dieser Parameter ist erforderlich und darf nicht NULL sein.

[in, optional] WorkSpace

Ein Zeiger auf einen vom Aufrufer zugewiesenen Arbeitsraumpuffer, der vom 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 geeigneten Fehlerstatuswert zurück, z. B. einen der folgenden.

Rückgabecode Beschreibung
STATUS_SUCCESS Der CompressedBuffer Puffer wurde erfolgreich dekomprimiert.
STATUS_INVALID_PARAMETER Ein ungültiges Komprimierungsformat wurde über den parameter CompressionFormat angegeben. Wenn CompressionFormat- entweder COMPRESSION_FORMAT_NONE oder COMPRESSION_FORMAT_DEFAULT (aber nicht beide) ist, wird dieser Wert zurückgegeben.
STATUS_UNSUPPORTED_COMPRESSION Ein ungültiges Komprimierungsformat wurde über den parameter CompressionFormat angegeben. Wenn CompressionFormat- nicht einer der folgenden 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 nicht groß genug ist, um die nicht komprimierten Daten zu enthalten.

Bemerkungen

Die RtlDecompressBufferEx2--Funktion übernimmt als Eingabe einen gesamten komprimierten Puffer und erzeugt sein dekomprimiertes Äquivalent, vorausgesetzt, dass die nicht komprimierten Daten in den angegebenen Zielpuffer passen.

Um nur einen Teil eines komprimierten Puffers (d. h. ein "Fragment" des Puffers) zu dekomprimieren, verwenden Sie die RtlDecompressFragment--Funktion.

Um einen nicht komprimierten Puffer zu komprimieren, verwenden Sie die RtlCompressBuffer Funktion.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10
Zielplattform- Universal
Header- ntifs.h (einschließlich Fltkernel.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= APC_LEVEL

Siehe auch

< FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressFragment

RtlDecompressFragmentEx