Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La función RtlGetCompressionWorkSpaceSize se usa para determinar el tamaño correcto del búfer de WorkSpace para la rtlCompressBuffer y funciones rtlDecompressFragment.
Sintaxis
NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
[in] USHORT CompressionFormatAndEngine,
[out] PULONG CompressBufferWorkSpaceSize,
[out] PULONG CompressFragmentWorkSpaceSize
);
Parámetros
[in] CompressionFormatAndEngine
Máscara de bits que especifica el formato de compresión y el tipo de motor. Este parámetro debe establecerse en una combinación OR bit a bit válida de un tipo de formato y un tipo de motor. Por ejemplo, COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.
Los significados de estos y otros valores relacionados son los siguientes:
| Valor | Significado |
|---|---|
| COMPRESSION_FORMAT_NONE | No es compatible con esta función. |
| COMPRESSION_FORMAT_DEFAULT | No es compatible con esta función. |
| COMPRESSION_FORMAT_LZNT1 | La función realizará la compresión LZ. |
| COMPRESSION_FORMAT_XPRESS | La función realizará la compresión Xpress. |
| COMPRESSION_FORMAT_XPRESS_HUFF | La función realizará la compresión Xpress Huffman. |
| COMPRESSION_ENGINE_STANDARD | El búfer UncompressedBuffer se comprime mediante un algoritmo que proporciona un equilibrio entre la compresión de datos y el rendimiento. Este valor no se puede usar con COMPRESSION_ENGINE_MAXIMUM. |
| COMPRESSION_ENGINE_MAXIMUM | El búfer UncompressedBuffer se comprime mediante un algoritmo que proporciona la compresión máxima de datos, pero con un rendimiento relativamente más lento. Este valor no se puede usar con COMPRESSION_ENGINE_STANDARD. |
| COMPRESSION_ENGINE_HIBER | No es compatible con esta función. |
[out] CompressBufferWorkSpaceSize
Puntero a un búfer asignado por el autor de la llamada que recibe el tamaño, en bytes, necesario para comprimir un búfer. Este valor se usa para determinar el tamaño correcto del búfer de RtlCompressBufferWorkSpace.
[out] CompressFragmentWorkSpaceSize
Puntero a un búfer asignado por el autor de la llamada que recibe el tamaño, en bytes, necesario para descomprimir un búfer comprimido en un fragmento. Este valor se usa para determinar el tamaño correcto de RtlDecompressFragmentel búfer de WorkSpace. Tenga en cuenta que la función RtlCompressFragment no existe actualmente.
Valor devuelto
RtlGetCompressionWorkSpaceSizedevuelve un estado de error adecuado, como uno de los siguientes:
| Código devuelto | Descripción |
|---|---|
| STATUS_SUCCESS | Los tamaños de búfer necesarios, en bytes, se devolvieron correctamente. |
| STATUS_INVALID_PARAMETER | Se especificó un formato de compresión no válido a través del parámetro compressionFormatAndEngine de. Si compressionFormatAndEngine es COMPRESSION_FORMAT_NONE o COMPRESSION_FORMAT_DEFAULT (pero no ambos), se devuelve este valor. |
| STATUS_UNSUPPORTED_COMPRESSION | Se especificó un formato de compresión no válido a través del parámetro compressionFormatAndEngine de. Si compressionFormatAndEngine no es uno de los siguientes, se devuelve STATUS_UNSUPPORTED_COMPRESSION: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS, COMPRESSION_FORMAT_XPRESS_HUF |
| STATUS_NOT_SUPPORTED | Se especificó un motor de compresión no válido a través del parámetro CompressionFormatAndEngine de. Si CompressionFormatAndEngine no es COMPRESSION_ENGINE_STANDARD ni COMPRESSION_ENGINE_MAXIMUM (pero no ambos), se devuelve este valor. |
Observaciones
Las funciones RtlCompressBuffer y RtlDecompressFragment requieren un búfer de espacio de trabajo de tamaño adecuado para comprimir y descomprimir correctamente. Para determinar el tamaño correcto del búfer de espacio de trabajo, en bytes, llame a la función RtlGetCompressionWorkSpaceSize.
Por ejemplo, el parámetro WorkSpace de la función de RtlCompressBuffer debe apuntar a un búfer de espacio de trabajo de tamaño adecuado. El parámetro CompressBufferWorkSpaceSize del RtlGetCompressionWorkSpaceS ize proporciona este tamaño.
Para comprimir un búfer sin comprimir, use la funciónRtlCompressBuffer.
Para descomprimir un búfer comprimido, use la funciónrtlDecompressBuffer.
Para descomprimir solo una parte de un búfer comprimido (es decir, un "fragmento" del búfer), use la función RtlDecompressFragment.
Requisitos
| Requisito | Valor |
|---|---|
| cliente mínimo admitido | Windows XP |
| de la plataforma de destino de | Universal |
| encabezado de | ntifs.h (include Fltkernel.h, Ntifs.h) |
| biblioteca de | NtosKrnl.lib |
| DLL de | NtosKrnl.exe |
| irQL | <= APC_LEVEL |