共用方式為


CLFS 封送處理區域

一般記錄檔系統 (CLFS) 用戶端會將記錄檔記錄附加至動態記憶體中的 封送處理區域 ,而 CLFS 會定期將這些記錄寫入穩定儲存體。 封送處理區域是記錄 I/O 緩衝區的集合,每個緩衝區都可以保存數個記錄檔記錄。 記錄 I/O 緩衝區會保存最近寫入資料流程的記錄 (,但可能未排清到穩定儲存體) ,以及最近從資料流程讀取的記錄。

您可以呼叫 ClfsCreateMarshallingArea來建立封送處理區域,此時您必須指定封送處理區域將使用的記錄 I/O 緩衝區大小,以及這些緩衝區會位於分頁或非分頁集區中。 封送處理區域中的所有記錄 I/O 緩衝區大小都相同,CLFS 可確保大小是基礎穩定儲存媒體上磁區大小的倍數。 也就是說,CLFS 會採用您所要求的大小,並視需要四捨五入,讓您的 I/O 緩衝區與穩定的儲存媒體相容。

CLFS 視需要配置並釋放記錄 I/O 緩衝區,但您可以選擇設定一次可配置的最大 I/O 緩衝區數目。 您也可以選擇提供自己的緩衝區配置和解除配置函式。

若要指定一次可配置以寫入記錄檔記錄的記錄檔 I/O 緩衝區數目上限,請設定ClfsCreateMarshallingArea函式的cMaxWriteBuffers參數。 限制緩衝區數目會影響排清至穩定儲存體的頻率;使用較少的緩衝區時,記錄檔記錄必須更頻繁地寫入穩定儲存體。 如果您不需要控制排清頻率,請將 cMaxWriteBuffers 設定為 Winbase.h 中定義的 INFINITE () 。

若要指定一次可配置用於讀取記錄記錄的記錄檔 I/O 緩衝區數目上限,請設定ClfsCreateMarshallingArea函式的cMaxReadBuffers參數。 如果您不需要控制配置的讀取緩衝區數目,請將 cMaxReadBuffers 設定為 INFINITE。

如果您想要對記錄 I/O 緩衝區執行自己的記憶體配置,請將ClfsCreateMarshallingArea函式的pfnAllocBufferpfnFreeBuffer參數設定為指向您自己的配置和解除配置函式。 然後,CLFS 會呼叫函式,以在需要建立或釋放記錄 I/O 緩衝區時執行實際的記憶體配置和解除配置。

在某些情況下,您可能想要事先在封送處理區域中保留空間。 例如,您可能知道您即將撰寫一組十筆記錄檔記錄,而且您想要確定封送處理區域中有足夠的空間可供整個集合使用。 若要保留十筆記錄的空間,請建立一個包含記錄大小的十個專案陣列,然後將陣列傳遞至rgcbReservation參數中的ClfsReserveAndAppendLog函式。 ClfsReserveAndAppendLog 是多用途函式,可保留封送處理區域中的空間,或將記錄檔記錄附加至資料流程,或以不可部分完成的方式執行這兩項作業。 藉由適當地設定參數,您可以呼叫 ClfsReserveAndAppendLog 來保留空間以供日後使用,而不實際將任何記錄附加至資料流程。