ReserveAndAppendLog 関数 (clfsw32.h)
ログ バッファーの領域を予約するか、ログ レコードをログに追加するか、またはその両方を行います。 関数はアトミックです。
構文
CLFSUSER_API BOOL ReserveAndAppendLog(
[in] PVOID pvMarshal,
[in, optional] PCLFS_WRITE_ENTRY rgWriteEntries,
[in] ULONG cWriteEntries,
[in, optional] PCLFS_LSN plsnUndoNext,
[in, optional] PCLFS_LSN plsnPrevious,
[in] ULONG cReserveRecords,
[in, out, optional] LONGLONG [] rgcbReservation,
[in] ULONG fFlags,
[out, optional] PCLFS_LSN plsn,
[in, out, optional] LPOVERLAPPED pOverlapped
);
パラメーター
[in] pvMarshal
CreateLogMarshallingArea 関数を使用して割り当てられるマーシャリング コンテキストへのポインター。
[in, optional] rgWriteEntries
1 つのレコードにマーシャリングCLFS_WRITE_ENTRYバッファーの配列へのポインター。
cWriteEntries パラメーターが 0 の場合、このパラメーターは無視されます。
[in] cWriteEntries
rgWriteEntries 配列内の書き込みエントリの数。
この値が 0 以外の場合は、 rgWriteEntries パラメーターにバッファーを指定する必要があります。
[in, optional] plsnUndoNext
元に戻すチェーン 内の次 のレコードのログ シーケンス番号 (LSN) を指定するCLFS_LSN構造体へのポインター。
[in, optional] plsnPrevious
前の チェーン内の 前のレコードの LSN を指定するCLFS_LSN構造体へのポインター。
[in] cReserveRecords
rgcbReservation 配列内のレコード サイズの数。
[in, out, optional] rgcbReservation
cReserveRecords パラメーターが指定する各レコードの予約サイズの配列へのポインター。
cReserveRecords パラメーターが 0 の場合、このパラメーターは無視されます。 予約サイズが負の場合は、そのサイズの予約が解放されます。
各レコードに予約されている実際の領域 (必要なオーバーヘッドを含む) は、正常に完了すると、個々の配列要素で返されます。 これらの値を FreeReservedLog 関数に渡して、マーシャリング領域に予約されている領域を調整できます。
[in] fFlags
この関数の動作を指定するフラグ。
次の値のうち 1 つ以上を組み合わせることができます。
[out, optional] plsn
追加されたレコードの LSN を受け取る CLFS_LSN 構造体へのポインター。
[in, out, optional] pOverlapped
OVERLAPPED 構造体へのポインター。
非同期操作を使用しない場合、このパラメーターは NULL にすることができます。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 エラーの詳細情報を得るには、GetLastError 関数を呼び出します。
次の一覧は、考えられるエラー コードを示しています。
注釈
ReserveAndAppendLog 関数によって返される LSN は、必ずしも使用される次の LSN とは限りません。 返される LSN は次の LSN の推定値であり、 fFlags パラメーターで指定されるフラグによって異なります。 返される LSN は、ベース尾部を移動するときに使用できます。 この LSN は、この関数の次の呼び出しによって無効になります。
ReserveAndAppendLog 関数がERROR_LOG_FILE_FULLを返す場合、ログに領域はもうありません。 これは、次のいずれかの方法で解決できます。
- 不要な予約をすべて無料で提供します。
- コンテナーをリサイクルするには、基本 LSN またはログ アーカイブの末尾、またはその両方を進めます。
- コンテナーをログに追加します。
ReserveAndAppendLog 関数が有効な pOverlapped 構造体を使用して呼び出され、ログ ハンドルが重複するオプションで作成された場合、この関数の呼び出しがERROR_IO_PENDINGのエラー コードで失敗した場合、有効な読み取りコンテキストへのポインターが ppvReadContext パラメーターによって指される変数に配置されます。
ログ レコードのコピーを完了するには、クライアントはまず、 GetOverlappedResult 関数または同期 待機関数のいずれかを使用して、重複した I/O 操作の遅延完了と実行を同期する必要があります。 詳細については、「 同期」と「入力と出力の重複」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | clfsw32.h |
Library | Clfsw32.lib |
[DLL] | Clfsw32.dll |