通用記錄檔系統 (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 設定為 INFINITE(在 Winbase.h 中定義)。
若要指定一次可配置以讀取記錄記錄的記錄 I/O 緩衝區數目上限,請設定 ClfsCreateMarshallingArea 函式的 cMaxReadBuffers 參數。 如果您不需要控制配置的讀取緩衝區數目,請將 cMaxReadBuffers 設定為 INFINITE。
如果您想要為記錄 I/O 緩衝區執行自己的記憶體配置,請設定 ClfsCreateMarshallingArea 函式的 pfnAllocBuffer 和 pfnFreeBuffer 參數,以指向您自己的配置和解除配置函式。 然後,CLFS 會在需要建立或釋放記錄 I/O 緩衝區時呼叫您的函式來執行實際的記憶體配置和解除配置。
在某些情況下,您可能會希望提前在調度區域中預留空間。 例如,您可能知道要寫入一組 10 個日誌記錄,而且您想要確定封送區中有足夠的空間以容納整個集合。 若要保留 10 筆記錄的空間,請建立一個 10 個元素的陣列來保存記錄的大小,然後將陣列傳遞至 rgcbReservation 參數中的 ClfsReserveAndAppendLog 函式。 ClfsReserveAndAppendLog 是多用途函式,可保留封送處理區域中的空間,或將日誌記錄附加至流,或同時以原子性執行這兩項操作。 藉由適當地設定參數,您可以呼叫 ClfsReserveAndAppendLog 來保留空間以供將來使用,而不需要實際將任何記錄附加至串流。