CreateLogMarshallingArea 函式 (clfsw32.h)
建立記錄檔的封送處理區域,並在成功傳回封送處理內容時建立。 建立封送處理區域之前,記錄至少必須有一個容器。
封送處理內容可用來將記錄附加至記錄,或從記錄檔讀取記錄。 由於記錄一律會儲存在記錄區塊中,因此必須通過封送處理內容。
記錄檔記錄會藉由呼叫 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” 的 緩衝區 參數必須指向使用 pfnAllocBuffer 所指向的回呼所配置的區塊。
[in, optional] pvBlockAllocContext
如果指定了緩衝區,則會將緩衝區當做用戶內容傳回給區塊配置和解除分配例程的緩衝區指標。
如果 pfnAllocBuffer 為 NULL,則會忽略此參數。
[in] cbMarshallingBuffer
新封送處理區域將使用的個別記錄 I/O 區塊大小,以位元組為單位。 這必須是穩定儲存媒體上的扇區大小倍數。 扇區大小是在 GetDiskFreeSpace 函式的 lpBytesPerSector 參數中傳回的值。
如果記錄超過此值,則無法附加或讀取記錄。
[in] cMaxWriteBuffers
隨時可配置給寫入作業的區塊數目上限。
此值可能會影響數據排清的頻率。 如果您不需要指定限制來控制數據排清週期的頻率,請指定 INFINITE。
[in] cMaxReadBuffers
隨時可以配置給讀取作業的區塊數目上限。
讀取內容至少使用一個讀取區塊。
[out] ppvMarshal
CLFS 在 CreateLogMarshallingArea 成功完成時所配置的封送處理內容指標。
此內容必須搭配所有讀取、附加、寫入和排清作業使用,才能記錄封送處理區域。 使用封送處理內容存取封送處理區域的所有作業都是安全線程的。 如果作業不成功,則此參數為 NULL 。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
下列清單會識別可能的錯誤碼:
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 R2 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | clfsw32.h |
程式庫 | Clfsw32.lib |
Dll | Clfsw32.dll |