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 |