RtlDecompressFragment 函式 (ntifs.h)
RtlDecompressFragment 函式是用來解壓縮壓縮緩衝區的一部分(也就是緩衝區「片段」)。
語法
NT_RTL_COMPRESS_API NTSTATUS RtlDecompressFragment(
[in] USHORT CompressionFormat,
[out] PUCHAR UncompressedFragment,
[in] ULONG UncompressedFragmentSize,
[in] PUCHAR CompressedBuffer,
[in] ULONG CompressedBufferSize,
[in] ULONG FragmentOffset,
[out] PULONG FinalUncompressedSize,
[in] PVOID WorkSpace
);
參數
[in] CompressionFormat
指定壓縮緩衝區壓縮格式的位掩碼。 此參數必須設定為 COMPRESSION_FORMAT_LZNT1。 這個和其他相關壓縮格式值的意義如下:
價值 | 意義 |
---|---|
COMPRESSION_FORMAT_NONE | 此函式不支援。 |
COMPRESSION_FORMAT_DEFAULT | 此函式不支援。 |
COMPRESSION_FORMAT_LZNT1 | 指定應該執行壓縮。 此值是必要的。 |
[out] UncompressedFragment
呼叫端配置的緩衝區指標(從分頁或非分頁集區配置)接收解壓縮的數據,CompressedBuffer。 這個參數是必要的,而且不能是 NULL。
[in] UncompressedFragmentSize
UncompressedFragment 緩衝區的大小,以位元組為單位。
[in] CompressedBuffer
緩衝區的指標,其中包含要解壓縮的數據。 這個參數是必要的,而且不能是 NULL。
[in] CompressedBufferSize
CompressedBuffer 緩衝區的大小,以位元組為單位。
[in] FragmentOffset
以位元組為單位的以零起始的位移,其中未壓縮的片段正在擷取。 這個位移值是原始未壓縮緩衝區內的位置。
[out] FinalUncompressedSize
呼叫端配置的變數指標,接收儲存在 uncompressedFragment 解壓縮數據的大小,以位元組為單位。 這個參數是必要的,而且不能是 NULL。
[in] WorkSpace
解壓縮期間,RtlDecompressFragment 函式所使用的呼叫端配置工作空間緩衝區指標。 使用 RtlGetCompressionWorkSpaceSize 函式來判斷正確的工作空間緩衝區大小。
傳回值
RtlDecompressFragment會傳回適當的 NTSTATUS 程式代碼,例如下列其中一項:
傳回碼 | 描述 |
---|---|
STATUS_SUCCESS | CompressedBuffer 緩衝區已成功解壓縮至 UncompressedFragment。 |
STATUS_INVALID_PARAMETER | 透過 CompressionFormat 參數指定了無效的壓縮格式。 如果 CompressionFormat 為COMPRESSION_FORMAT_NONE或COMPRESSION_FORMAT_DEFAULT(但不是兩者),則會傳回此值。 |
STATUS_UNSUPPORTED_COMPRESSION | 透過 CompressionFormat 參數指定了無效的壓縮格式。 如果 CompressionFormat 不是下列其中一項,則會傳回STATUS_UNSUPPORTED_COMPRESSION: COMPRESSION_FORMAT_LZNT1 |
STATUS_BAD_COMPRESSION_BUFFER | UncompressedFragment 不夠大,無法包含未壓縮的數據。 |
言論
相對於 RtlDecompressBuffer 函式,RtlDecompressFragment 用於從壓縮緩衝區解壓縮部分數據(相對於整個緩衝區)。
若要判斷 WorkSpace 參數的正確緩衝區大小,請使用 RtlGetCompressionWorkSpaceSize 函式(也就是 RtlGetCompressionWorkSpaceSize 參數所傳回的值)。
若要壓縮未壓縮的緩衝區,請使用 RtlCompressBuffer 函式。
若要解壓縮整個壓縮緩衝區,請使用 RtlDecompressBuffer 函式。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP |
目標平臺 | 普遍 |
標頭 | ntifs.h (include Fltkernel.h, Ntifs.h) |
連結庫 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |