ICrmLogControl::WriteLogRecord-Methode (comsvcs.h)

Der CRM-Worker und der CRM-Kompensator verwenden diese Methode, um unstrukturierte Protokolldatensätze in das Protokoll zu schreiben. Diese Methode wird in der Regel von CRM-Komponenten verwendet, die in C++ geschrieben sind. Datensätze werden verzögert in das Protokoll geschrieben und müssen erzwungen werden, bevor sie dauerhaft werden. (Siehe ICrmLogControl::ForceLog.)

Syntax

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

Parameter

[in] rgBlob

Ein Array von BLOBs, die den Protokolldatensatz bilden. Ein BLOB ist ein Windows-Datentyp, der zum Speichern einer beliebigen Menge von Binärdaten verwendet wird.

[in] cBlob

Die Anzahl der BLOBs im Array.

Rückgabewert

Diese Methode kann die folgenden Werte zurückgeben.

Rückgabecode BESCHREIBUNG
S_OK
Die Methode wurde erfolgreich abgeschlossen.
E_INVALIDARG
Die Anzahl der BLOBs ist null.
E_POINTER
Ein NULL-Zeiger wurde als Argument bereitgestellt.
XACT_E_WRONGSTATE
Diese Methode wurde im falschen Zustand aufgerufen. entweder vor RegisterCompensator oder beim Abschluss der Transaktion (CRM Worker).
XACT_E_ABORTED
Die Transaktion wurde abgebrochen, höchstwahrscheinlich aufgrund eines Transaktionstimeouts.

Hinweise

Unstrukturierte Datensätze sind einfach ein Bytespuffer. Die -Methode implementiert eine Gather-Funktion, indem Abschnitte des spezifischen CRM-Protokolldatensatzes aus einem Array von BLOBs erstellt werden können, bei dem es sich um eine Struktur handelt, die einen Zeiger auf die Daten und eine Anzahl der Bytes enthält. Dadurch wird das Kopieren von Daten reduziert, was dazu führt, dass nur eine Kopie direkt aus dem CRM-Arbeitsspeicher in den Puffer des Protokoll-Managers erfolgt.

Unstrukturierte und strukturierte Protokolldatensätze können nicht gemischt werden; Entweder WriteLogRecord oder WriteLogRecordVariants können aufgerufen werden, aber nicht beide von demselben CRM-Worker oder CRM-Kompensator.

Zeigertypen sollten in datenstrukturierten BLOBs nicht in einen Protokolldatensatz eingeschlossen werden. Objektverweise sind während der Wiederherstellungsphase nicht mehr gültig, da der CRM-Kompensator in einem anderen Prozess als der CRM-Worker ausgeführt wird, der den Protokolldatensatz geschrieben hat. Das Einschließen von Zeigertypen in BLOBs in einen Protokolldatensatz kann dazu führen, dass eine Anwendung während der Wiederherstellung abstürzt oder sich selbst beschädigt.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile comsvcs.h

Weitere Informationen

ICrmLogControl