Metodo ICrmLogControl::WriteLogRecord (comsvcs.h)

Crm Worker e CRM Compensator usano questo metodo per scrivere record di log non strutturati nel log. Questo metodo viene in genere usato dai componenti CRM scritti in C++. I record vengono scritti in modo pigro nel log e devono essere forzati prima di diventare durevoli. Vedere ICrmLogControl::ForceLog.

Sintassi

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

Parametri

[in] rgBlob

Matrice di BLOB che formano il record di log. UN BLOB è un tipo di dati di Windows usato per archiviare una quantità arbitraria di dati binari.

[in] cBlob

Numero di BLOB nella matrice.

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
E_INVALIDARG
Il conteggio del numero di BLOBs è zero.
E_POINTER
Un puntatore NULL è stato fornito come argomento.
XACT_E_WRONGSTATE
Questo metodo è stato chiamato nello stato errato; prima di RegisterCompensator o quando la transazione viene completata (CRM Worker).
XACT_E_ABORTED
La transazione ha interrotto, probabilmente a causa di un timeout delle transazioni.

Commenti

I record non strutturati sono semplicemente un buffer di byte. Il metodo implementa una funzionalità di raccolta consentendo alle sezioni del record di log CRM specifico di essere compilate da una matrice di BLOB, ovvero una struttura contenente un puntatore ai dati e un conteggio del numero di byte. Ciò riduce la copia dei dati, portando a una sola copia direttamente dallo spazio di memoria CRM nel buffer di Gestione log.

I record di log non strutturati e non strutturati non possono essere misti; WriteLogRecord o WriteLogRecordVariants può essere chiamato, ma non entrambi dallo stesso ruolo di lavoro CRM o CRM Compensator.

Non è consigliabile includere tipi di puntatore all'interno di strutture di dati contenute in BLOBs in un record di log. I riferimenti agli oggetti non sono più validi durante la fase di ripristino perché CRM Compensator viene eseguito in un processo diverso da quello del ruolo di lavoro CRM che ha scritto il record di log. Inclusi i tipi di puntatore all'interno di BLOB in un record di log possono causare l'arresto anomalo o il danneggiamento di un'applicazione durante il ripristino.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione comsvcs.h

Vedi anche

ICrmLogControl