ICrmLogControl::WriteLogRecord メソッド (comsvcs.h)
CRM Worker と CRM 補正機能は、このメソッドを使用して、非構造化ログ レコードをログに書き込みます。 このメソッドは、通常、C++ で記述された CRM コンポーネントによって使用されます。 レコードはログに遅延して書き込まれ、永続的になる前に強制的に行う必要があります。 ( 「ICrmLogControl::ForceLog」を参照してください)。
構文
HRESULT WriteLogRecord(
[in] BLOB [] rgBlob,
[in] ULONG cBlob
);
パラメーター
[in] rgBlob
ログ レコードを形成する BLOB の配列。 BLOB は、任意の量のバイナリ データを格納するために使用される Windows データ型です。
[in] cBlob
配列内の BLOB の数。
戻り値
このメソッドは、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
メソッドは正常に完了しました。 |
|
BLOB の数は 0 です。 |
|
NULL ポインターが引数として指定されました。 |
|
このメソッドは間違った状態で呼び出されました。 RegisterCompensator の 前またはトランザクションの完了時 (CRM Worker)。 |
|
トランザクションが中止されました。多くの場合、トランザクションのタイムアウトが原因です。 |
解説
非構造化レコードは、単にバイトのバッファーです。 メソッドは、データへのポインターとバイト数を含む構造体である BLOB の配列から特定の CRM ログ レコードのセクションを構築できるようにすることで、収集機能を実装します。 これにより、データのコピーが減り、CRM メモリ領域からログ マネージャーのバッファーに直接コピーが 1 つだけになります。
非構造化ログ レコードと構造化ログ レコードを混在させることはできません。 WriteLogRecord または WriteLogRecordVariants は呼び出すことができますが、同じ CRM Worker または CRM 補正子の両方で呼び出すわけではありません。
BLOB に含まれるデータ構造内のポインター型をログ レコードに含めてはいけません。 CRM 補正機能は、ログ レコードを書き込んだ CRM Worker とは異なるプロセスで実行されるため、復旧フェーズ中にオブジェクト参照が有効ではなくなりました。 BLOB 内のポインター型をログ レコードに含めると、アプリケーションがクラッシュしたり、回復中にそれ自体が破損したりする可能性があります。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | comsvcs.h |