OpenFile, fonction (winbase.h)

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

Note Cette fonction a des fonctionnalités limitées et n’est pas recommandée. Pour le développement d’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 comporter des 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 avec une longueur de chemin d’accès supérieure à 128 caractères. La fonction CreateFile n’a pas cette limitation de longueur de chemin d’accès.

[in] uStyle

Action à entreprendre.

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

Valeur Signification
OF_CANCEL
0x00000800
Ignoré.

Pour produire 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’il contient des boutons Réessayer et Annuler . Le bouton Annuler dirige OpenFile pour retourner un message d’erreur introuvable dans un fichier.

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 à l’aide d’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.

D’autres efforts pour ouvrir 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 tout 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 l’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 l’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 en tout 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 identiques à celles qui ont été ouvertes précédemment.

Cela est utile en tant que vérification 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 handle 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.

Notes

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 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 est recherchée.

  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 dirige le système pour 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 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 le répertoire distant n’a pas été ouvert avec FILE_SHARE_DELETE accès au partage. 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 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 SMB (Server Message Block) 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
Cluster Shared Volume File System (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

CsvFs effectue des 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 (include Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateFile

Fonctions de gestion de fichiers

GetSystemDirectory

GetWindowsDirectory

OFSTRUCT

SearchPath