RtlDecompressBufferEx 函式 (ntifs.h)
RtlDecompressBufferEx 函式會解壓縮整個壓縮的緩衝區。
語法
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBufferEx(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedBuffer,
[in] ULONG UncompressedBufferSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[out] PULONG FinalUncompressedSize,
[in] PVOID WorkSpace
);
參數
[in] CompressionFormat
指定壓縮緩衝區壓縮格式的位掩碼。 此參數必須設定為 COMPRESSION_FORMAT_LZNT1。 這個和其他相關壓縮格式值的意義如下。
值 | 意義 |
---|---|
COMPRESSION_FORMAT_NONE | 此函式不支援。 |
COMPRESSION_FORMAT_DEFAULT | 此函式不支援。 |
COMPRESSION_FORMAT_LZNT1 | 函式會執行 LZ 壓縮。 |
COMPRESSION_FORMAT_XPRESS | 函式會執行 Xpress 壓縮。 |
COMPRESSION_FORMAT_XPRESS_HUFF | 函式會執行 Xpress Huffman 解壓縮。 |
[out] UncompressedBuffer
呼叫端配置的緩衝區指標 (從分頁或非分頁集區配置,) 從 CompressedBuffer 接收解壓縮的數據。 這個參數是必要的,而且不能是 NULL。
[in] UncompressedBufferSize
UncompressedBuffer 緩衝區的大小,以位元組為單位。
[in] CompressedBuffer
緩衝區的指標,其中包含要解壓縮的數據。 這個參數是必要的,而且不能是 NULL。
[in] CompressedBufferSize
CompressedBuffer 緩衝區的大小,以位元組為單位。
[out] FinalUncompressedSize
呼叫端配置變數的指標,可接收 儲存在 UncompressedBuffer 中解壓縮之數據的大小,以位元組為單位。 這個參數是必要的,而且不能是 NULL。
[in] WorkSpace
解壓縮期間 RtlDecompressBufferEx 函式所使用的呼叫端配置工作區緩衝區指標。 使用 RtlGetCompressionWorkSpaceSize 函式來判斷正確的工作區緩衝區大小。
傳回值
RtlDecompressBufferEx 會傳回適當的錯誤狀態值,例如下列其中一個。
傳回碼 | Description |
---|---|
STATUS_SUCCESS | CompressedBuffer 緩衝區已成功解壓縮。 |
STATUS_INVALID_PARAMETER | 透過 CompressionFormat 參數指定了無效的壓縮格式。 如果 CompressionFormat 是 COMPRESSION_FORMAT_NONE 或 COMPRESSION_FORMAT_DEFAULT (,但不是兩者) ,則會傳回此值。 |
STATUS_UNSUPPORTED_COMPRESSION | 透過 CompressionFormat 參數指定了無效的壓縮格式。 如果 CompressionFormat 不是下列其中一項,則會傳回STATUS_UNSUPPORTED_COMPRESSION:COMPRESSION_FORMAT_LZNT1、COMPRESSION_FORMAT_XPRESS COMPRESSION_FORMAT_XPRESS_HUFF |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedBuffer 不夠大,無法包含未壓縮的數據。 |
備註
RtlDecompressBufferEx 函式會接受整個壓縮緩衝區的輸入,並在未壓縮的數據符合指定的目的地緩衝區時產生解壓縮的對等專案。
若要只解壓縮壓縮緩衝區 (的部分,也就是緩衝區) 的「片段」,請使用 RtlDecompressFragment 函式 。
若要壓縮未壓縮的緩衝區,請使用 RtlCompressBuffer 函 式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 |
目標平台 | Universal |
標頭 | ntifs.h (包含 Fltkernel.h、Ntifs.h) |
程式庫 | NtosKrnl.lib |
Dll | NtosKrnl.exe |
IRQL | <= APC_LEVEL |