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 概念和術語的說明,請參閱 Common Log File System。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | wdm.h (包括 Wdm.h) |
連結庫 | Clfs.lib |
DLL | Clfs.sys |
IRQL | IRQL <= APC_LEVEL |