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

FILE_COMPRESSION_INFORMATION

RtlCompressBuffer

RtlDecompressBuffer

RtlDecompressFragment