共用方式為


ILog::ReadRecord 方法 (txlogpub.h)

從記錄檔讀取記錄。

語法

HRESULT ReadRecord(
  [in]      LSN   lsnToRead,
  [in, out] LSN   *plsnPrev,
  [in, out] LSN   *plsnNext,
  [out]     BYTE  **ppbData,
  [out]     ULONG *pcbData
);

參數

[in] lsnToRead

要讀取之記錄的 LSN。

[in, out] plsnPrev

上一筆記錄的 LSN 指標 (緊接在要讀取之記錄之前的記錄) 。 如果不需要上一筆記錄的 LSN,此參數可以是 NULL 。 如果記錄中沒有先前的記錄,或發生錯誤,則此參數為 0。

[in, out] plsnNext

下一筆記錄的 LSN 指標 (緊接在記錄後面的記錄,以讀取) 。 如果不需要下一筆記錄的 LSN,此參數可以是 NULL 。 如果記錄檔中沒有下一筆記錄,此參數為 MAXLSN (0x7FFFFFFFFFFFFFFF) 。 如果發生錯誤,此參數為 0。

[out] ppbData

變數的指標,將包含傳回時記錄數據的指標。 此數據的記憶體是由 ReadRecord 配置,並由呼叫端釋放, (請參閱 CoTaskMemFree) 。 如果發生錯誤,此參數為 NULL

[out] pcbData

在傳回時接收記錄數據大小之變數的指標,以位元組為單位。

傳回值

這個方法可以傳回下列值,以及其他 HRESULT 值。

傳回碼 描述
S_OK
記錄已成功從記錄讀取。
XACT_E_INVALIDLSN
lsnToRead 超出記錄檔目前的限制。 請參閱 ILog::GetLogLimits
E_INVALIDARG
lsnToRead 位於記錄的目前限制內,但它不是記錄檔中的 LSN。
E_OUTOFMEMORY
由於記憶體不足,所以不會傳回記錄。

備註

雖然使用 ILog::AppendRecord 附加至記錄的記錄可能會從多個 BLOB 串連, 但 ReadRecord 會將記錄傳回為單一不透明的數據 Blob。 ILog 不提供從記錄擷取個別 BLOB 的方法。 呼叫端必須負責剖析 ReadRecord 所傳回記錄中的數據。

來電者的附註

如果記錄檔包含非常大的記錄,此方法可能會失敗,因為 ReadRecord 無法為記錄數據配置足夠的記憶體。 如果記錄的大小已限定,或您只需要記錄的初始部分,則呼叫 ILog::ReadRecordPrefix 可能會更有效率。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 txlogpub.h

另請參閱

ILog