Fungsi RtlDecompressFragmentEx (ntifs.h)
Fungsi RtlDecompressFragmentEx digunakan untuk mendekompresi bagian dari buffer terkompresi (yaitu, buffer "fragmen"), menggunakan beberapa prosesor jika memungkinkan.
Sintaks
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
Bitmask menentukan format kompresi 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 | Menentukan bahwa pemadatan harus dilakukan. Nilai ini diperlukan. |
[out] UncompressedFragment
Penunjuk ke buffer yang dialokasikan penelepon (dialokasikan dari kumpulan halaman atau non-halaman) menerima data yang didekompresi dari CompressedBuffer. Parameter ini diperlukan dan tidak boleh NULL.
[in] UncompressedFragmentSize
Ukuran, dalam byte, dari buffer UncompressedFragment .
[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 .
[in] FragmentOffset
Offset berbasis nol, dalam byte, tempat fragmen yang tidak dikompresi sedang diekstrak. Nilai offset ini adalah posisi dalam buffer asli yang tidak dikompresi.
[in] UncompressedChunkSize
Ukuran, dalam byte, dari setiap gugus dalam buffer kompresi. Nilai yang valid adalah 512, 1024, 2048 dan 4096.
[out] FinalUncompressedSize
Penunjuk ke variabel yang dialokasikan pemanggil yang menerima ukuran, dalam byte, dari data yang didekompresi yang disimpan di UncompressedFragment. Parameter ini diperlukan dan tidak boleh NULL.
[in] WorkSpace
Penunjuk ke buffer ruang kerja yang dialokasikan penelepon yang digunakan oleh fungsi RtlDecompressFragmentEx selama dekompresi. Gunakan fungsi RtlGetCompressionWorkSpaceSize untuk menentukan ukuran buffer ruang kerja yang benar.
Nilai kembali
RtlDecompressFragmentEx mengembalikan kode NTSTATUS yang sesuai, seperti salah satu hal berikut ini:
Menampilkan kode | Deskripsi |
---|---|
STATUS_SUCCESS | Buffer CompressedBuffer berhasil didekompresi menjadi UncompressedFragment. |
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 |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedFragment tidak cukup besar untuk berisi data yang tidak dikompresi. |
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10 |
Target Platform | Universal |
Header | ntifs.h (termasuk Fltkernel.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |