Fonction ReOpenFile (winbase.h)
Rouvre l’objet système de fichiers spécifié avec des droits d’accès, un mode de partage et des drapeaux différents.
Syntaxe
HANDLE ReOpenFile(
[in] HANDLE hOriginalFile,
[in] DWORD dwDesiredAccess,
[in] DWORD dwShareMode,
[in] DWORD dwFlagsAndAttributes
);
Paramètres
[in] hOriginalFile
Handle de l’objet à rouvrir. L’objet doit avoir été créé par la fonction CreateFile .
[in] dwDesiredAccess
Accès requis à l’objet. Pour obtenir la liste des valeurs, consultez Sécurité des fichiers et droits d’accès. Vous ne pouvez pas demander un mode d’accès qui est en conflit avec le mode de partage spécifié dans une demande ouverte précédente dont le handle est toujours ouvert.
Si ce paramètre est égal à zéro (0), l’application peut interroger les attributs de l’appareil sans accéder à l’appareil. Cela est utile si une application souhaite déterminer la taille d’un lecteur de disquette et les formats qu’il prend en charge sans nécessiter de disquette dans le lecteur.
[in] dwShareMode
Mode de partage de l’objet. Vous ne pouvez pas demander un mode de partage qui est en conflit avec le mode d’accès spécifié dans une demande ouverte précédente dont le handle est toujours ouvert.
Si ce paramètre est égal à zéro (0) et que CreateFile réussit, l’objet ne peut pas être partagé et ne peut pas être rouvert tant que le handle n’est pas fermé.
Pour permettre à d’autres processus de partager l’objet pendant que votre processus est ouvert, utilisez une combinaison d’une ou plusieurs des valeurs suivantes pour spécifier le type d’accès qu’ils peuvent demander lorsqu’ils ouvrent l’objet. Ces options de partage restent en vigueur jusqu’à ce que vous fermiez le handle de l’objet.
[in] dwFlagsAndAttributes
Indicateurs de fichier. Ce paramètre peut prendre une ou plusieurs des valeurs suivantes.
Valeur | Signification |
---|---|
|
Indique que le fichier est ouvert ou créé pour une opération de sauvegarde ou de restauration. Le système garantit que le processus appelant remplace les vérifications de sécurité des fichiers, à condition qu’il dispose des privilèges SE_BACKUP_NAME et SE_RESTORE_NAME . Pour plus d’informations, consultez Modification des privilèges dans un jeton.
Vous pouvez également définir cet indicateur pour obtenir un handle dans un répertoire. Lorsqu’il est indiqué, un handle de répertoire peut être passé à certaines fonctions à la place d’un handle de fichier. |
|
Indique que le système d’exploitation doit supprimer le fichier immédiatement après la fermeture de tous ses descripteurs, non seulement le handle spécifié, mais également tout autre handle ouvert ou dupliqué.
Les demandes ouvertes suivantes pour le fichier échouent, sauf si FILE_SHARE_DELETE est utilisé. |
|
Indique au système d’ouvrir le fichier sans mise en mémoire tampon ou mise en cache intermédiaire. Lorsqu’il est combiné avec FILE_FLAG_OVERLAPPED, l’indicateur offre des performances asynchrones maximales, car les E/S ne reposent pas sur les opérations synchrones du gestionnaire de mémoire. Toutefois, certaines opérations d’E/S prennent plus de temps, car les données ne sont pas conservées dans le cache.
Une application doit répondre à des exigences spécifiques lors de l’utilisation de fichiers ouverts avec FILE_FLAG_NO_BUFFERING :
Une application peut déterminer une taille de secteur de volume en appelant la fonction GetDiskFreeSpace . |
|
Indique que les données de fichier sont demandées, mais qu’elles doivent continuer à résider dans le stockage distant. Il ne doit pas être retransporté vers le stockage local. Cet indicateur est destiné à être utilisé par les systèmes de stockage distants. |
|
Lorsque cet indicateur est utilisé, le traitement normal du point d’analyse ne se produit pas et ReOpenFile tente d’ouvrir le point d’analyse. Lorsqu’un fichier est ouvert, un handle de fichier est retourné, que le filtre qui contrôle le point d’analyse soit opérationnel ou non. Cet indicateur ne peut pas être utilisé avec l’indicateur CREATE_ALWAYS . Si le fichier n’est pas un point d’analyse, cet indicateur est ignoré. |
|
Indique au système d’initialiser l’objet, de sorte que les opérations qui prennent beaucoup de temps à traiter retournent ERROR_IO_PENDING. Une fois l’opération terminée, l’événement spécifié est défini sur l’état signalé.
Lorsque vous spécifiez FILE_FLAG_OVERLAPPED, les fonctions de lecture et d’écriture de fichier doivent spécifier une structure CHEVAUCHÉE . Autrement dit, lorsque FILE_FLAG_OVERLAPPED est spécifié, une application doit effectuer une lecture et une écriture qui se chevauchent. Lorsque FILE_FLAG_OVERLAPPED est spécifié, le système ne gère pas le pointeur de fichier. La position du fichier doit être passée dans le cadre du paramètre lpOverlapped (pointant vers une structure CHEVAUCHEMENT) aux fonctions de lecture et d’écriture de fichier. Cet indicateur permet également d’effectuer plusieurs opérations simultanément avec le handle (une opération de lecture et d’écriture simultanée, par exemple). |
|
Indique que le fichier doit être accessible conformément aux règles POSIX. Cela inclut l’autorisation de plusieurs fichiers avec des noms, ne différant que dans la casse, pour les systèmes de fichiers qui prennent en charge ce nommage. Faites attention lorsque vous utilisez cette option, car les fichiers créés avec cet indicateur peuvent ne pas être accessibles par les applications écrites pour MS-DOS ou Windows 16 bits. |
|
Indique que le fichier est accessible aléatoirement. Le système peut utiliser cette indication pour optimiser la mise en cache du fichier. |
|
Indique que le fichier doit être accessible de manière séquentielle du début à la fin. Le système peut utiliser cette indication pour optimiser la mise en cache du fichier. Si une application déplace le pointeur de fichier pour l’accès aléatoire, une mise en cache optimale peut ne pas se produire ; toutefois, une opération correcte est garantie.
La spécification de cet indicateur peut augmenter les performances des applications qui lisent des fichiers volumineux à l’aide d’un accès séquentiel. Les gains de performances peuvent être encore plus notables pour les applications qui lisent des fichiers volumineux principalement de manière séquentielle, mais qui ignorent parfois de petites plages d’octets. |
|
Indique au système d’écrire dans n’importe quel cache intermédiaire et d’accéder directement au disque. Le système peut toujours mettre en cache les opérations d’écriture, mais ne peut pas les vider paresseusement. |
Si le handle représente le côté client d’un canal nommé, le paramètre dwFlags peut également contenir des informations de qualité de service de sécurité. Pour plus d’informations, consultez Niveaux d’emprunt d’identité. Lorsque l’application appelante spécifie l’indicateur SECURITY_SQOS_PRESENT , le paramètre dwFlags peut contenir une ou plusieurs des valeurs suivantes.
Valeur retournée
Si la fonction réussit, la valeur de retour est un handle ouvert pour le fichier spécifié.
Si la fonction échoue, la valeur de retour est INVALID_HANDLE_VALUE. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Le paramètre dwFlags ne peut contenir aucun des indicateurs d’attribut de fichier (FILE_ATTRIBUTE_*). Ceux-ci ne peuvent être spécifiés que lorsque le fichier est créé.
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 |
Configuration requise
Client minimal pris en charge | Windows Vista [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 |