JetGetBookmark-Funktion
Gilt für: Windows | Windows Server
JetGetBookmark-Funktion
Die JetGetBookmark-Funktion ruft das Lesezeichen für den Datensatz ab, der dem Indexeintrag an der aktuellen Position eines Cursors zugeordnet ist. Dieses Lesezeichen kann dann verwendet werden, um den Cursor mit JetGoToBookmarkwieder auf denselben Datensatz zu positionieren.
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
);
Parameter
sesid
Die Sitzung, die für diesen Aufruf verwendet werden soll.
tableid
Der Cursor, der für diesen Aufruf verwendet werden soll.
pvBookmark
Der Ausgabepuffer, der das Lesezeichen empfängt.
cbMax
Die maximale Größe des Ausgabepuffers in Bytes.
–actual
Die tatsächliche Größe des Lesezeichens in Bytes.
Wenn dieser Parameter NULL ist, wird die tatsächliche Größe des Lesezeichens nicht zurückgegeben.
Wenn der Ausgabepuffer zu klein ist, wird weiterhin die tatsächliche Größe des Lesezeichens zurückgegeben. Das bedeutet, dass diese Zahl größer als die Größe des Ausgabepuffers ist.
Rückgabewert
Diese Funktion gibt den JET_ERR datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine Errors and Error Handling Parameters.
Rückgabecode |
Beschreibung |
|---|---|
JET_errSuccess |
Der Vorgang wurde erfolgreich abgeschlossen. |
JET_errBufferTooSmall |
Der Vorgang wurde erfolgreich abgeschlossen, aber der Ausgabepuffer war zu klein, um das gesamte Lesezeichen zu empfangen. Der Ausgabepuffer wurde mit so viel Lesezeichen gefüllt, wie es passen würde. Die tatsächliche Größe des Lesezeichens wurde auch zurückgegeben, wenn dies angefordert wird. |
JET_errClientRequestToStopJetService |
Der Vorgang kann nicht abgeschlossen werden, da alle Aktivitäten auf der -Instanz, die der Sitzung zugeordnet ist, aufgrund eines Aufrufs von JetStopService beendet wurden. |
JET_errInstanceUnavailable |
Der Vorgang kann nicht abgeschlossen werden, da für die -Instanz, die der Sitzung zugeordnet ist, ein schwerwiegender Fehler aufgetreten ist, der erfordert, dass der Zugriff auf alle Daten widerrufen wird, um die Integrität dieser Daten zu schützen. Windows XP: Diese Rückgabewerte werden in xp Windows eingeführt. |
JET_errNoCurrentRecord |
Der Cursor ist nicht auf einem Datensatz positioniert. Dafür sind viele verschiedene Gründe möglich. Dies geschieht beispielsweise, wenn der Cursor nach dem letzten Datensatz im aktuellen Index positioniert ist. |
JET_errNotInitialized |
Der Vorgang kann nicht abgeschlossen werden, da die -Instanz, die der Sitzung zugeordnet ist, noch nicht initialisiert wurde. |
JET_errRestoreInProgress |
Der Vorgang kann nicht abgeschlossen werden, da ein Wiederherstellungsvorgang für die -Instanz durchgeführt wird, die der Sitzung zugeordnet ist. |
JET_errSessionSharingViolation |
Dieselbe Sitzung kann nicht gleichzeitig für mehrere Threads verwendet werden. Windows XP: Dieser Rückgabewert wird in xp Windows eingeführt. |
JET_errTermInProgress |
Der Vorgang kann nicht abgeschlossen werden, da die -Instanz, die der Sitzung zugeordnet ist, heruntergefahren wird. |
Wenn diese Funktion erfolgreich ist, wird das Lesezeichen für den Datensatz, der dem Indexeintrag an der aktuellen Position eines Cursors zugeordnet ist, im Ausgabepuffer zurückgegeben. Es erfolgt keine Änderung des Datenbankstatus.
Wenn diese Funktion fehlschlägt, sind der Status des Ausgabepuffers und die tatsächliche Größe des Lesezeichens nicht definiert, es sei denn, JET_errBufferTooSmall zurückgegeben wurde. Für den Fall, JET_errBufferTooSmall zurückgegeben wird, enthält der Ausgabepuffer so viel Lesezeichen, wie in den bereitgestellten Platz passen, und die tatsächliche Größe des Lesezeichens ist genau. Es erfolgt keine Änderung des Datenbankstatus.
Bemerkungen
Lesezeichen sollten in der Regel als nicht transparente Datenbrocken behandelt werden. Es sollte nicht versucht werden, die interne Struktur dieser Daten auszunutzen. Die folgenden Bedingungen gelten jedoch für alle ESENT-Lesezeichen:
Ein Lesezeichen identifiziert einen Datensatz in einer bestimmten Tabelle eindeutig.
Das Lesezeichen eines Datensatzes ändert sich während der Lebensdauer dieses Datensatzes nicht.
Das Lesezeichen eines Datensatzes ist mit dem Schlüssel dieses Datensatzes auf dem primären Index für die Tabelle identisch, die diesen Datensatz enthält. Wenn kein primärer Index für diese Tabelle definiert ist, erstellt die Datenbank-Engine ein eigenes Lesezeichen für den Datensatz.
Lesezeichen können mithilfe der memcmp-Funktion miteinander verglichen werden, um ihre relative Reihenfolge im primären Index für die Tabelle der Quelldatensätze zu erstellen. Wenn kein primärer Index für diese Tabelle definiert ist, ist es nicht sinnvoll, die relative Reihenfolge der Lesezeichen aus dieser Tabelle zu verwenden.
Es ist bedeutungslos, Lesezeichen von Datensätzen aus verschiedenen Tabellen miteinander zu vergleichen.
Ein Lesezeichen ist vor der Verwendung von Vista immer kleiner oder Windows gleich JET_cbBookmarkMost (256) Bytes.
Windows Vista: In Windows Vista und höheren Versionen können Lesezeichen größer als JET_cbBookmarkMost (256) Bytes sein. Die maximale Größe eines Lesezeichens entspricht dem aktuellen Wert von JET_paramKeyMost + 1.
Anforderungen
| Anforderung | Wert |
|---|---|
Client |
Erfordert Windows Vista, Windows XP oder Windows 2000 Professional. |
Server |
Erfordert Windows Server 2008, Windows Server 2003 oder Windows 2000 Server. |
Header |
Wird in Esent.h deklariert. |
Bibliothek |
Verwenden Sie ESENT.lib. |
DLL |
Erfordert ESENT.dll. |
Weitere Informationen
JET_ERR
JET_SESID
JET_TABLEID
JetGoToBookmark
JetStopService
memcmp