Fungsi RtlGetCompressionWorkSpaceSize (ntifs.h)
Fungsi RtlGetCompressionWorkSpaceSize digunakan untuk menentukan ukuran buffer WorkSpace yang benar untuk fungsi RtlCompressBuffer dan RtlDecompressFragment .
Sintaks
NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
[in] USHORT CompressionFormatAndEngine,
[out] PULONG CompressBufferWorkSpaceSize,
[out] PULONG CompressFragmentWorkSpaceSize
);
Parameter
[in] CompressionFormatAndEngine
Bitmask menentukan format kompresi dan jenis mesin. Parameter ini harus diatur ke kombinasi bitwise OR yang valid dari satu jenis format dan satu jenis mesin. Misalnya, COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.
Arti dari ini, dan nilai 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 kompresi LZ. |
COMPRESSION_FORMAT_XPRESS | Fungsi ini akan melakukan kompresi Xpress. |
COMPRESSION_FORMAT_XPRESS_HUFF | Fungsi ini akan melakukan kompresi Xpress Huffman. |
COMPRESSION_ENGINE_STANDARD | Buffer UncompressedBuffer dikompresi menggunakan algoritma yang memberikan keseimbangan antara kompresi data dan performa. Nilai ini tidak dapat digunakan dengan COMPRESSION_ENGINE_MAXIMUM. |
COMPRESSION_ENGINE_MAXIMUM | Buffer UncompressedBuffer dikompresi menggunakan algoritma yang menyediakan kompresi data maksimum tetapi dengan performa yang relatif lebih lambat. Nilai ini tidak dapat digunakan dengan COMPRESSION_ENGINE_STANDARD. |
COMPRESSION_ENGINE_HIBER | Tidak didukung oleh fungsi ini. |
[out] CompressBufferWorkSpaceSize
Penunjuk ke buffer yang dialokasikan penelepon yang menerima ukuran, dalam byte, diperlukan untuk memadatkan buffer. Nilai ini digunakan untuk menentukan ukuran buffer WorkSpaceRtlCompressBuffer yang benar.
[out] CompressFragmentWorkSpaceSize
Penunjuk ke buffer yang dialokasikan penelepon yang menerima ukuran, dalam byte, diperlukan untuk mendekompresi buffer terkompresi ke fragmen. Nilai ini digunakan untuk menentukan ukuran buffer WorkSpaceRtlDecompressFragment yang benar. Perhatikan bahwa fungsi RtlCompressFragment saat ini tidak ada.
Nilai kembali
RtlGetCompressionWorkSpaceSizemengembalikan status kesalahan yang sesuai, seperti salah satu hal berikut ini:
Menampilkan kode | Deskripsi |
---|---|
STATUS_SUCCESS | Ukuran buffer yang diperlukan, dalam byte, berhasil dikembalikan. |
STATUS_INVALID_PARAMETER | Format kompresi yang tidak valid ditentukan melalui parameter CompressionFormatAndEngine . Jika CompressionFormatAndEngine COMPRESSION_FORMAT_NONE atau COMPRESSION_FORMAT_DEFAULT (tetapi tidak keduanya), nilai ini dikembalikan. |
STATUS_UNSUPPORTED_COMPRESSION | Format kompresi yang tidak valid ditentukan melalui parameter CompressionFormatAndEngine . Jika CompressionFormatAndEngine bukan salah satu hal berikut, STATUS_UNSUPPORTED_COMPRESSION dikembalikan: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUF |
STATUS_NOT_SUPPORTED | Mesin kompresi yang tidak valid ditentukan melalui parameter CompressionFormatAndEngine . Jika CompressionFormatAndEngine tidak COMPRESSION_ENGINE_STANDARD atau COMPRESSION_ENGINE_MAXIMUM (tetapi tidak keduanya), nilai ini dikembalikan. |
Keterangan
Fungsi RtlCompressBuffer dan RtlDecompressFragmentmemerlukan buffer ruang kerja berukuran tepat untuk berhasil memadatkan dan mendekompresi. Untuk menentukan ukuran buffer ruang kerja yang benar, dalam byte, panggil fungsi RtlGetCompressionWorkSpaceSize .
Sebagai contoh, parameter WorkSpace dari fungsi RtlCompressBuffer harus menunjuk ke buffer ruang kerja berukuran memadai. Parameter CompressBufferWorkSpaceSize dari RtlGetCompressionWorkSpaceSize menyediakan ukuran ini.
Untuk memadatkan buffer yang tidak dikompresi, gunakan fungsi RtlCompressBuffer .
Untuk mendekompresi buffer terkompresi, gunakan fungsi RtlDecompressBuffer .
Untuk mendekompresi hanya sebagian dari buffer terkompresi (yaitu, "fragmen" buffer), gunakan fungsi RtlDecompressFragment .
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows XP |
Target Platform | Universal |
Header | ntifs.h (termasuk Fltkernel.h, Ntifs.h) |
Pustaka | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk