共用方式為


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 概念和術語的說明,請參閱 Common Log File System

要求

要求 價值
目標平臺 桌面
標頭 wdm.h (包括 Wdm.h)
連結庫 Clfs.lib
DLL Clfs.sys
IRQL IRQL <= APC_LEVEL

另請參閱

ClfsAddLogContainer

ClfsAddLogContainerSet

ClfsCreateLogFile

ClfsDeleteMarshallingArea

LOG_FILE_OBJECT

POOL_TYPE