共用方式為


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 中定義的其中一個錯誤碼。

備註

pfnAllocBufferpfnFreeBuffer 參數必須指向呼叫端配置的函式,或兩者都必須是 NULL。 如果兩者都是 NULL,CLFS 會提供配置和釋放記錄 I/O 區塊的預設函式。

呼叫 ClfsCreateMarshallingArea 之前,您必須呼叫 ClfsAddLogContainerClfsAddLogContainerSet,將至少兩個容器新增至基礎記錄。

如需CLFS概念和術語的說明,請參閱 一般記錄檔系統

規格需求

需求
目標平台 桌面
標頭 wdm.h (包含 Wdm.h)
程式庫 Clfs.lib
Dll Clfs.sys
IRQL IRQL <= APC_LEVEL

另請參閱

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE