Compartilhar via


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

O CRM Worker e o CRM Compensator usam esse método para gravar registros de log não estruturados no log. Esse método normalmente seria usado por componentes crm escritos em C++. Os registros são gravados de forma preguiçosa no log e devem ser forçados antes de se tornarem duráveis. (Consulte ICrmLogControl::ForceLog.)

Sintaxe

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

Parâmetros

[in] rgBlob

Uma matriz de BLOBs que formam o registro de log. Um BLOB é um tipo de dados do Windows usado para armazenar uma quantidade arbitrária de dados binários.

[in] cBlob

O número de BLOBs na matriz.

Valor retornado

Esse método pode retornar os valores a seguir.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
E_INVALIDARG
A contagem do número de BLOBs é zero.
E_POINTER
Um ponteiro NULL foi fornecido como um argumento.
XACT_E_WRONGSTATE
Esse método foi chamado no estado errado; antes de RegisterCompensator ou quando a transação está sendo concluída (CRM Worker).
XACT_E_ABORTED
A transação foi anulada, provavelmente devido ao tempo limite da transação.

Comentários

Registros não estruturados são simplesmente um buffer de bytes. O método implementa uma funcionalidade de coleta permitindo que seções do registro de log de CRM específico sejam criadas a partir de uma matriz de BLOBs, que é uma estrutura que contém um ponteiro para os dados, além de uma contagem do número de bytes. Isso reduz a cópia de dados, levando a apenas uma cópia diretamente do espaço de memória crm no buffer do gerenciador de logs.

Os registros de log não estruturados e estruturados não podem ser misturados; WriteLogRecord ou WriteLogRecordVariants podem ser chamados , mas não pelo mesmo CrM Worker ou CRM Compensator.

Você não deve incluir tipos de ponteiro em estruturas de dados contidas em BLOBs em um registro de log. As referências de objeto não são mais válidas durante a fase de recuperação porque o Compensador do CRM é executado em um processo diferente daquele do CRM Worker que escreveu o registro de log. Incluir tipos de ponteiro em BLOBs em um registro de log pode fazer com que um aplicativo falhe ou se corrompa durante a recuperação.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho comsvcs.h

Confira também

ICrmLogControl