RtlDecompressBuffer 函式會解壓縮整個壓縮緩衝區。
語法
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressBuffer(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedBuffer,
[in] ULONG UncompressedBufferSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[out] PULONG FinalUncompressedSize
);
參數
[in] CompressionFormat
指定壓縮緩衝區壓縮格式的位掩碼。 此參數必須設定為 COMPRESSION_FORMAT_LZNT1。 這個和其他相關壓縮格式值的意義如下。
| 價值 | 意義 |
|---|---|
| COMPRESSION_FORMAT_NONE | 此函式不支援。 |
| COMPRESSION_FORMAT_DEFAULT | 此函式不支援。 |
| COMPRESSION_FORMAT_LZNT1 | 函式會執行 LZ 壓縮。 |
| COMPRESSION_FORMAT_XPRESS | 函式會執行 Xpress 壓縮。 |
[out] UncompressedBuffer
從 compressedBuffer 接收解壓縮數據之呼叫端配置的緩衝區指標(從分頁或非分頁集區配置)。 這是必要參數,而且無法 NULL。
[in] UncompressedBufferSize
UncompressedBuffer 緩衝區的大小,以位元組為單位。
[in] CompressedBuffer
緩衝區的指標,其中包含要解壓縮的數據。 這是必要參數,而且無法 NULL。
[in] CompressedBufferSize
CompressedBuffer 緩衝區的大小,以位元組為單位。
[out] FinalUncompressedSize
呼叫端配置的變數指標,可接收儲存在 uncompressedBuffer 解壓縮數據的大小,以位元組為單位。 這是必要參數,而且無法 NULL。
傳回值
RtlDecompressBuffer 會傳回適當的錯誤狀態值,例如下列其中一個。
| 傳回碼 | 描述 |
|---|---|
| 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 |
| STATUS_BAD_COMPRESSION_BUFFER | UncompressedBuffer 不夠大,無法包含未壓縮的數據。 |
言論
RtlDecompressBuffer 函式會接受整個壓縮緩衝區的輸入,併產生其解壓縮的對等專案,前提是未壓縮的數據符合指定的目的地緩衝區。
若要僅解壓縮壓縮緩衝區的一部分(也就是緩衝區的「片段」),請使用 RtlDecompressFragment 函式。
若要壓縮未壓縮的緩衝區,請使用 RtlCompressBuffer 函式。
要求
| 要求 | 價值 |
|---|---|
| 最低支援的用戶端 | Windows XP |
| 目標平臺 | 普遍 |
| 標頭 | ntifs.h (include Fltkernel.h, Ntifs.h) |
| 連結庫 | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= APC_LEVEL |