CreateLogMarshallingArea 関数 (clfsw32.h)
ログのマーシャリング領域を作成し、成功するとマーシャリング コンテキストを返します。 マーシャリング領域を作成する前に、ログに少なくとも 1 つのコンテナーが必要です。
マーシャリング コンテキストは、ログにレコードを追加したり、ログからレコードを読み取ったりするために使用されます。 レコードは常にログ ブロックに格納されるため、マーシャリング コンテキストを通過する必要があります。
ログ レコードは、 ReserveAndAppendLog を呼び出すことによって書き込まれます。
構文
CLFSUSER_API BOOL CreateLogMarshallingArea(
[in] HANDLE hLog,
[in, optional] CLFS_BLOCK_ALLOCATION pfnAllocBuffer,
[in, optional] CLFS_BLOCK_DEALLOCATION pfnFreeBuffer,
[in, optional] PVOID pvBlockAllocContext,
[in] ULONG cbMarshallingBuffer,
[in] ULONG cMaxWriteBuffers,
[in] ULONG cMaxReadBuffers,
[out] PVOID *ppvMarshal
);
パラメーター
[in] hLog
CreateLogFile から取得されたログへのハンドル。
ログ ハンドルは、専用または多重化されたログを参照できます。
[in, optional] pfnAllocBuffer
ログ ブロックにメモリを割り当てるコールバック関数。
このパラメーターが NULL の場合、共通ログ・ファイル・システム (CLFS) はデフォルトのブロック割り振り機能を提供します。 ブロック解放コールバックが pfnFreeBuffer パラメーターを使用して指定されている場合、このパラメーターを NULL にすることはできません。
次の例では、ブロック割り当てコールバック関数の構文を識別します。
typedef PVOID (* CLFS_BLOCK_ALLOCATION) (ULONG cbBufferSize, PVOID pvUserContext);
[in, optional] pfnFreeBuffer
pfnAllocBuffer によって割り当てられたログ ブロックを解放するコールバック関数。
このパラメーターが NULL の場合、CLFS は既定のブロック割り当て解除関数を提供します。 ブロック割り当てコールバックが pfnAllocBuffer パラメーターを使用して指定されている場合、このパラメーターを NULL にすることはできません。
次の例では、ブロック解放コールバック関数の構文を識別します。
typedef void (* CLFS_BLOCK_DEALLOCATION) (PVOID pvBuffer, PVOID pvUserContext);
"ClfsBlockDeallocProc" の buffer パラメーターは、 pfnAllocBuffer によって指されるコールバックを使用して割り当てられるブロックを指す必要があります。
[in, optional] pvBlockAllocContext
バッファーが指定されている場合、ブロック割り当ておよび割り当て解除ルーチンにユーザー コンテキストとして返されるバッファーへのポインター。
pfnAllocBuffer が NULL の場合、このパラメーターは無視されます。
[in] cbMarshallingBuffer
新しいマーシャリング領域で使用される個々のログ I/O ブロックのサイズ (バイト単位)。 これは、安定したストレージ メディアのセクター サイズの倍数である必要があります。 セクター サイズは、GetDiskFreeSpace 関数の lpBytesPerSector パラメーターで返される値です。
レコードがこの値より長い場合、レコードを追加したり読み取ったりすることはできません。
[in] cMaxWriteBuffers
書き込み操作に対していつでも割り当てることができるブロックの最大数。
この値は、データフラッシュの頻度に影響を与える可能性があります。 データ フラッシュ サイクルの頻度を制御するために制限を指定する必要がない場合は、INFINITE を指定します。
[in] cMaxReadBuffers
読み取り操作に対していつでも割り当てることができるブロックの最大数。
読み取りコンテキストでは、少なくとも 1 つの読み取りブロックが使用されます。
[out] ppvMarshal
CreateLogMarshallingArea が正常に完了したときに CLFS によって割り当てられるマーシャリング コンテキストへのポインター。
このコンテキストは、ログ マーシャリング領域に対するすべての読み取り、追加、書き込み、およびフラッシュ操作で使用する必要があります。 マーシャリング コンテキストを使用してマーシャリング領域にアクセスするすべての操作は、スレッド セーフです。 操作が成功しなかった場合、このパラメーターは NULL です。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
次の一覧は、考えられるエラー コードを示しています。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | clfsw32.h |
Library | Clfsw32.lib |
[DLL] | Clfsw32.dll |