ReadNextLogRecord 関数 (clfsw32.h)

ReadLogRecord または ReadLogRestartArea の呼び出しによって開始されるシーケンス内の次のレコードを読み取ります。 ReadNextLogRecord を繰り返し使用すると、クライアントはログ内の指定した種類のすべてのレコードを読み取ることができます。 列挙の方向は、読み取りシーケンスを開始するときにコンテキスト モードを指定することによって決定されます。

構文

CLFSUSER_API BOOL ReadNextLogRecord(
  [in, out]           PVOID             pvReadContext,
  [out]               PVOID             *ppvBuffer,
  [out]               PULONG            pcbBuffer,
  [in, out]           PCLFS_RECORD_TYPE peRecordType,
  [in, optional]      PCLFS_LSN         plsnUser,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PCLFS_LSN         plsnRecord,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

パラメーター

[in, out] pvReadContext

ReadLogRecord または ReadLogRestartArea の正常な呼び出し中にシステムが割り当てて作成する読み取りコンテキストへのポインター。

関数は、操作の完了を延期する場合、有効な読み取りコンテキストへのポインターと ERROR_IO_PENDINGのエラー状態を返します。 非同期入力候補の処理については、このトピックの「解説」セクションを参照してください。

[out] ppvBuffer

読み取りデータへのポインターを受け取る変数へのポインター。

[out] pcbBuffer

ppvReadBuffer で返される読み取りデータのサイズをバイト単位で受け取る変数へのポインター。

[in, out] peRecordType

入力時に、読み取られた次のレコードのレコード型フィルターを指定し、出力時に返されるレコードの種類を指定するポインター。

クライアントは、次のいずれかのレコードの種類を指定できます。

意味
ClfsDataRecord
ユーザー データ レコードのみが読み取られます。
ClfsRestartRecord
再起動レコードのみが読み取られます。
ClfsClientRecord
すべての再起動レコードとデータ レコードが読み取られます。

[in, optional] plsnUser

次のレコードへの読み取り、前の LSN の読み取り、または次の元に戻す LSN の読み取りではなく、次の LSN としてこのログ シーケンス番号 (LSN) を読み取るようにログ クライアントを指定する CLFS_LSN構造体への ポインター。

このパラメーターを使用すると、ログ クライアントは、クライアント バッファー内のユーザー定義の LSN チェーンを介してカーソルを移動できます。 このパラメーターと、読み取りコンテキストによって保持されている現在の LSN との関係は、ReadLogRecord エントリ ポイントで指定されているコンテキスト モード ecxMode と一致している必要があります。それ以外の場合は、ERROR_INVALID_PARAMETERのエラー コードが返されます。

[out] plsnUndoNext

元に戻すレコード チェーン 内の次 のレコードの LSN を受け取るCLFS_LSN構造体へのポインター。

[out] plsnPrevious

前のレコード チェーン内の 次のレコードの LSN を受け取るCLFS_LSN構造体へのポインター。

[out] plsnRecord

読み取 コンテキストに読み取られた現在のレコードの LSN を受け取るCLFS_LSN構造体へのポインター。

[in, out, optional] pOverlapped

非同期操作に必要な OVERLAPPED 構造体へのポインター。

非同期操作を使用しない場合、このパラメーターは NULL にすることができます

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

次の一覧は、考えられるエラー コードを示しています。

注釈

ReadNextLogRecord がERROR_IO_PENDINGの状態コードでを返す場合、クライアントは、GetOverlappedResult または同期待機関数のいずれかを使用して、重複した I/O 操作の遅延完了と実行を同期する必要があります。 詳細については、「 同期と重複入力と出力」を参照してください。

ReadNextLogRecord が非同期的に完了すると、要求されたレコードはディスクから読み取られますが、*ppvReadBuffer 内のポインターには解決されません。 レコードへの有効なポインターを取得するには、クライアントは ReadNextLogRecord をもう一度呼び出す必要があります。

メモ 共通ログ ファイル システム (CLFS) の読み取りコンテキストはスレッド セーフではありません。 一度に複数のスレッドで使用しないでください。

CLFS 読み取りコンテキストは、一度に複数の非同期読み取りに渡さないでください。または、関数がERROR_READで失敗します。

 

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー clfsw32.h
Library Clfsw32.lib
[DLL] Clfsw32.dll

こちらもご覧ください

CLFS_LSN

CLFS_RECORD_TYPE

一般的なログ ファイル システム関数

OVERLAPPED

ReadLogRecord

ReadLogRestartArea

同期と重複入力と出力