Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Windows | Windows Server
Fonction JetOpenFileInstance
La fonction JetOpenFileInstance ouvre une base de données jointe, un fichier de correctif de base de données ou un fichier journal des transactions d’un instance actif dans le but d’effectuer une sauvegarde approximative en streaming. Les données de ces fichiers peuvent ensuite être lues via le handle retourné à l’aide de JetReadFileInstance. Le handle retourné doit être fermé à l’aide de JetCloseFileInstance. Une sauvegarde externe du instance doit avoir été lancée précédemment à l’aide de JetBeginExternalBackupInstance.
Windows XP:JetOpenFileInstance est introduit dans Windows XP.
JET_ERR JET_API JetOpenFileInstance(
__in JET_INSTANCE instance,
__in JET_PCSTR szFileName,
__out JET_HANDLE* phfFile,
__out unsigned long* pulFileSizeLow,
__out unsigned long* pulFileSizeHigh
);
Paramètres
instance
Instance à utiliser pour cet appel.
Pour Windows 2000, la variante d’API qui accepte ce paramètre n’est pas disponible, car une seule instance est prise en charge. L’utilisation de cette instance globale est implicite dans ce cas.
Pour Windows XP et les versions ultérieures, la variante d’API qui n’accepte pas ce paramètre ne peut être appelée que lorsque le moteur est en mode hérité (mode de compatibilité Windows 2000) où une seule instance est prise en charge. Sinon, l’opération échoue avec JET_errRunningInMultiInstanceMode.
szFileName
Chemin d’accès relatif ou absolu à une base de données jointe, un fichier de correctif de base de données ou un fichier journal des transactions géré par le instance lu pour sauvegarde.
phfFile
Pointeur vers la mémoire tampon de sortie qui reçoit un handle pour le fichier à lire.
pulFileSizeLow
Pointeur vers la mémoire tampon de sortie qui reçoit les 32 bits les moins significatifs de la taille du fichier.
pulFileSizeHigh
Pointeur vers la mémoire tampon de sortie qui reçoit les 32 bits les plus significatifs de la taille du fichier.
Valeur renvoyée
Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour suivants. Pour plus d’informations sur les erreurs ESE possibles, consultez Erreurs du moteur de stockage extensible et Paramètres de gestion des erreurs.
Code de retour |
Description |
|---|---|
JET_errSuccess |
L’opération s’est terminée avec succès. |
JET_errBackupAbortByServer |
L’opération a échoué, car la sauvegarde externe actuelle a été abandonnée par un appel à JetStopBackupInstance. Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errClientRequestToStopJetService |
Il n’est pas possible d’effectuer l’opération, car toute activité sur le instance associée à la session a cessé à la suite d’un appel à JetStopServiceInstance. |
JET_errFileAccessDenied |
L’opération a échoué, car elle n’a pas pu ouvrir le fichier demandé en raison d’une violation de partage ou de privilèges insuffisants. |
JET_errFileNotFound |
L’opération a échoué, car elle n’a pas pu ouvrir le fichier demandé, car il est introuvable au chemin d’accès spécifié. Cette erreur ne sera retournée que par Windows 2000. |
JET_errInvalidBackupSequence |
L’opération de sauvegarde a échoué, car elle a été appelée hors séquence. |
JET_errInvalidPath |
L’opération a échoué, car le chemin d’accès spécifié est introuvable. |
JET_errInstanceUnavailable |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session a rencontré une erreur irrécupérable qui nécessite que l’accès à toutes les données soit révoqué pour protéger l’intégrité de ces données. Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errInvalidParameter |
L’un des paramètres fournis contenait une valeur inattendue ou contenait une valeur qui n’était pas pertinente lorsqu’elle était combinée avec la valeur d’un autre paramètre. Cela peut se produire pour JetOpenFileInstance dans les cas suivants :
|
JET_errMissingFileToBackup |
Impossible d’ouvrir le fichier demandé pour sauvegarde, car il est introuvable. Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errNoBackup |
L’opération a échoué, car aucune sauvegarde externe n’est en cours. |
JET_errNotInitialized |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session n’a pas encore été initialisé. |
JET_errOutOfMemory |
L’opération a échoué, car la mémoire n’a pas pu être allouée pour la terminer. JetOpenFileInstance retourne JET_errOutOfMemory si une tentative d’ouverture d’un autre fichier est effectuée avant que le fichier précédent ouvert à l’aide de JetOpenFileInstance ait été fermé par JetCloseFileInstance. Un seul handle de fichier en attente est actuellement pris en charge. |
JET_errRestoreInProgress |
Il n’est pas possible d’effectuer l’opération, car une opération de restauration est en cours sur le instance associé à la session. |
JET_errRunningInMultiInstanceMode |
L’opération a échoué car une tentative d’utilisation du moteur a été effectuée en mode hérité (mode de compatibilité Windows 2000) où une seule instance est prise en charge alors qu’il existe déjà plusieurs instances. |
JET_errTermInProgress |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session est en cours d’arrêt. |
En cas de réussite, un handle du fichier demandé est retourné. Si le handle est destiné à un fichier de base de données, ce fichier de base de données est préparé pour une sauvegarde de streaming qui peut entraîner la création d’un fichier correctif de base de données au même emplacement que le fichier de base de données. Le fichier correctif de base de données a exactement le même chemin et le même nom de fichier que le fichier de base de données, mais avec un . Extension PAT. La taille du fichier sera également retournée.
En cas d’échec, l’état des mémoires tampons de sortie n’est pas défini. Un fichier de correctif de base de données peut être créé temporairement sur le disque et tout fichier existant à l’emplacement du fichier de correctif peut être supprimé. L’échec entraîne l’annulation de l’ensemble du processus de sauvegarde pour le instance. Sur Windows XP et les versions ultérieures, la sauvegarde ne sera pas annulée si une tentative de sauvegarde d’une base de données qui n’était pas attachée au instance au moment de l’appel a été effectuée.
Avertissement Pour des raisons de sécurité, il est important de noter que JetOpenFileInstance ne vérifie pas que le chemin du fichier demandé est associé au jeu de fichiers sauvegardés pour le instance. Par conséquent, il est possible d’utiliser cette fonction pour accéder à n’importe quel fichier qui peut être ouvert par le contexte de sécurité actuel du thread. Il est impératif que l’application limite les chemins passés à cette fonction à un ensemble connu de chemins d’accès corrects ou qu’une attaque de divulgation d’informations puisse être rendue possible.
Notes
Les mémoires tampons de sortie de handle et de taille de fichier doivent être présentes. S’ils ne sont pas présents, le moteur se bloque, car les paramètres de mémoire tampon de sortie ne sont pas validés.
À ce stade, un seul fichier peut être ouvert pour sauvegarde à tout moment.
JetOpenFileInstance n’affirme pas le privilège de sauvegarde avant d’ouvrir le fichier demandé.
La taille du fichier à lire comme indiqué par cette fonction peut ne pas correspondre à la taille du fichier sur le disque. Sur Windows XP et versions ultérieures, des informations supplémentaires peuvent être ajoutées à un fichier de base de données utilisé par le moteur de base de données lors d’une opération de restauration. Par conséquent, l’application doit uniquement s’appuyer sur la taille de fichier retournée par JetOpenFileInstance ou sur le nombre réel d’octets de données retournés par JetReadFileInstance.
Spécifications
| Condition requise | Valeur |
|---|---|
Client |
Nécessite Windows Vista ou Windows XP. |
Serveur |
Nécessite Windows Server 2008 ou Windows Server 2003. |
En-tête |
Déclaré dans Esent.h. |
Bibliothèque |
Utilisez ESENT.lib. |
DLL |
Nécessite ESENT.dll. |
Unicode |
Implémenté en tant que JetOpenFileInstanceW (Unicode) et JetOpenFileInstanceA (ANSI). |
Voir aussi
JET_ERR
JET_HANDLE
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackupInstance
JetCloseFileInstance
JetGetAttachInfoInstance
JetGetLogInfoInstance
JetReadFileInstance
JetStopBackupInstance
JetTruncateLogInstance