RtlDecompressFragmentEx-Funktion (ntifs.h)
Die RtlDecompressFragmentEx-Funktion wird verwendet, um einen Teil eines komprimierten Puffers (d. h. ein Pufferfragment) zu dekomprimieren, wobei nach Möglichkeit mehrere Prozessoren verwendet werden.
Syntax
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragmentEx(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedFragment,
[in] ULONG UncompressedFragmentSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG FragmentOffset,
[in] ULONG UncompressedChunkSize,
[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 dieses und anderer verwandter Komprimierungsformatwerte lautet 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 | 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.
[in] UncompressedChunkSize
Die Größe der einzelnen Blöcke innerhalb des Komprimierungspuffers in Byte. Gültige Werte sind 512, 1024, 2048 und 4096.
[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 Arbeitsbereichspuffer, der von der RtlDecompressFragmentEx-Funktion während der Dekomprimierung verwendet wird. Verwenden Sie die RtlGetCompressionWorkSpaceSize-Funktion , um die richtige Größe des Arbeitsbereichspuffers zu bestimmen.
Rückgabewert
RtlDecompressFragmentEx gibt einen geeigneten 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 nicht einer der folgenden Ist, wird STATUS_UNSUPPORTED_COMPRESSION zurückgegeben: COMPRESSION_FORMAT_LZNT1 |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedFragment ist nicht groß genug, um die unkomprimierten Daten zu enthalten. |
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Zielplattform | Universell |
Header | ntifs.h (include Fltkernel.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |