ICrmLogControl::WriteLogRecord 方法 (comsvcs.h)

CRM 辅助角色和 CRM 补偿器使用此方法将非结构化日志记录写入日志。 此方法通常由用 C++ 编写的 CRM 组件使用。 记录延迟写入日志,必须强制记录才能持久。 (请参阅 ICrmLogControl::ForceLog.)

语法

HRESULT WriteLogRecord(
  [in] BLOB [] rgBlob,
  [in] ULONG   cBlob
);

参数

[in] rgBlob

构成日志记录的 BLOB 数组。 BLOB 是一种 Windows 数据类型,用于存储任意数量的二进制数据。

[in] cBlob

数组中的 BLOB 数。

返回值

此方法可以返回以下值。

返回代码 说明
S_OK
该方法已成功完成。
E_INVALIDARG
BLOB 数为零。
E_POINTER
NULL 指针作为参数提供。
XACT_E_WRONGSTATE
调用此方法时处于错误状态;在 RegisterCompensator 之前或事务完成 (CRM 辅助角色) 。
XACT_E_ABORTED
事务已中止,很可能是因为事务超时。

备注

非结构化记录只是字节缓冲区。 方法通过允许特定 CRM 日志记录的各部分从 BLOB 数组生成,该数组是一个包含指向数据的指针以及字节数的计数的结构,来实现收集功能。 这减少了数据的复制,导致只有一个直接从 CRM 内存空间复制到日志管理器的缓冲区中。

非结构化日志记录和结构化日志记录不能混合使用; WriteLogRecordWriteLogRecordVariants 都可以由同一 CRM 辅助角色或 CRM 补偿器调用,但不能同时调用。

不应在日志记录的 BLOB 中包含的数据结构中包含指针类型。 对象引用在恢复阶段不再有效,因为 CRM 补偿器运行的进程与写入日志记录的 CRM 辅助角色的进程不同。 在日志记录中的 BLOB 中包含指针类型可能会导致应用程序在恢复期间自行崩溃或损坏。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 comsvcs.h

另请参阅

ICrmLogControl