Share via


OpenFile, fonction (winbase.h)

Crée, ouvre, rouvre ou supprime un fichier.

Note Cette fonction a des fonctionnalités limitées et n’est pas recommandée. Pour le développement de nouvelles applications, utilisez la fonction CreateFile .
 

Syntaxe

HFILE OpenFile(
  [in]  LPCSTR     lpFileName,
  [out] LPOFSTRUCT lpReOpenBuff,
  [in]  UINT       uStyle
);

Paramètres

[in] lpFileName

Nom du fichier.

La chaîne doit se composer de caractères du jeu de caractères Windows 8 bits. La fonction OpenFile ne prend pas en charge les noms de fichiers Unicode ni l’ouverture de canaux nommés.

[out] lpReOpenBuff

Pointeur vers la structure OFSTRUCT qui reçoit des informations sur un fichier lors de sa première ouverture.

La structure peut être utilisée dans les appels suivants à la fonction OpenFile pour afficher un fichier ouvert.

La structure OFSTRUCT contient un membre de chaîne de chemin d’accès dont la longueur est limitée à OFS_MAXPATHNAME caractères, soit 128 caractères. Pour cette raison, vous ne pouvez pas utiliser la fonction OpenFile pour ouvrir un fichier dont la longueur de chemin dépasse 128 caractères. La fonction CreateFile n’a pas cette limite de longueur de chemin.

[in] uStyle

Action à entreprendre.

Ce paramètre peut prendre une ou plusieurs des valeurs suivantes.

Valeur Signification
OF_CANCEL
0x00000800
Ignoré.

Pour générer une boîte de dialogue contenant un bouton Annuler , utilisez OF_PROMPT.

OF_CREATE
0x00001000
Crée un nouveau fichier.

Si le fichier existe, il est tronqué à zéro (0).

OF_DELETE
0x00000200
Supprime un fichier.
OF_EXIST
0x00004000
Ouvre un fichier, puis le ferme.

Utilisez cette option pour tester l’existence d’un fichier.

OF_PARSE
0x00000100
Remplit la structure OFSTRUCT , mais ne fait rien d’autre.
OF_PROMPT
0x00002000
Affiche une boîte de dialogue si un fichier demandé n’existe pas.

Une boîte de dialogue informe un utilisateur que le système ne trouve pas de fichier et qu’elle contient les boutons Réessayer et Annuler . Le bouton Annuler indique à OpenFile de renvoyer un message d’erreur fichier introuvable.

OF_READ
0x00000000
Ouvre un fichier pour l'accès en lecture uniquement.
OF_READWRITE
0x00000002
ouvre un fichier avec des autorisations de lecture et d'écriture.
OF_REOPEN
0x00008000
Ouvre un fichier en utilisant des informations dans la mémoire tampon de réouverture.
OF_SHARE_COMPAT
0x00000000
Pour les systèmes de fichiers basés sur MS-DOS, ouvre un fichier en mode de compatibilité, permet à n’importe quel processus sur un ordinateur spécifié d’ouvrir le fichier un nombre quelconque de fois.

Les autres efforts d’ouverture d’un fichier avec d’autres modes de partage échouent. Cet indicateur est mappé aux indicateurs FILE_SHARE_READ|FILE_SHARE_WRITE de la fonction CreateFile .

OF_SHARE_DENY_NONE
0x00000040
Ouvre un fichier sans refuser l’accès en lecture ou en écriture à d’autres processus.

Sur les systèmes de fichiers MS-DOS, si le fichier a été ouvert en mode de compatibilité par un autre processus, la fonction échoue.

Cet indicateur est mappé aux indicateurs FILE_SHARE_READ|FILE_SHARE_WRITE de la fonction CreateFile .

OF_SHARE_DENY_READ
0x00000030
Ouvre un fichier et refuse l’accès en lecture à d’autres processus.

Sur les systèmes de fichiers MS-DOS, si le fichier a été ouvert en mode de compatibilité ou pour un accès en lecture par tout autre processus, la fonction échoue.

Cet indicateur est mappé à l’indicateur FILE_SHARE_WRITE de la fonction CreateFile .

OF_SHARE_DENY_WRITE
0x00000020
Ouvre un fichier et refuse l’accès en écriture à d’autres processus.

Sur les systèmes de fichiers MS-DOS, si un fichier a été ouvert en mode de compatibilité, ou pour un accès en écriture par tout autre processus, la fonction échoue.

Cet indicateur est mappé à l’indicateur FILE_SHARE_READ de la fonction CreateFile .

OF_SHARE_EXCLUSIVE
0x00000010
Ouvre un fichier en mode exclusif et refuse l’accès en lecture/écriture à d’autres processus. Si un fichier a été ouvert dans un autre mode pour l’accès en lecture/écriture, même par le processus actuel, la fonction échoue.
OF_VERIFY
Vérifie que la date et l’heure d’un fichier sont les mêmes que lorsqu’il a été ouvert précédemment.

Cela est utile en tant que case activée supplémentaire pour les fichiers en lecture seule.

OF_WRITE
0x00000001
ouvre un fichier uniquement pour un accès en écriture.

Valeur retournée

Si la fonction réussit, la valeur de retour spécifie un descripteur de fichier à utiliser lors de l’exécution d’E/S de fichier. Pour fermer le fichier, appelez la fonction CloseHandle à l’aide de ce handle.

Si la fonction échoue, la valeur de retour est HFILE_ERROR. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

Si le paramètre lpFileName spécifie un nom de fichier et une extension uniquement, cette fonction recherche un fichier correspondant dans les répertoires suivants et dans l’ordre indiqué :

  1. Répertoire dans lequel une application est chargée.
  2. Le répertoire actif.
  3. Répertoire système Windows.

    Utilisez la fonction GetSystemDirectory pour obtenir le chemin d’accès de ce répertoire.

  4. Répertoire système Windows 16 bits.

    Il n’existe pas de fonction qui récupère le chemin d’accès de ce répertoire, mais elle fait l’objet d’une recherche.

  5. Répertoire Windows.

    Utilisez la fonction GetWindowsDirectory pour obtenir le chemin d’accès de ce répertoire.

  6. Répertoires répertoriés dans la variable d’environnement PATH.
Le paramètre lpFileName ne peut pas contenir de caractères génériques.

La fonction OpenFile ne prend pas en charge l’indicateur OF_SEARCH pris en charge par la fonction Windows OpenFile 16 bits. L’indicateur OF_SEARCH indique au système de rechercher un fichier correspondant, même lorsqu’un nom de fichier inclut un chemin d’accès complet. Utilisez la fonction SearchPath pour rechercher un fichier.

Une violation de partage se produit si une tentative d’ouverture d’un fichier ou d’un répertoire est effectuée pour suppression sur un ordinateur distant lorsque la valeur du paramètre uStyle est l’indicateur d’accès OF_DELETE OR’ed avec tout autre indicateur d’accès, et que le fichier ou répertoire distant n’a pas été ouvert avec FILE_SHARE_DELETE partage d’accès . Pour éviter la violation de partage dans ce scénario, ouvrez le fichier ou le répertoire distant avec OF_DELETE accès uniquement, ou appelez DeleteFile sans ouvrir au préalable le fichier ou le répertoire pour suppression.

Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 Oui
Basculement transparent SMB 3.0 (TFO) Oui
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) Oui
Système de fichiers du volume partagé de cluster (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

CsvFs effectue les E/S redirigées pour les fichiers compressés.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateFile

Fonctions de gestion des fichiers

GetSystemDirectory

GetWindowsDirectory

OFSTRUCT

SearchPath