Funzione JetGetBookmark
Si applica a: Windows | Windows Server
Funzione JetGetBookmark
La funzione JetGetBookmark recupera il segnalibro per il record associato alla voce di indice nella posizione corrente di un cursore. Questo segnalibro può quindi essere usato per riposizionare il cursore nello stesso record usando 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
);
Parametri
sesid
Sessione da usare per questa chiamata.
tableid
Cursore da usare per questa chiamata.
pvBookmark
Buffer di output che riceve il segnalibro.
cbMax
Dimensioni massime, in byte, del buffer di output.
pcbActual
Dimensioni effettive, in byte, del segnalibro.
Se questo parametro è NULL , le dimensioni effettive del segnalibro non verranno restituite.
Se il buffer di output è troppo piccolo, le dimensioni effettive del segnalibro verranno comunque restituite. Ciò significa che questo numero sarà maggiore delle dimensioni del buffer di output.
Valore restituito
Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sugli errori ESE possibili, vedere Errori del motore di archiviazione estendibili e parametri di gestione degli errori.
Codice restituito |
Descrizione |
---|---|
JET_errSuccess |
Operazione riuscita. |
JET_errBufferTooSmall |
L'operazione è stata completata correttamente, ma il buffer di output era troppo piccolo per ricevere l'intero segnalibro. Il buffer di output è stato riempito con la quantità di segnalibro adatta. Le dimensioni effettive del segnalibro sono state restituite anche, se richiesto. |
JET_errClientRequestToStopJetService |
L'operazione non può essere completata perché tutte le attività nell'istanza associata alla sessione hanno interrotto come risultato di una chiamata a JetStopService. |
JET_errInstanceUnavailable |
Impossibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede che l'accesso a tutti i dati venga revocato per proteggere l'integrità dei dati. Windows XP: Questo valore restituito viene introdotto in Windows XP. |
JET_errNoCurrentRecord |
Il cursore non è posizionato su un record. I motivi possono essere diversi. Si verificherà, ad esempio, se il cursore viene posizionato dopo l'ultimo record dell'indice corrente. |
JET_errNotInitialized |
L'operazione non può essere completata perché l'istanza associata alla sessione non è ancora stata inizializzata. |
JET_errRestoreInProgress |
L'operazione non può essere completata perché un'operazione di ripristino è in corso nell'istanza associata alla sessione. |
JET_errSessionSharingViolation |
La stessa sessione non può essere usata contemporaneamente per più thread. Windows XP: Questo valore restituito viene introdotto in Windows XP. |
JET_errTermInProgress |
Impossibile completare l'operazione perché l'istanza associata alla sessione viene arrestata. |
Se questa funzione ha esito positivo, il segnalibro per il record associato alla voce di indice nella posizione corrente di un cursore verrà restituito nel buffer di output. Non verrà eseguita alcuna modifica allo stato del database.
Se questa funzione ha esito negativo, lo stato del buffer di output e le dimensioni effettive del segnalibro non verranno definiti a meno che non venga restituito JET_errBufferTooSmall. Nel caso in cui JET_errBufferTooSmall venga restituito, il buffer di output conterrà la maggior parte del segnalibro corrispondente allo spazio fornito e le dimensioni effettive del segnalibro saranno accurate. Non verrà eseguita alcuna modifica allo stato del database.
Commenti
I segnalibri devono essere generalmente considerati blocchi opachi di dati. Non è necessario eseguire alcun tentativo di sfruttare la struttura interna di questi dati. Tuttavia, le condizioni seguenti sono vere di tutti i segnalibri ESENT:
Un segnalibro identifica in modo univoco un record in una determinata tabella.
Il segnalibro di un record non cambierà per la durata del record.
Il segnalibro di un record è uguale alla chiave di tale record nell'indice primario sulla tabella contenente tale record. Se non viene definito alcun indice primario su tale tabella, il motore di database creerà il proprio segnalibro per il record.
I segnalibri possono essere confrontati tra loro usando la funzione memcmp per stabilire l'ordinamento relativo nell'indice primario sulla tabella dei record di origine. Se non viene definito alcun indice primario su tale tabella, non è significativo usare l'ordinamento relativo dei segnalibri da tale tabella.
È senza senso confrontare i segnalibri di record da tabelle diverse tra loro.
Un segnalibro è sempre minore o uguale a JET_cbBookmarkMost (256) byte in lunghezza, prima di Windows Vista.
Windows Vista: Nelle versioni successive e Windows Vista i segnalibri possono essere maggiori di JET_cbBookmarkMost (256) byte. La dimensione massima di un segnalibro è uguale al valore corrente di JET_paramKeyMost + 1.
Requisiti
Requisito | Valore |
---|---|
Client |
Richiede Windows Vista, Windows XP o Windows 2000 Professional. |
Server |
Richiede Windows Server 2008, Windows Server 2003 o Windows 2000 Server. |
Intestazione |
Dichiarato in Esent.h. |
Libreria |
Usare ESENT.lib. |
DLL |
Richiede ESENT.dll. |
Vedere anche
JET_ERR
JET_SESID
JET_TABLEID
JetGoToBookmark
JetStopService
memcmp