Funzione RtlGetCompressionWorkSpaceSize (ntifs.h)
La funzione RtlGetCompressionWorkSpaceSize viene usata per determinare le dimensioni corrette del buffer WorkSpace per le funzioni RtlCompressBuffer e RtlDecompressFragment .
Sintassi
NT_RTL_COMPRESS_API NTSTATUS RtlGetCompressionWorkSpaceSize(
[in] USHORT CompressionFormatAndEngine,
[out] PULONG CompressBufferWorkSpaceSize,
[out] PULONG CompressFragmentWorkSpaceSize
);
Parametri
[in] CompressionFormatAndEngine
Maschera di bit che specifica il formato di compressione e il tipo di motore. Questo parametro deve essere impostato su una combinazione OR bit per bit valida di un tipo di formato e di un tipo di motore. Ad esempio, COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_STANDARD.
I significati di questi valori e altri valori correlati sono i seguenti:
Valore | Significato |
---|---|
COMPRESSION_FORMAT_NONE | Non supportato da questa funzione. |
COMPRESSION_FORMAT_DEFAULT | Non supportato da questa funzione. |
COMPRESSION_FORMAT_LZNT1 | La funzione eseguirà la compressione LZ. |
COMPRESSION_FORMAT_XPRESS | La funzione eseguirà la compressione Xpress. |
COMPRESSION_FORMAT_XPRESS_HUFF | La funzione eseguirà la compressione di Xpress Huffman. |
COMPRESSION_ENGINE_STANDARD | Il buffer UncompressedBuffer viene compresso usando un algoritmo che fornisce un equilibrio tra compressione dei dati e prestazioni. Questo valore non può essere usato con COMPRESSION_ENGINE_MAXIMUM. |
COMPRESSION_ENGINE_MAXIMUM | Il buffer UncompressedBuffer viene compresso usando un algoritmo che fornisce la compressione massima dei dati, ma con prestazioni relativamente più lente. Questo valore non può essere usato con COMPRESSION_ENGINE_STANDARD. |
COMPRESSION_ENGINE_HIBER | Non supportato da questa funzione. |
[out] CompressBufferWorkSpaceSize
Puntatore a un buffer allocato dal chiamante che riceve le dimensioni, in byte, necessario per comprimere un buffer. Questo valore viene usato per determinare le dimensioni corrette del buffer WorkSpace di RtlCompressBuffer.
[out] CompressFragmentWorkSpaceSize
Puntatore a un buffer allocato dal chiamante che riceve le dimensioni, in byte, necessario per decomprimere un buffer compresso in un frammento. Questo valore viene usato per determinare le dimensioni corrette del buffer WorkSpace di RtlDecompressFragment. Si noti che la funzione RtlCompressFragment non esiste attualmente.
Valore restituito
RtlGetCompressionWorkSpaceSizerestituisce uno stato di errore appropriato, ad esempio uno dei seguenti:
Codice restituito | Descrizione |
---|---|
STATUS_SUCCESS | Le dimensioni del buffer necessarie, in byte, sono state restituite correttamente. |
STATUS_INVALID_PARAMETER | È stato specificato un formato di compressione non valido tramite il parametro CompressionFormatAndEngine . Se CompressionFormatAndEngine è COMPRESSION_FORMAT_NONE o COMPRESSION_FORMAT_DEFAULT (ma non entrambi), questo valore viene restituito. |
STATUS_UNSUPPORTED_COMPRESSION | È stato specificato un formato di compressione non valido tramite il parametro CompressionFormatAndEngine . Se CompressionFormatAndEngine non è uno dei seguenti, viene restituito STATUS_UNSUPPORTED_COMPRESSION: COMPRESSION_FORMAT_LZNT1, COMPRESSION_FORMAT_XPRESS COMPRESSION_FORMAT_XPRESS_HUF |
STATUS_NOT_SUPPORTED | È stato specificato un motore di compressione non valido tramite il parametro CompressionFormatAndEngine . Se CompressionFormatAndEngine non è COMPRESSION_ENGINE_STANDARD o COMPRESSION_ENGINE_MAXIMUM (ma non entrambi), questo valore viene restituito. |
Commenti
Le funzioni RtlCompressBuffer e RtlDecompressFragmentrichiedono un buffer dello spazio di lavoro di dimensioni appropriate per comprimere e decomprimere correttamente. Per determinare le dimensioni corrette del buffer dello spazio di lavoro, in byte, chiamare la funzione RtlGetCompressionWorkSpaceSize .
Ad esempio, il parametro WorkSpace della funzione RtlCompressBuffer deve puntare a un buffer dello spazio di lavoro di dimensioni adeguate. Il parametro CompressBufferWorkSpaceSize di RtlGetCompressionWorkSpaceSize fornisce queste dimensioni.
Per comprimere un buffer non compresso, usare la funzione RtlCompressBuffer .
Per decomprimere un buffer compresso, usare la funzione RtlDecompressBuffer .
Per decomprimere solo una parte di un buffer compresso ,ovvero un "frammento" del buffer, usare la funzione RtlDecompressFragment .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP |
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Fltkernel.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |