JetRetrieveKey-Funktion
Letzte Änderung: Freitag, 27. Februar 2015
Gilt für: Windows | Windows Server
JetRetrieveKey-Funktion
Die Funktion JetRetrieveKey Ruft den Schlüssel für die Indexeintrag an der aktuellen Position eines Cursors ab. Diese Schlüssel werden durch Aufrufe von JetMakeKeyerstellt. Der abgerufene Schlüssel kann dann effizient zurückzugebenden diesem Cursor mit dem gleichen Indexeintrag verwendet werden, durch einen Aufruf von wurde.
JET_ERR JET_API JetRetrieveKey(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out_opt void* pvData,
__in unsigned long cbMax,
__out_opt unsigned long* pcbActual,
__in JET_GRBIT grbit
);
Parameter
sesid
Die Sitzung für diesen Aufruf verwenden.
TableID
Der Mauszeiger für dieses Anrufs verwenden.
pvData
Den Ausgabepuffer, der den Schlüssel entgegennimmt.
cbMax
Die maximale Größe in Bytes den Ausgabepuffer.
pcbActual
Empfängt die tatsächliche Größe des Schlüssels in Bytes.
Wenn dieser Parameter NULL ist, und klicken Sie dann die tatsächliche Größe des Schlüssels nicht zurückgegeben wird.
Wenn der Ausgabepuffer zu klein ist, wird die tatsächliche Größe des Schlüssels weiterhin zurückgegeben. Dies bedeutet, dass diese Zahl größer als die Größe des Puffers ausgegeben werden.
JET_errInvalidGrbit
Eine Gruppe von Bits an, die die Optionen für dieses Anrufs zu verwendende enthalten, die NULL oder mehrere der folgenden Optionen enthalten.
Wert |
Bedeutung |
---|---|
JET_bitRetrieveCopy |
Wenn angegeben, wird das Modul den Suche-Schlüssel für den Cursor zurück. Die suchen-Taste wird eine oder mehrere vorausgehende Aufrufe von JetMakeKey für die Zwecke zu dieser Schlüssel mit wurde oder Festlegen eines Index-Bereichen mithilfe von JetSetIndexRangeSuchvorgänge mit aufgebaut. |
Return Value
Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehlern und Fehler behandeln von Parametern.
Rückgabecode |
Beschreibung |
---|---|
JET_errSuccess |
Der Vorgang wurde erfolgreich abgeschlossen. |
JET_errClientRequestToStopJetService |
Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf die Instanz der Sitzung zugeordnet aufgrund eines Aufrufs von JetStopServicebehoben ist. |
JET_errInstanceUnavailable |
Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz der Sitzung zugeordnet ein schwerwiegender Fehler, der erforderlich sind aufgetreten wurde, dass der Zugriff auf alle Daten gesperrt werden, um die Integrität der Daten zu schützen. Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden. |
JET_errKeyNotMade |
Es ist kein aktuelle Suche-Schlüssel für den Cursor. Für JetRetrieveKey geschieht, wenn JET_bitRetrieveCopy angegeben ist und ein Schlüssel für die Suche ist nicht für diesen Cursor mit einem vorherigen Aufruf von JetMakeKeyerstellt wurden. Die suchen-Taste wird durch einen vorherigen Aufruf einer beliebigen Navigations-API für den Cursor als JetMovegelöscht werden. |
JET_errNoCurrentRecord |
Der Cursor befindet sich nicht auf einen Datensatz. Dies kann vielen verschiedenen Gründen auftreten. Beispielsweise dies geschieht, wenn der Cursor derzeit nach dem letzten Datensatz auf dem aktuellen Index befindet. |
JET_errNotInitialized |
Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz der Sitzung zugeordnet wurde noch nicht initialisiert. |
JET_errRestoreInProgress |
Es ist nicht möglich, den Vorgang abzuschließen, da ein Restore-Vorgang in Arbeit auf die Instanz der Sitzung zugeordnet ist. |
JET_errSessionSharingViolation |
Die gleiche Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden. Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden. |
JET_errTermInProgress |
Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz der Sitzung zugeordnet heruntergefahren wird. |
JET_wrnBufferTruncated |
Der Vorgang erfolgreich abgeschlossen wurde, aber den Ausgabepuffer ist zu klein für den gesamten Key erhalten haben. Der Ausgabepuffer wurde mit viel des Schlüssels passen würde gefüllt. Die tatsächliche Größe des Schlüssels wurde auch zurückgegeben, wenn angefordert. Hinweis Dieser Fehler wird nicht zurückgegeben werden, wenn JET_bitRetrieveCopy angegeben ist. Finden Sie im Abschnitt "Hinweise" Weitere Informationen. |
Bei Erfolg wird der Schlüssel für den Indexeintrag an der aktuellen Position des Cursors in den Ausgabepuffer zurückgegeben werden. JET_wrnBufferTruncated zurückgegeben wird der Ausgabepuffer enthalten, wie viel des Schlüssels in das Eingabefeld und die tatsächliche Größe des Schlüssels passt exakt sein wird. Keine Änderung an den Zustand der Datenbank erfolgt.
Bei einem Fehler werden der Status der Ausgabepuffer und der tatsächlichen Größe des Schlüssels nicht definiert sein. Keine Änderung an den Zustand der Datenbank erfolgt.
Anmerkungen
Schlüssel sollten in der Regel als undurchsichtiger Datenblöcke behandelt werden. Nicht versucht sollte die interne Struktur dieser Daten zu nutzen. Die folgenden Eigenschaften können jedoch über alle ESENT Schlüssel bekannt sein:
Verwenden von Memcmp -Funktion zum Einrichten ihrer relative Reihenfolge in den ursprünglichen Index über die Tabelle, der die Quelle Indexeinträge gegeneinander möglicherweise Schlüssel verglichen werden.
Es ist keine Bedeutung Schlüssel der Indexeinträge aus verschiedenen Indizes miteinander verglichen.
Ein Schlüssel ist immer kleiner oder gleich JET_cbKeyMost (255) Bytes Länge vor Windows Vista. Unter Windows Vista und spätere Versionen können Schlüssel größer sein. Die maximale Größe eines Schlüssels ist der aktuelle Wert des JET_paramKeyMost gleich.
Zusätzlich zu den oben genannten Eigenschaften der ESENT Schlüssel ist es im Allgemeinen wichtig Beachten Sie, dass ein Suche Schlüssel aus dem Schlüssel für einen Indexeintrag unterscheidet. Insbesondere möglicherweise ein Schlüssel für die Suche mehr als ein gewöhnliche-Taste. Diese zusätzliche Länge tritt auf, wenn eine Platzhalter-Option beim Erstellen des Schlüssels für die Suche verwendet wird. Weitere Informationen finden Sie unter JetMakeKey .
Es gibt ein wichtiger Fehler in diese API, die in allen Versionen vorhanden ist. Verwenden die Verwendung von JET_bitRetrieveCopy die suchen-Taste angefordert, und der Ausgabepuffer ist zu klein, um den gesamten Schlüssel empfangen werden JET_wrnBufferTruncated nicht zurückgegeben. JET_errSuccess werden stattdessen zurückgegeben. Es ist wichtig, stellen Sie sicher, dass die tatsächliche Größe des Schlüssels mit PcbActual zurückgegeben, die kleiner oder gleich der Größe des Ausgabepuffers ist. Ist die tatsächliche Größe größer als die Größe des Ausgabepuffers, sollte der Aufrufer JetRetrieveKey reagieren, als wäre JET_wrnBufferTruncated stattdessen zurückgegeben wurden.
Voraussetzungen
-Client, |
Erfordert Windows Vista, Windows XP oder Windows 2000 Professional. |
Server |
WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server benötigt. |
Kopfzeile |
In Esent.h deklariert. |
Library |
Verwenden Sie ESENT.lib. |
DLL |
Erfordert "ESENT.dll". |
Siehe auch
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetMakeKey
wurde
JetSetIndexRange