Freigeben über


RtlGetCompressionWorkSpaceSize-Funktion (ntifs.h)

Die RtlGetCompressionWorkSpaceSize-Funktion wird verwendet, um die richtige Größe des WorkSpace- Puffers für die RtlCompressBuffer- und RtlDecompressFragment- Funktionen zu bestimmen.

Syntax

NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
  [in]  USHORT CompressionFormatAndEngine,
  [out] PULONG CompressBufferWorkSpaceSize,
  [out] PULONG CompressFragmentWorkSpaceSize
);

Parameter

[in] CompressionFormatAndEngine

Bitmaske, die das Komprimierungsformat und den Modultyp angibt. Dieser Parameter muss auf eine gültige bitweise ODER-Kombination eines Formattyps und eines Modultyps festgelegt werden. Beispiel: COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.

Die Bedeutungen dieser werte und anderer verwandter Werte 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-Komprimierung aus.
COMPRESSION_ENGINE_STANDARD Der UncompressedBuffer Puffer wird mithilfe eines Algorithmus komprimiert, der ein Gleichgewicht zwischen Datenkomprimierung und Leistung ermöglicht. Dieser Wert kann nicht mit COMPRESSION_ENGINE_MAXIMUM verwendet werden.
COMPRESSION_ENGINE_MAXIMUM Der UncompressedBuffer Puffer wird mithilfe eines Algorithmus komprimiert, der maximale Datenkomprimierung, aber mit relativ langsamerer Leistung bietet. Dieser Wert kann nicht mit COMPRESSION_ENGINE_STANDARD verwendet werden.
COMPRESSION_ENGINE_HIBER Von dieser Funktion nicht unterstützt.

[out] CompressBufferWorkSpaceSize

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die Größe in Bytes empfängt, die zum Komprimieren eines Puffers erforderlich ist. Dieser Wert wird verwendet, um die richtige Größe von RtlCompressBufferWorkSpace Puffer zu bestimmen.

[out] CompressFragmentWorkSpaceSize

Ein Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die Größe in Bytes empfängt, die zum Dekomprimieren eines komprimierten Puffers in ein Fragment erforderlich ist. Dieser Wert wird verwendet, um die richtige Größe von RtlDecompressFragment's WorkSpace Puffer zu bestimmen. Beachten Sie, dass die RtlCompressFragment- Funktion zurzeit nicht vorhanden ist.

Rückgabewert

RtlGetCompressionWorkSpaceSizegibt einen geeigneten Fehlerstatus zurück, z. B. einen der folgenden:

Rückgabecode Beschreibung
STATUS_SUCCESS Die erforderlichen Puffergrößen in Bytes wurden erfolgreich zurückgegeben.
STATUS_INVALID_PARAMETER Ein ungültiges Komprimierungsformat wurde über den CompressionFormatAndEngine Parameter angegeben. Wenn CompressionFormatAndEngine 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 CompressionFormatAndEngine Parameter angegeben. Wenn CompressionFormatAndEngine nicht einer der folgenden Ist, wird STATUS_UNSUPPORTED_COMPRESSION zurückgegeben: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUF
STATUS_NOT_SUPPORTED Ein ungültiges Komprimierungsmodul wurde über den CompressionFormatAndEngine Parameter angegeben. Wenn CompressionFormatAndEngine nicht COMPRESSION_ENGINE_STANDARD oder COMPRESSION_ENGINE_MAXIMUM ist (aber nicht beide), wird dieser Wert zurückgegeben.

Bemerkungen

Die RtlCompressBuffer- und RtlDecompressFragment-Funktionen erfordern einen ordnungsgemäß angepassten Arbeitsraumpuffer, um erfolgreich zu komprimieren und zu dekomprimieren. Um die richtige Größe des Arbeitsraumpuffers in Bytes zu ermitteln, rufen Sie die RtlGetCompressionWorkSpaceSize-Funktion auf.

Beispielsweise muss der WorkSpace Parameter des RtlCompressBuffer--Funktion auf einen ausreichend großen Arbeitsraumpuffer verweisen. Der CompressBufferWorkSpaceSize Parameter des RtlGetCompressionWorkSpaceSize- stellt diese Größe bereit.

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

Um einen komprimierten Puffer zu dekomprimieren, verwenden Sie die RtlDecompressBuffer Funktion.

Um nur einen Teil eines komprimierten Puffers (d. h. ein "Fragment" des Puffers) zu dekomprimieren, verwenden Sie die RtlDecompressFragment--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

Siehe auch

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressFragment