ClfsCreateMarshallingArea 函式 (wdm.h)
ClfsCreateMarshallingArea 例程會建立CLFS數據流的封送處理區域,並傳回代表新封送處理區域的不透明內容指標。
語法
CLFSUSER_API NTSTATUS ClfsCreateMarshallingArea(
[in] PLOG_FILE_OBJECT plfoLog,
[in] POOL_TYPE ePoolType,
[in, optional] PALLOCATE_FUNCTION pfnAllocBuffer,
[in, optional] PFREE_FUNCTION pfnFreeBuffer,
[in] ULONG cbMarshallingBuffer,
[in] ULONG cMaxWriteBuffers,
[in] ULONG cMaxReadBuffers,
[out] PVOID *ppvMarshalContext
);
參數
[in] plfoLog
表示 CLFS 數據流 之LOG_FILE_OBJECT 結構的指標。 呼叫端先前藉由呼叫 ClfsCreateLogFile 取得此指標。
[in] ePoolType
POOL_TYPE值,指定 (分頁、非分頁的記憶體類型,例如) 新的封送處理區域將用於其記錄 I/O 區塊。
[in, optional] pfnAllocBuffer
NULL 或呼叫端提供的函式指標,該函式會配置封送處理區域的記錄 I/O 區塊。 設定函式具有下列原型:
PVOID
(*PALLOCATE_FUNCTION) (
IN POOL_TYPE PoolType,
IN SIZE_T NumberOfBytes,
IN ULONG Tag
);
配置函式的傳回值是新配置的記錄 I/O 區塊指標。
[in, optional] pfnFreeBuffer
NULL 或呼叫端提供的函式指標,可釋放先前由 pfnAllocBuffer 配置的記錄 I/O 區塊。 函式具有下列原型:
VOID
(*PFREE_FUNCTION) (
IN PVOID Buffer
);
[in] cbMarshallingBuffer
新封送處理區域所使用的個別記錄 I/O 區塊大小,以位元組為單位。 這必須是穩定儲存媒體上的扇區大小倍數。 扇區大小是從 GetDiskFreeSpace 傳回的 lpBytesPerSector 值。
[in] cMaxWriteBuffers
一次可配置寫入作業的 I/O 區塊數目上限。 此參數會影響數據排清的頻率。 如果您不需要控制數據排清的頻率,請將此參數設定為 INFINITE。
[in] cMaxReadBuffers
一次可配置給讀取作業的記錄 I/O 區塊數目上限。
[out] ppvMarshalContext
變數的指標,接收代表新封送處理區域的不透明內容指標。
傳回值
ClfsCreateMarshallingArea 會在成功時傳回STATUS_SUCCESS;否則,它會傳回 Ntstatus.h 中定義的其中一個錯誤碼。
備註
pfnAllocBuffer 和 pfnFreeBuffer 參數必須指向呼叫端配置的函式,或兩者都必須是 NULL。 如果兩者都是 NULL,CLFS 會提供配置和釋放記錄 I/O 區塊的預設函式。
呼叫 ClfsCreateMarshallingArea 之前,您必須呼叫 ClfsAddLogContainer 或 ClfsAddLogContainerSet,將至少兩個容器新增至基礎記錄。
如需CLFS概念和術語的說明,請參閱 一般記錄檔系統。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | wdm.h (包含 Wdm.h) |
程式庫 | Clfs.lib |
Dll | Clfs.sys |
IRQL | IRQL <= APC_LEVEL |