Funzione JetOpenFile
Si applica a: Windows | Windows Server
Funzione JetOpenFile
La funzione JetOpenFile apre un database collegato, un file di patch del database o un file di log delle transazioni di un'istanza attiva per l'esecuzione di un backup fuzzy di streaming. I dati di questi file possono essere letti successivamente tramite l'handle restituito usando JetReadFile. L'handle restituito deve essere chiuso usando JetCloseFile. Un backup esterno dell'istanza deve essere stato avviato in precedenza usando JetBeginExternalBackup.
JET_ERR JET_API JetOpenFile(
__in const tchar* szFileName,
__out JET_HANDLE* phfFile,
__out unsigned long* pulFileSizeLow,
__out unsigned long* pulFileSizeHigh
);
Parametri
szFileName
Percorso relativo o assoluto di un database collegato, file di patch di database o file di log delle transazioni gestito dall'istanza che verrà letto per il backup.
phfFile
Buffer di output che riceve un handle per il file da leggere.
pulFileSizeLow
Buffer di output che riceve i 32 bit meno significativi delle dimensioni del file.
pulFileSizeHigh
Buffer di output che riceve i 32 bit più significativi delle dimensioni del file.
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_errBackupAbortByServer |
L'operazione non è riuscita perché il backup esterno corrente è stato interrotto da una chiamata a JetStopBackup. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errClientRequestToStopJetService |
Non è possibile completare l'operazione perché tutte le attività nell'istanza associata alla sessione non sono state interrotte in seguito a una chiamata a JetStopService. |
JET_errFileAccessDenied |
L'operazione non è riuscita perché non è stato possibile aprire il file richiesto a causa di una violazione della condivisione o di privilegi insufficienti. |
JET_errFileNotFound |
L'operazione non è riuscita perché non è stato possibile aprire il file richiesto perché non è stato possibile trovare nel percorso specificato. Questo errore verrà restituito solo da Windows 2000. |
JET_errInstanceUnavailable |
Non è possibile 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. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errInvalidBackupSequence |
L'operazione di backup non è riuscita perché è stata chiamata fuori sequenza. |
JET_errInvalidParameter |
Uno dei parametri forniti contiene un valore imprevisto o contiene un valore che non ha senso quando si combina con il valore di un altro parametro. Questo può verificarsi per JetOpenFile quando:
|
JET_errInvalidPath |
L'operazione non è riuscita perché non è stato possibile trovare il percorso specificato. |
JET_errMissingFileToBackup |
Impossibile aprire il file richiesto per il backup perché non è stato trovato. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errNoBackup |
L'operazione non è riuscita perché non è in corso alcun backup esterno. |
JET_errNotInitialized |
Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata. |
JET_errOutOfMemory |
L'operazione non è riuscita perché non è possibile allocare memoria sufficiente per completarla. JetOpenFile restituirà JET_errOutOfMemory se viene eseguito un tentativo di aprire un altro file prima dell'apertura del file precedente usando JetOpenFile è stato chiuso da JetCloseFile. Attualmente è supportato un solo handle di file in sospeso. |
JET_errRunningInMultiInstanceMode |
L'operazione non è riuscita perché è stato effettuato un tentativo di usare il motore in modalità legacy (modalità di compatibilità di Windows 2000) in cui è supportata solo un'istanza quando esistono già più istanze. |
JET_errTermInProgress |
Non è possibile completare l'operazione perché l'istanza associata alla sessione viene arrestata. JET_errRestoreInProgress Non è possibile completare l'operazione perché un'operazione di ripristino è in corso nell'istanza associata alla sessione. |
In caso di esito positivo, verrà restituito un handle al file richiesto. Se l'handle è per un file di database, tale file di database verrà preparato per il backup di streaming che potrebbe causare la creazione di un file di patch di database nella stessa posizione del file di database. Il file di patch del database ha lo stesso percorso e il nome file del file di database, ma ha un oggetto . Estensione PAT. Verrà restituita anche la dimensione del file.
In caso di errore, lo stato dei buffer di output non verrà definito. Un file di patch di database può essere creato temporaneamente sul disco e qualsiasi file esistente nel percorso del file di patch può essere eliminato. L'errore comporterà l'annullamento dell'intero processo di backup per l'istanza. In Windows XP e versioni successive il backup non verrà annullato se viene eseguito un tentativo di backup di un database non collegato all'istanza al momento della chiamata.
Avviso Per motivi di sicurezza, è importante notare che JetOpenFile non verifica che il percorso del file richiesto sia associato al set di file che devono essere sottoposti a backup per l'istanza. Di conseguenza, è possibile usare questa funzione per accedere a qualsiasi file che può essere aperto dal contesto di sicurezza corrente del thread. È imperativo che l'applicazione limita i percorsi passati a questa funzione a un set noto di percorsi di file validi o a una divulgazione di attacchi informativi può essere reso possibile.
Commenti
I buffer di output delle dimensioni del file e dell'handle devono essere presenti. Se non sono presenti, il motore si arresterà in modo anomalo perché i parametri del buffer di output non vengono convalidati.
In questo momento, è possibile aprire un solo file per il backup in qualsiasi momento.
JetOpenFile non afferma il privilegio di backup prima di aprire il file richiesto.
Le dimensioni del file da leggere come segnalato da questa funzione potrebbero non corrispondere alle dimensioni del file su disco. In Windows XP e versioni successive è possibile aggiungere informazioni aggiuntive a un file di database usato dal motore di database durante un'operazione di ripristino. Di conseguenza, l'applicazione deve basarsi solo sulle dimensioni del file restituite da JetOpenFile o sul numero effettivo di byte di dati restituiti da JetReadFile.
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 JetOpenFileW (Unicode) e JetOpenFileA (ANSI). |
Vedere anche
JET_ERR
JET_HANDLE
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackup
JetCloseFile
JetGetAttachInfo
JetGetLogInfo
JetReadFile
JetStopBackup
JetStopService
JetTruncateLog