Fungsi RtlDecompressBufferEx (ntifs.h)
Fungsi RtlDecompressBufferEx mendekompresi seluruh buffer terkompresi.
Sintaks
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedBuffer,
[in] ULONG UncompressedBufferSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[out] PULONG FinalUncompressedSize,
[in] PVOID WorkSpace
);
Parameter
[in] CompressionFormat
Bitmask yang menentukan format pemadatan buffer terkompresi. Parameter ini harus diatur ke COMPRESSION_FORMAT_LZNT1. Arti dari ini dan nilai format kompresi terkait lainnya adalah sebagai berikut.
Nilai | Makna |
---|---|
COMPRESSION_FORMAT_NONE | Tidak didukung oleh fungsi ini. |
COMPRESSION_FORMAT_DEFAULT | Tidak didukung oleh fungsi ini. |
COMPRESSION_FORMAT_LZNT1 | Fungsi ini akan melakukan pemadatan LZ. |
COMPRESSION_FORMAT_XPRESS | Fungsi ini akan melakukan pemadatan Xpress. |
COMPRESSION_FORMAT_XPRESS_HUFF | Fungsi ini akan melakukan dekompresi Xpress Huffman. |
[out] UncompressedBuffer
Penunjuk ke buffer yang dialokasikan penelepon (dialokasikan dari kumpulan halaman atau non-halaman) yang menerima data yang didekompresi dari CompressedBuffer. Parameter ini diperlukan dan tidak boleh NULL.
[in] UncompressedBufferSize
Ukuran, dalam byte, dari buffer UncompressedBuffer .
[in] CompressedBuffer
Penunjuk ke buffer yang berisi data untuk didekompresi. Parameter ini diperlukan dan tidak boleh NULL.
[in] CompressedBufferSize
Ukuran, dalam byte, dari buffer CompressedBuffer .
[out] FinalUncompressedSize
Penunjuk ke variabel yang dialokasikan penelepon yang menerima ukuran, dalam byte, dari data yang didekompresi yang disimpan di UncompressedBuffer. Parameter ini diperlukan dan tidak boleh NULL.
[in] WorkSpace
Penunjuk ke buffer ruang kerja yang dialokasikan penelepon yang digunakan oleh fungsi RtlDecompressBufferEx selama dekompresi. Gunakan fungsi RtlGetCompressionWorkSpaceSize untuk menentukan ukuran buffer ruang kerja yang benar.
Nilai kembali
RtlDecompressBufferEx mengembalikan nilai status kesalahan yang sesuai, seperti salah satu hal berikut ini.
Menampilkan kode | Deskripsi |
---|---|
STATUS_SUCCESS | Buffer CompressedBuffer berhasil didekompresi. |
STATUS_INVALID_PARAMETER | Format kompresi yang tidak valid ditentukan melalui parameter CompressionFormat . Jika CompressionFormat COMPRESSION_FORMAT_NONE atau COMPRESSION_FORMAT_DEFAULT (tetapi tidak keduanya), nilai ini dikembalikan. |
STATUS_UNSUPPORTED_COMPRESSION | Format kompresi yang tidak valid ditentukan melalui parameter CompressionFormat . Jika CompressionFormat bukan salah satu dari berikut ini, STATUS_UNSUPPORTED_COMPRESSION dikembalikan: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUFF |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedBuffer tidak cukup besar untuk memuat data yang tidak dikompresi. |
Keterangan
Fungsi RtlDecompressBufferEx mengambil sebagai input seluruh buffer terkompresi dan menghasilkan setara yang didekompresi asalkan data yang tidak dikompresi cocok dalam buffer tujuan yang ditentukan.
Untuk mendekompresi hanya sebagian buffer terkompresi (yaitu, "fragmen" buffer), gunakan fungsi RtlDecompressFragment .
Untuk memadatkan buffer yang tidak dikompresi, gunakan fungsi RtlCompressBuffer .
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 8 |
Target Platform | Universal |
Header | ntifs.h (termasuk Fltkernel.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |