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

バッファーが指定されている場合、ブロック割り当ておよび割り当て解除ルーチンにユーザー コンテキストとして返されるバッファーへのポインター。

pfnAllocBufferNULL の場合、このパラメーターは無視されます。

[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

こちらもご覧ください

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

CreateLogFile

DeleteLogMarshallingArea