JetGetBookmark 函式
適用于: Windows |Windows Server
JetGetBookmark 函式
JetGetBookmark函式會擷取與游標目前位置之索引項目目相關聯的記錄書簽。 接著,此書簽可用來使用 JetGoToBookmark將游標重新置放回相同的記錄。
JET_ERR JET_API JetGetBookmark(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out_opt void* pvBookmark,
__in unsigned long cbMax,
__out_opt unsigned long* pcbActual
);
參數
sesid
要用於這個呼叫的會話。
tableid
要用於這個呼叫的資料指標。
pvBookmark
接收書簽的輸出緩衝區。
cbMax
輸出緩衝區的大小上限,以位元組為單位。
azureActual
書簽的實際大小,以位元組為單位。
如果此參數為 Null ,則不會傳回書簽的實際大小。
如果輸出緩衝區太小,則仍會傳回書簽的實際大小。 這表示這個數位會大於輸出緩衝區的大小。
傳回值
此函式會傳回具有下列其中一個傳回碼 的JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸的儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
描述 |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errBufferTooSmall |
作業已順利完成,但輸出緩衝區太小而無法接收整個書簽。 輸出緩衝區已填入符合的書簽數量。 如果已要求,也會傳回書簽的實際大小。 |
JET_errClientRequestToStopJetService |
作業無法完成,因為與會話相關聯的實例上的所有活動都因為對 JetStopService的呼叫而停止。 |
JET_errInstanceUnavailable |
作業無法完成,因為與會話相關聯的實例發生嚴重錯誤,需要撤銷所有資料的存取權,以保護該資料的完整性。 Windowsxp: 此傳回值會在 Windows XP 中引進。 |
JET_errNoCurrentRecord |
游標不在記錄上。 此情況具有許多不同的原因。 例如,如果游標位於目前索引的最後一筆記錄之後,就會發生這種情況。 |
JET_errNotInitialized |
作業無法完成,因為與會話相關聯的實例尚未初始化。 |
JET_errRestoreInProgress |
作業無法完成,因為與會話相關聯的實例上正在進行還原作業。 |
JET_errSessionSharingViolation |
同一個會話不能同時用於多個執行緒。 Windowsxp: 此傳回值會在 Windows XP 中引進。 |
JET_errTermInProgress |
作業無法完成,因為與會話相關聯的實例正在關閉。 |
如果此函式成功,則會在輸出緩衝區中傳回與游標目前位置之索引項目目相關聯的記錄書簽。 不會變更資料庫狀態。
如果此函式失敗,除非傳回JET_errBufferTooSmall,否則輸出緩衝區的狀態和書簽的實際大小將會未定義。 如果傳回JET_errBufferTooSmall,輸出緩衝區會包含符合所提供空間的書簽數量,而書簽的實際大小將會正確。 不會變更資料庫狀態。
備註
書簽通常應該視為不透明的資料區塊。 不應嘗試利用此資料的內部結構。 不過,下列條件適用于所有 ESENT 書簽:
書簽可唯一識別指定資料表中的記錄。
記錄的書簽不會在該記錄的存留期內變更。
記錄的書簽與包含該記錄之資料表上主要索引上的該記錄索引鍵相同。 如果未在該資料表上定義任何主索引,資料庫引擎就會為記錄建立自己的書簽。
您可以使用 memcmp 函式彼此比較書簽,在源記錄的資料表上,在主要索引中建立其相對順序。 如果未在該資料表上定義任何主要索引,則使用該資料表中書簽的相對順序並不有意義。
從不同的資料表與彼此比較記錄書簽是無意義的。
在 Windows Vista 之前,書簽一律小於或等於JET_cbBookmarkMost (256) 個位元組。
Windows Vista: 在 Windows Vista 和更新版本上,書簽可以大於 JET_cbBookmarkMost (256) 個位元組。 書簽的大小上限等於目前JET_paramKeyMost + 1 的值。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
Server |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
另請參閱
JET_ERR
JET_SESID
JET_TABLEID
JetGoToBookmark
JetStopService
memcmp