ILog::ReadRecord メソッド (txlogpub.h)
ログからレコードを読み取る。
構文
HRESULT ReadRecord(
[in] LSN lsnToRead,
[in, out] LSN *plsnPrev,
[in, out] LSN *plsnNext,
[out] BYTE **ppbData,
[out] ULONG *pcbData
);
パラメーター
[in] lsnToRead
読み取るレコードの LSN。
[in, out] plsnPrev
前のレコード (読み取られるレコードの直前のレコード) の LSN へのポインター。 前のレコードの LSN が不要な場合、このパラメーターは NULL にすることができます。 ログに以前のレコードがない場合、またはエラーが発生した場合、このパラメーターは 0 です。
[in, out] plsnNext
次のレコード (読み取るレコードの直後のレコード) の LSN へのポインター。 次のレコードの LSN が不要な場合、このパラメーターは NULL にすることができます。 ログに次のレコードがない場合、このパラメーターは MAXLSN (0x7FFFFFFFFFFFFFFF) です。 エラーが発生した場合、このパラメーターは 0 です。
[out] ppbData
戻り時にレコード データへのポインターを含む変数へのポインター。 このデータのメモリは ReadRecord によって割り当てられ、呼び出し元によって解放されます ( 「CoTaskMemFree」を参照)。 エラーが発生した場合、このパラメーターは NULL です 。
[out] pcbData
レコード データのサイズを受け取る変数へのポインター (バイト単位)。
戻り値
このメソッドは、次の値と他の HRESULT 値を 返すことができます。
リターン コード | 説明 |
---|---|
|
レコードがログから正常に読み取られました。 |
|
lsnToRead は、ログの現在の制限の範囲外です。 「ILog::GetLogLimits」を参照してください。 |
|
lsnToRead はログの現在の制限内にありますが、ログ内のレコードの LSN ではありません。 |
|
メモリ不足のため、レコードが返されませんでした。 |
注釈
ILog::AppendRecord を使用してログに追加されたレコードは複数の BLOB から連結できますが、ReadRecord はレコードを単一の不透明なデータ BLOB として返します。 ILog には、レコードから個々の BLOB を抽出するメソッドはありません。 ReadRecord によって返されるレコードのデータを解析するのは呼び出し元の責任です。
呼び出し元へのメモ
ログに非常に大きなレコードが含まれている場合、 ReadRecord が レコード データに十分なメモリを割り当てられなかったため、このメソッドが失敗する可能性があります。 レコードのサイズがバインドされている場合、またはレコードの最初の部分のみが必要な場合は、 ILog::ReadRecordPrefix を呼び出す方が効率的な場合があります。要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | txlogpub.h |