Funzione JetGetCurrentIndex
Si applica a: Windows | Windows Server
Funzione JetGetCurrentIndex
La funzione JetGetCurrentIndex determina il nome dell'indice corrente di un cursore specificato. Questo nome viene usato anche per selezionare nuovamente l'indice come indice corrente usando JetSetCurrentIndex. Può essere usato anche per individuare le proprietà di tale indice usando JetGetTableIndexInfo.
JET_ERR JET_API JetGetCurrentIndex(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out JET_PSTR szIndexName,
__in unsigned long cchIndexName
);
Parametri
sesid
Sessione da utilizzare per questa chiamata.
tableid
Cursore da utilizzare per questa chiamata.
szIndexName
Buffer di output che riceve il nome dell'indice corrente del cursore.
cchIndexName
Dimensione massima in caratteri del buffer di output.
Valore restituito
Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sui possibili errori ESE, vedere Errori del motore di archiviazione estendibile e parametri di gestione degli errori.
Codice restituito |
Descrizione |
---|---|
JET_errSuccess |
Operazione riuscita. |
JET_errClientRequestToStopJetService |
Non è possibile completare l'operazione perché tutte le attività sull'istanza associata alla sessione sono cessate a seguito di una chiamata a JetStopService. |
JET_errInstanceUnavailable |
Non è possibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede la revoca dell'accesso a tutti i dati per proteggere l'integrità dei dati. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errNotInitialized |
Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata. |
JET_errRestoreInProgress |
Non è possibile completare l'operazione perché è in corso un'operazione di ripristino nell'istanza associata alla sessione. |
JET_errSessionSharingViolation |
La stessa sessione non può essere usata contemporaneamente per più thread. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errTermInProgress |
Non è possibile completare l'operazione perché l'istanza associata alla sessione viene arrestata. |
JET_wrnBufferTruncated |
L'operazione è stata completata correttamente, ma il buffer di output era troppo piccolo per ricevere l'intero nome dell'indice. Il buffer di output è stato riempito con la quantità di nome dell'indice corrispondente. Se il buffer di output ha una lunghezza di almeno un carattere, la stringa nel buffer di output verrà terminata null. Nota Questo errore non verrà restituito se cchIndexName è zero. Per altre informazioni, vedere la sezione Osservazioni. |
In caso di esito positivo, il nome dell'indice corrente del cursore specificato verrà restituito nel buffer di output. Se viene restituito JET_wrnBufferTruncated, il buffer di output conterrà la quantità di nome dell'indice corrispondente allo spazio specificato. Se il buffer di output ha una lunghezza di almeno un carattere, la stringa restituita in tale buffer verrà terminata null. Non verrà apportata alcuna modifica allo stato del database.
In caso di errore, lo stato del buffer di output non sarà definito. Non verrà apportata alcuna modifica allo stato del database.
Commenti
Se non è presente alcun indice corrente per il cursore, verrà restituita una stringa vuota. Ciò può verificarsi quando il cursore si trova nell'indice cluster della tabella e non è stato definito alcun indice primario. Questo indice è noto come indice sequenziale della tabella e non ha alcuna definizione. In ogni caso, l'impostazione dell'indice corrente su una stringa vuota tramite JetSetCurrentIndex selezionerà l'indice cluster indipendentemente dalla presenza di una definizione di indice primario.
In questa funzione è presente un bug importante in tutte le versioni. Se il buffer di output è troppo piccolo per ricevere l'intero nome dell'indice e il buffer di output è di almeno un carattere, JET_wrnBufferTruncated NON verrà restituito. JET_errSuccess verranno invece restituiti. Per evitare questo problema, il buffer di output deve essere sempre di almeno JET_cbNameMost + 1 (65) caratteri di lunghezza.
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. |
Unicode |
Implementato come JetGetCurrentIndexW (Unicode) e JetGetCurrentIndexA (ANSI). |
Vedere anche
JET_ERR
JET_SESID
JET_TABLEID
JetGetTableIndexInfo
JetSetCurrentIndex