Método ICrmLogControl::WriteLogRecord (comsvcs.h)

Crm Worker y CRM Compensator usan este método para escribir registros no estructurados en el registro. Normalmente, los componentes de CRM escritos en C++usarían este método. Los registros se escriben de forma diferida en el registro y se deben forzar antes de que sean duraderos. (Consulte ICrmLogControl::ForceLog).)

Sintaxis

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

Parámetros

[in] rgBlob

Matriz de blobs que forman el registro. Un BLOB es un tipo de datos de Windows que se usa para almacenar una cantidad arbitraria de datos binarios.

[in] cBlob

Número de BLOB de la matriz.

Valor devuelto

Este método puede devolver los valores siguientes.

Código devuelto Descripción
S_OK
El método se completó correctamente.
E_INVALIDARG
El recuento del número de blobs es cero.
E_POINTER
Se proporcionó un puntero NULL como argumento.
XACT_E_WRONGSTATE
Se llamó a este método en el estado incorrecto; antes de RegisterCompensator o cuando se completa la transacción (CRM Worker).
XACT_E_ABORTED
La transacción se ha anulado, lo más probable es que se agote el tiempo de espera de una transacción.

Comentarios

Los registros no estructurados son simplemente un búfer de bytes. El método implementa una funcionalidad de recopilación al permitir que las secciones del registro de CRM específico se construyan a partir de una matriz de BLOB, que es una estructura que contiene un puntero a los datos más un recuento del número de bytes. Esto reduce la copia de datos, lo que solo conduce a una copia directamente desde el espacio de memoria crm en el búfer del administrador de registros.

Los registros no estructurados y estructurados no se pueden mezclar; Se puede llamar a WriteLogRecord o WriteLogRecordVariants , pero no tanto por el mismo trabajador de CRM como por el compensador de CRM.

No debe incluir tipos de puntero dentro de las estructuras de datos contenidas en blobs en un registro de registro. Las referencias de objeto ya no son válidas durante la fase de recuperación porque el compensador de CRM se ejecuta en un proceso diferente al del trabajador de CRM que escribió el registro. Incluir tipos de puntero dentro de blobs en un registro de registro puede hacer que una aplicación se bloquee o se dañe durante la recuperación.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado comsvcs.h

Consulte también

ICrmLogControl