Freigeben über


RtlDecompressFragment-Funktion (ntifs.h)

Die RtlDecompressFragment-Funktion wird verwendet, um einen Teil eines komprimierten Puffers (d. h. ein Pufferfragment) zu dekomprimieren.

Syntax

NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragment(
  [in]  USHORT CompressionFormat,
  [out] PUCHAR UncompressedFragment,
  [in]  ULONG  UncompressedFragmentSize,
  [in]  PUCHAR CompressedBuffer,
  [in]  ULONG  CompressedBufferSize,
  [in]  ULONG  FragmentOffset,
  [out] PULONG FinalUncompressedSize,
  [in]  PVOID  WorkSpace
);

Parameter

[in] CompressionFormat

Bitmaske, die das Komprimierungsformat des komprimierten Puffers angibt. Dieser Parameter muss auf COMPRESSION_FORMAT_LZNT1 festgelegt werden. Die Bedeutung dieser 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 Gibt an, dass die Komprimierung ausgeführt werden soll. Dieser Wert ist erforderlich.

[out] UncompressedFragment

Zeiger auf einen vom Aufrufer zugewiesenen 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] UncompressedFragmentSize

Die Größe des UncompressedFragment-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] FragmentOffset

Der nullbasierte Offset in Bytes, aus dem das unkomprimierte Fragment extrahiert wird. Dieser Offsetwert ist die Position innerhalb des ursprünglichen nicht komprimierten Puffers.

[out] FinalUncompressedSize

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

[in] WorkSpace

Ein Zeiger auf einen vom Aufrufer zugewiesenen Arbeitsraumpuffer, der von der RtlDecompressFragment-Funktion während der Dekomprimierung verwendet wird. Verwenden Sie die RtlGetCompressionWorkSpaceSize-Funktion , um die richtige Größe des Arbeitsraumpuffers zu bestimmen.

Rückgabewert

RtlDecompressFragmentgibt einen entsprechenden NTSTATUS-Code zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_SUCCESS Der CompressedBuffer-Puffer wurde erfolgreich in UncompressedFragment dekomprimiert.
STATUS_INVALID_PARAMETER Über den 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 Über den CompressionFormat-Parameter wurde ein ungültiges Komprimierungsformat angegeben. Wenn CompressionFormat keine der folgenden Elemente ist, wird STATUS_UNSUPPORTED_COMPRESSION zurückgegeben: COMPRESSION_FORMAT_LZNT1
STATUS_BAD_COMPRESSION_BUFFER UncompressedFragment ist nicht groß genug, um die nicht komprimierten Daten zu enthalten.

Hinweise

Relativ zur RtlDecompressBuffer-Funktion wird RtlDecompressFragment zum Dekomprimieren eines Teils der Daten aus einem komprimierten Puffer (im Gegensatz zum gesamten Puffer) verwendet.

Um die richtige Puffergröße für den WorkSpace-Parameter zu bestimmen, verwenden Sie die RtlGetCompressionWorkSpaceSize-Funktion (d. a. den vom Parameter RtlGetCompressionWorkSpaceSize zurückgegebenen Wert).

Verwenden Sie die Funktion RtlCompressBuffer , um einen nicht komprimierten Puffer zu komprimieren.

Verwenden Sie die RtlDecompressBuffer-Funktion , um einen gesamten komprimierten Puffer zu dekomprimieren.

Anforderungen

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

Weitere Informationen

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressBufferEx

RtlDecompressBufferEx2

RtlDecompressFragmentEx