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 值。
傳回碼 | 描述 |
---|---|
|
記錄已成功從記錄讀取。 |
|
lsnToRead 超出記錄檔目前的限制。 請參閱 ILog::GetLogLimits。 |
|
lsnToRead 位於記錄的目前限制內,但它不是記錄檔中的 LSN。 |
|
由於記憶體不足,所以不會傳回記錄。 |
備註
雖然使用 ILog::AppendRecord 附加至記錄的記錄可能會從多個 BLOB 串連, 但 ReadRecord 會將記錄傳回為單一不透明的數據 Blob。 ILog 不提供從記錄擷取個別 BLOB 的方法。 呼叫端必須負責剖析 ReadRecord 所傳回記錄中的數據。
來電者的附註
如果記錄檔包含非常大的記錄,此方法可能會失敗,因為 ReadRecord 無法為記錄數據配置足夠的記憶體。 如果記錄的大小已限定,或您只需要記錄的初始部分,則呼叫 ILog::ReadRecordPrefix 可能會更有效率。規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | txlogpub.h |