RtlGetCompressionWorkSpaceSize-Funktion (ntifs.h)
Die RtlGetCompressionWorkSpaceSize-Funktion wird verwendet, um die richtige Größe des WorkSpace-Puffers für die Funktionen RtlCompressBuffer und RtlDecompressFragment 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 OR-Kombination aus einem Formattyp und einem Engine-Typ festgelegt werden. Beispiel: COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.
Die Bedeutungen dieser und anderer verwandter Werte sind 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. |
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 bietet. Dieser Wert kann nicht mit COMPRESSION_ENGINE_MAXIMUM verwendet werden. |
COMPRESSION_ENGINE_MAXIMUM | Der UncompressedBuffer-Puffer wird mithilfe eines Algorithmus komprimiert, der eine maximale Datenkomprimierung, aber eine relativ langsamere Leistung bietet. Dieser Wert kann nicht mit COMPRESSION_ENGINE_STANDARD verwendet werden. |
COMPRESSION_ENGINE_HIBER | Wird von dieser Funktion nicht unterstützt. |
[out] CompressBufferWorkSpaceSize
Ein Zeiger auf einen vom Aufrufer zugeordneten 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 des WorkSpace-Puffers von RtlCompressBuffer zu bestimmen.
[out] CompressFragmentWorkSpaceSize
Ein Zeiger auf einen vom Aufrufer zugeordneten Puffer, der die Größe in Bytes empfängt, die erforderlich ist, um einen komprimierten Puffer in ein Fragment zu dekomprimieren. Dieser Wert wird verwendet, um die richtige Größe des WorkSpace-Puffers von RtlDecompressFragment zu bestimmen. Beachten Sie, dass die RtlCompressFragment-Funktion derzeit nicht vorhanden ist.
Rückgabewert
RtlGetCompressionWorkSpaceSizegibt einen geeigneten Fehler status 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 | Eine ungültige Komprimierungs-Engine 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. |
Hinweise
Die Funktionen RtlCompressBuffer und RtlDecompressFragmenterfordern einen ausreichend großen Arbeitsbereichspuffer, um erfolgreich zu komprimieren und zu dekomprimieren. Um die richtige Größe des Arbeitsbereichspuffers in Bytes zu bestimmen, rufen Sie die RtlGetCompressionWorkSpaceSize-Funktion auf .
Beispielsweise muss der WorkSpace-Parameter der RtlCompressBuffer-Funktion auf einen ausreichend großen Arbeitsbereichspuffer verweisen. Der CompressBufferWorkSpaceSize-Parameter von RtlGetCompressionWorkSpaceSize stellt diese Größe bereit.
Um einen unkomprimierten Puffer zu komprimieren, verwenden Sie die RtlCompressBuffer-Funktion .
Verwenden Sie die RtlDecompressBuffer-Funktion , um einen komprimierten Puffer zu dekomprimieren.
Um nur einen Teil eines komprimierten Puffers (d. h. ein "Fragment" des Puffers) zu dekomprimieren, verwenden Sie die RtlDecompressFragment-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 |