ILog::AppendRecord メソッド (txlogpub.h)

ログの末尾に新しいレコードを書き込みます。

構文

HRESULT AppendRecord(
  [in]      BLOB  *rgBlob,
  [in]      ULONG cBlob,
  [in]      BOOL  fForceNow,
  [in, out] LSN   *plsn
);

パラメーター

[in] rgBlob

書き込まれるデータ BLOB の配列へのポインター。

[in] cBlob

rgBlob 配列のサイズ (要素単位)。

[in] fForceNow

データを強制的にディスクに格納するかどうかを示します。 TRUE の場合、呼び出しが返される前に、このレコードまでのログの内容を強制的にディスクに記録する必要があります。 FALSE の場合、このレコードは、呼び出しが正常に返された後に書き込まれるメモリにバッファーされる可能性があります。

[in, out] plsn

新しく追加されたレコードの LSN へのポインター。 新しく追加されたレコードの LSN が不要な場合、このパラメーターは NULL にすることができます

戻り値

このメソッドは、成功すると S_OK を返します。 そうでない場合は、HRESULT エラー コードを返します。

注釈

ILog によって書き込みまたは読み取られた各ログ レコードは、データの不透明な BLOB です。 呼び出し元の利便性のために、 AppendRecord を使用すると、複数の BLOB を 1 つのレコードに連結できます。 ILog の実装の多くはメモリ内のバッファーにレコードをコピーするため、呼び出し元がレコードの一部を連結するためにメモリを割り当てるのは非効率的な場合があります。 ただし、レコードがログに追加されると、 ILog はレコードから個々の BLOB を抽出するメソッドを提供しません。 呼び出し元は、ログから読み取られたレコードのデータを解析する必要があります。 「ILog::ReadRecord」を参照してください。

呼び出し元へのメモ

エラーの戻り値は、最後に強制された時点以降にログに追加されたレコードが、ディスク上に存在することが保証されないことを示します。 ILog インターフェイスには、ディスクに正常に書き込まれたレコードを特定するメソッドは用意されていません。 ディスクに正常に書き込まれたレコードを把握する必要がある場合は、各レコードのログを強制的に作成する必要があります。

実装者へのメモ

fForceNowTRUE の場合は、このメソッドから戻る前に (たとえば FlushFileBuffers 関数を使用して) ファイル バッファーをフラッシュすることをお勧めします。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー txlogpub.h

こちらもご覧ください

FlushFileBuffers

Ilog