RtlDecompressBuffer-Funktion (ntifs.h)
Die RtlDecompressBuffer Funktionsdekomprimierung einen gesamten komprimierten Puffer dekomprimiert.
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 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. |
[out] UncompressedBuffer
Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer (zugewiesen aus seitenseitigem oder nicht seitenseitigem Pool), der die dekomprimierten Daten von CompressedBufferempfängt. Dieser Parameter ist erforderlich und kann nicht NULL-werden.
[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 kann nicht NULL-werden.
[in] CompressedBufferSize
Die Größe des CompressedBuffer- Puffers in Byte.
[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 kann nicht NULL-werden.
Rückgabewert
RtlDecompressBuffer 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 |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedBuffer nicht groß genug ist, um die nicht komprimierten Daten zu enthalten. |
Bemerkungen
Die RtlDecompressBuffer- Funktion übernimmt als Eingabe einen gesamten komprimierten Puffer und erzeugt ihr dekomprimiertes Äquivalent, sofern 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 XP |
Zielplattform- | Universal |
Header- | ntifs.h (einschließlich Fltkernel.h, Ntifs.h) |
Library | NtosKrnl.lib |
DLL- | NtosKrnl.exe |
IRQL- | <= APC_LEVEL |