共用方式為


ReserveAndAppendLog 函式 (clfsw32.h)

保留記錄緩衝區的空間,或將記錄檔記錄附加至記錄檔,或同時保留兩者。 函式是不可部分完成的。

語法

CLFSUSER_API BOOL ReserveAndAppendLog(
  [in]                PVOID             pvMarshal,
  [in, optional]      PCLFS_WRITE_ENTRY rgWriteEntries,
  [in]                ULONG             cWriteEntries,
  [in, optional]      PCLFS_LSN         plsnUndoNext,
  [in, optional]      PCLFS_LSN         plsnPrevious,
  [in]                ULONG             cReserveRecords,
  [in, out, optional] LONGLONG []       rgcbReservation,
  [in]                ULONG             fFlags,
  [out, optional]     PCLFS_LSN         plsn,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

參數

[in] pvMarshal

使用 CreateLogMarshallingArea 函式所配置之封送處理內容的指標。

[in, optional] rgWriteEntries

要封送處理成一筆記錄 之CLFS_WRITE_ENTRY 緩衝區陣列的指標。

如果 cWriteEntries 參數為零,則會忽略此參數。

[in] cWriteEntries

rgWriteEntries 陣列中的寫入項目數目。

如果此值為非零值,您必須在 rgWriteEntries 參數中指定緩衝區。

[in, optional] plsnUndoNext

CLFS_LSN 結構的指標,指定復原鏈結中下一筆記錄 (LSN) 的記錄序號。

[in, optional] plsnPrevious

CLFS_LSN 結構的指標,指定上一個鏈結中前一筆記錄的 LSN。

[in] cReserveRecords

rgcbReservation 陣列中的記錄大小數目。

[in, out, optional] rgcbReservation

cReserveRecords 參數所指定之每個記錄的保留大小陣列指標。

如果 cReserveRecords 參數為零,則會忽略此參數。 如果保留大小為負數,則會釋放該大小的保留。

在成功完成時,會傳回個別數位元素中保留給每個記錄的實際空間,包括必要的額外負荷。 這些值可以傳遞至 FreeReservedLog 函式,以調整封送處理區域中保留的空間。

[in] fFlags

指定此函式行為的旗標。

可以合併下列一或多個值。

意義
CLFS_FLAG_FORCE_APPEND
指派先前未指派實體位置之記錄中所有附加記錄的實體位置。

所有這些記錄都可供從其他封送處理內容讀取。

CLFS_FLAG_FORCE_FLUSH
指派先前未指派實體位置之記錄中所有附加記錄的實體位置。

所有這些記錄都可供從其他封送處理內容讀取。 然後,記錄會排清到磁碟。

CLFS_FLAG_NO_FLAGS
不指派任何旗標。
CLFS_FLAG_USE_RESERVATION
使用封送處理區域中保留的空間來附加當前記錄。

[out, optional] plsn

接收附加記錄之 LSN 之CLFS_LSN 結構的指標。

[in, out, optional] pOverlapped

重疊結構的指標。

如果未使用異步操作,這個參數可以是 NULL

傳回值

如果函式成功,則傳回非零的值。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError 函 式。

下列清單會識別可能的錯誤碼:

備註

ReserveAndAppendLog 函式所傳回的 LSN 不一定是所使用的下一個 LSN。 傳回的 LSN 是下一個 LSN 的估計值,它會根據 fFlags 參數所指定的旗標而有所不同。 移動基底尾時,可以使用傳回的 LSN。 下一次呼叫此函式時,此 LSN 會失效。

如果 ReserveAndAppendLog 函式傳回 ERROR_LOG_FILE_FULL,則記錄中不會再有空間。 這可以透過下列其中一種方式來解決:

  • 釋放任何不必要的保留。
  • 將基底 LSN 或記錄封存結尾或兩者前移,以回收容器。
  • 將容器新增至記錄。
CLFS 管理 API 也提供一種方式來處理涉及完整記錄的案例。

如果使用有效的 pOverlapped 結構呼叫 ReserveAndAppendLog 函式,並使用重疊的選項建立記錄句柄,則如果呼叫此函式失敗並出現錯誤碼ERROR_IO_PENDING,則會將有效的讀取內容的指標放在 ppvReadContext 參數所指向的變數中。

若要完成記錄記錄複製,客戶端應該先使用 GetOverlappedResult 函式或其中一個同步 處理等候函式,以延遲完成重疊 I/O 作業的執行。 如需詳細資訊,請參閱 同步處理和重疊的輸入和輸出

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 R2 [僅限桌面應用程式]
目標平台 Windows
標頭 clfsw32.h
程式庫 Clfsw32.lib
Dll Clfsw32.dll

另請參閱

CLFS_LSN

CLFS_WRITE_ENTRY

一般記錄檔系統函式

重疊