createLogMarshallingArea 函数 (clfsw32.h)

为日志创建封送处理区域,成功后返回封送处理上下文。 在创建封送处理区域之前,日志必须至少有一个容器。

封送处理上下文用于将记录追加到日志或从日志中读取记录。 由于记录始终存储在日志块中,因此它们必须通过封送上下文传递。

日志记录是通过调用 ReserveAndAppendLog 写入的

语法

CLFSUSER_API BOOL CreateLogMarshallingArea(
  [in]           HANDLE                  hLog,
  [in, optional] CLFS_BLOCK_ALLOCATION   pfnAllocBuffer,
  [in, optional] CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
  [in, optional] PVOID                   pvBlockAllocContext,
  [in]           ULONG                   cbMarshallingBuffer,
  [in]           ULONG                   cMaxWriteBuffers,
  [in]           ULONG                   cMaxReadBuffers,
  [out]          PVOID                   *ppvMarshal
);

参数

[in] hLog

CreateLogFile 获取的日志句柄。

日志句柄可以引用专用日志或多路复用日志。

[in, optional] pfnAllocBuffer

为日志块分配内存的回调函数。

如果此参数为 NULL,则公共日志文件系统 (CLFS) 提供默认块分配函数。 如果使用 pfnFreeBuffer 参数指定了释放块回调,则此参数不能为 NULL

以下示例标识块分配回调函数的语法:

typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext);

[in, optional] pfnFreeBuffer

释放 pfnAllocBuffer 分配的日志块的回调函数。

如果此参数为 NULL,则 CLFS 提供默认的块解除分配函数。 如果使用 pfnAllocBuffer 参数指定了块分配回调,则此参数不能为 NULL

以下示例标识了释放块回调函数的语法:

typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);

“ClfsBlockDeallocProc”的 buffer 参数必须指向使用 pfnAllocBuffer 指向的回调分配的块。

[in, optional] pvBlockAllocContext

指向缓冲区的指针,该缓冲区作为用户上下文传回块分配和解除分配例程(如果指定了缓冲区)。

如果 pfnAllocBufferNULL,则忽略此参数。

[in] cbMarshallingBuffer

新封送处理区域将使用的单个日志 I/O 块的大小(以字节为单位)。 这必须是稳定存储介质上扇区大小的倍数。 扇区大小是在 GetDiskFreeSpace 函数的 lpBytesPerSector 参数中返回的值。

如果记录的长度超过此值,则无法追加或读取记录。

[in] cMaxWriteBuffers

可随时为写入操作分配的最大块数。

此值可能会影响数据刷新的频率。 如果不需要指定限制来控制数据刷新周期的频率,请指定 INFINITE。

[in] cMaxReadBuffers

可随时为读取操作分配的最大块数。

读取上下文至少使用一个读取块。

[out] ppvMarshal

指向 CLFS 在 CreateLogMarshallingArea 成功完成时分配的封送处理上下文的指针。

此上下文必须用于记录封送处理区域的所有读取、追加、写入和刷新操作。 使用封送处理上下文访问封送区域的所有操作都是线程安全的。 如果操作不成功,则此参数为 NULL

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

以下列表标识了可能的错误代码:

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 R2 [仅限桌面应用]
目标平台 Windows
标头 clfsw32.h
Library Clfsw32.lib
DLL Clfsw32.dll

另请参阅

常见日志文件系统函数

CreateLogFile

DeleteLogMarshallingArea