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
入力時に、読み取られた次のレコードのレコード型フィルターを指定し、出力時に返されるレコードの種類を指定するポインター。
クライアントは、次のいずれかのレコードの種類を指定できます。
値 | 意味 |
---|---|
|
ユーザー データ レコードのみが読み取られます。 |
|
再起動レコードのみが読み取られます。 |
|
すべての再起動レコードとデータ レコードが読み取られます。 |
[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 読み取りコンテキストは、一度に複数の非同期読み取りに渡さないでください。または、関数がERROR_READで失敗します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | clfsw32.h |
Library | Clfsw32.lib |
[DLL] | Clfsw32.dll |