Freigeben über


RtlDecompressBuffer-Funktion (ntifs.h)

Die RtlDecompressBuffer-Funktion dekomprimiert einen gesamten komprimierten Puffer.

Syntax

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBuffer(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedBuffer,
  [in]  ULONG  UncompressedBufferSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [out] PULONG FinalUncompressedSize
);

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 Wird von dieser Funktion nicht unterstützt.
COMPRESSION_FORMAT_DEFAULT Wird von dieser Funktion nicht unterstützt.
COMPRESSION_FORMAT_LZNT1 Die Funktion führt die LZ-Komprimierung aus.
COMPRESSION_FORMAT_XPRESS Die Funktion führt die Xpress-Komprimierung aus.

[out] UncompressedBuffer

Ein Zeiger auf einen vom Aufrufer zugeordneten Puffer (zugeordnet aus einem ausgelagerten oder nicht ausgelagerten Pool), der die dekomprimierten Daten von 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.

[out] FinalUncompressedSize

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

Rückgabewert

RtlDecompressBuffer gibt einen geeigneten Fehler status Wert 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 CompressionFormat-Parameter angegeben. Wenn CompressionFormat entweder COMPRESSION_FORMAT_NONE oder COMPRESSION_FORMAT_DEFAULT ist (aber nicht beide), wird dieser Wert zurückgegeben.
STATUS_UNSUPPORTED_COMPRESSION Ein ungültiges Komprimierungsformat wurde über den CompressionFormat-Parameter angegeben. Wenn CompressionFormat nicht einer der folgenden Ist, wird STATUS_UNSUPPORTED_COMPRESSION zurückgegeben: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS
STATUS_BAD_COMPRESSION_BUFFER UncompressedBuffer ist nicht groß genug, um die unkomprimierten Daten zu enthalten.

Hinweise

Die RtlDecompressBuffer-Funktion verwendet als Eingabe einen gesamten komprimierten Puffer und erzeugt dessen dekomprimierte Entsprechung, sofern die unkomprimierten 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 unkomprimierten Puffer zu komprimieren, verwenden Sie die RtlCompressBuffer-Funktion .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP
Zielplattform Universell
Header ntifs.h (include Fltkernel.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Weitere Informationen

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragment

RtlDecompressFragmentEx