共用方式為


ReadLogRecord 函式 (clfsw32.h)

從指定的記錄序號起始讀取序列, (LSN) 三種模式之一,並傳回指定記錄檔記錄和讀取內容的第一個。 用戶端可以將讀取內容傳遞至 ReadNextLogRecord,以在指定的模式中讀取後續記錄。

語法

CLFSUSER_API BOOL ReadLogRecord(
  [in]                PVOID             pvMarshal,
  [in]                PCLFS_LSN         plsnFirst,
  [in]                CLFS_CONTEXT_MODE eContextMode,
  [out]               PVOID             *ppvReadBuffer,
  [out]               PULONG            pcbReadBuffer,
  [out]               PCLFS_RECORD_TYPE peRecordType,
  [out]               PCLFS_LSN         plsnUndoNext,
  [out]               PCLFS_LSN         plsnPrevious,
  [out]               PVOID             *ppvReadContext,
  [in, out, optional] LPOVERLAPPED      pOverlapped
);

參數

[in] pvMarshal

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

[in] plsnFirst

CLFS_LSN 結構的指標,指定讀取作業應該啟動之記錄的記錄序號 (LSN) 。

此值必須是記錄使用中範圍內有效記錄的 LSN。

[in] eContextMode

*ppvReadContext 中傳回之讀取內容的模式。

下表識別三種互斥讀取模式。

意義
ClfsContextPrevious
讀取 plsnPrevious 連結至 的記錄。
ClfsContextUndoNext
讀取 plsnUndoNext 連結至的記錄鏈結。
ClfsContextForward
使用緊接在讀取內容中目前 LSN 後面的 LSN 讀取記錄。

[out] ppvReadBuffer

變數的指標,可接收記錄 I/O 區塊中目標記錄的指標。

[out] pcbReadBuffer

變數的指標,以位元組為單位接收 *ppvReadBuffer 中傳回的數據大小。

[out] peRecordType

接收讀取記錄類型的變數指標。

此參數是其中一個 CLFS_RECORD_TYPE常數

[out] plsnUndoNext

CLFS_LSN 結構的指標,該結構會接收復原記錄鏈結中下一筆記錄的 LSN。

[out] plsnPrevious

CLFS_LSN 結構的指標 ,該結構會接收上一筆記錄鏈結中下一筆記錄的 LSN。

[out] ppvReadContext

變數的指標,會在讀取成功時接收系統配置的讀取內容指標。

如果函式延遲作業完成,它會傳回有效的讀取內容指標和 ERROR_IO_PENDING的錯誤狀態。 在其他所有錯誤上,讀取內容指標為 NULL。 如需處理函式延遲完成的詳細資訊,請參閱本主題的一節。

取得所有要求的記錄檔記錄之後,客戶端必須將讀取內容傳遞至 TerminateReadLog ,以釋放相關聯的記憶體。 失敗會導致記憶體外洩。

注意 常見的記錄檔系統 (CLFS) 讀取內容不是安全線程。 一次不應由多個線程使用,或一次傳遞至多個異步讀取。
 

[in, out, optional] pOverlapped

重迭結構的指標,這是異步操作的必要專案。

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

傳回值

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

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

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

備註

如果 CreateLogMarshallingArea 指定的記錄區塊大小不足以保存完整的記錄區塊,就會傳回錯誤訊息ERROR_LOG_BLOCK_INCOMPLETE。

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

如果您嘗試開啟比先前呼叫 CreateLogMarshallingArea 中指定的數目緩衝區更多的讀取內容,則會傳回ERROR_LOG_BLOCK_EXHAUSTED。

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

在 ReadLogRecord 以異步方式完成之後,要求記錄會從磁碟讀取,但不會解析為 *ppvReadBuffer 中的指標。

若要完成要求的讀取並取得記錄檔記錄的有效指標,客戶端必須呼叫 ReadNextLogRecord,這會傳入 ReadLogRecord 傳 回的讀取內容指標。

注意 常見的記錄檔系統 (CLFS) 讀取內容不是安全線程。 一次不應該有多個線程使用它們。

CLFS 讀取內容一次不應該傳遞至多個異步讀取,否則函式會因為ERROR_BUSY而失敗。

 

規格需求

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

另請參閱

CLFS_CONTEXT_MODE

CLFS_LSN

CLFS_RECORD_TYPE

一般記錄檔系統函式

CreateLogMarshallingArea

重疊

ReadNextLogRecord

TerminateReadLog