CreateFile2, fonction (fileapi.h)

Crée ou ouvre un fichier ou un appareil d’E/S. Les appareils d’E/S les plus couramment utilisés sont les suivants : fichier, flux de fichiers, répertoire, disque physique, volume, mémoire tampon de la console, lecteur de bande, ressource de communications, mailslot et canal. La fonction retourne un handle qui peut être utilisé pour accéder au fichier ou à l’appareil pour différents types d’E/S en fonction du fichier ou de l’appareil et des indicateurs et attributs spécifiés.

Lorsqu’elle est appelée à partir d’une application du Windows Store, CreateFile2 est simplifiée. Vous pouvez ouvrir uniquement des fichiers ou des répertoires dans les répertoires ApplicationData.LocalFolder ou Package.InstalledLocation. Vous ne pouvez pas ouvrir de canaux nommés ou de mailslots ou créer des fichiers chiffrés (FILE_ATTRIBUTE_ENCRYPTED).

Remarque Nous faisons référence ici au dossier local de l’application et à l’emplacement installé du package, et non à des packages supplémentaires dans le graphe de package, comme les packages de ressources. CreateFile2 ne prend pas en charge l’ouverture de fichiers dans des packages supplémentaires dans le graphique de package. Par exemple, supposons qu’une application a une dépendance sur WinJS. L’application peut appeler createFile2 pour ouvrir un fichier dans son package, mais pas dans le package WinJS.
 
Pour effectuer cette opération en tant qu’opération transactionnelle, ce qui entraîne un handle qui peut être utilisé pour les E/S traitées, utilisez la fonction CreateFileTransacted.

Syntaxe

HANDLE CreateFile2(
  [in]           LPCWSTR                           lpFileName,
  [in]           DWORD                             dwDesiredAccess,
  [in]           DWORD                             dwShareMode,
  [in]           DWORD                             dwCreationDisposition,
  [in, optional] LPCREATEFILE2_EXTENDED_PARAMETERS pCreateExParams
);

Paramètres

[in] lpFileName

Nom du fichier ou de l’appareil à créer ou ouvrir.

Pour plus d’informations sur les noms d’appareils spéciaux, consultez Définition d’un nom d’appareil MS-DOS.

Pour créer un flux de fichiers, spécifiez le nom du fichier, un signe deux-points, puis le nom du flux. Pour plus d’informations, consultez flux de fichiers.

conseil à partir de Windows 10 version 1607, vous pouvez choisir de supprimer la limitation MAX_PATH sans précéder « \\ ?\ ». Pour plus d’informations, consultez la section « Limite maximale de longueur de chemin » de noms, fichiers, chemin s et espaces de noms.
 

[in] dwDesiredAccess

Accès demandé au fichier ou à l’appareil, qui peut être résumé sous forme de lecture, d’écriture, à la fois ou de zéro).

Les valeurs les plus couramment utilisées sont GENERIC_READ, GENERIC_WRITEou les deux (GENERIC_READ | GENERIC_WRITE). Pour plus d’informations, consultez des droits d’accès génériques, sécurité des fichiers et droits d’accès, constantes des droits d’accès aux fichierset ACCESS_MASK.

Si ce paramètre est égal à zéro, l’application peut interroger certaines métadonnées telles que des attributs de fichier, de répertoire ou d’appareil sans accéder à ce fichier ou appareil, même si GENERIC_READ'accès aurait été refusé.

Vous ne pouvez pas demander un mode d’accès qui est en conflit avec le mode de partage spécifié par le paramètre dwShareMode dans une demande ouverte qui a déjà un handle ouvert.

Pour plus d’informations, consultez la section Remarques de cette rubrique et Création et ouverture de fichiers.

[in] dwShareMode

Mode de partage demandé du fichier ou de l’appareil, qui peut être lu, écrit, à la fois, supprimer, tous ces éléments ou aucun (reportez-vous au tableau suivant). Les demandes d’accès aux attributs ou aux attributs étendus ne sont pas affectées par cet indicateur.

Si ce paramètre est égal à zéro et CreateFile2 réussit, le fichier ou l’appareil ne peut pas être partagé et ne peut pas être ouvert à nouveau tant que le handle n’est pas fermé sur le fichier ou l’appareil. Pour plus d’informations, consultez la section Remarques.

Vous ne pouvez pas demander un mode de partage qui est en conflit avec le mode d’accès spécifié dans une requête existante qui a un handle ouvert. createFile2 échouerait et la fonction GetLastError retournerait ERROR_SHARING_VIOLATION.

Pour permettre à un processus de partager un fichier ou un appareil pendant qu’un autre processus a ouvert le fichier ou l’appareil, utilisez une combinaison compatible d’une ou plusieurs des valeurs suivantes. Pour plus d’informations sur les combinaisons valides de ce paramètre avec le paramètre dwDesiredAccess , consultez Création et ouverture de fichiers.

Remarque Les options de partage pour chaque handle ouvert restent en vigueur jusqu’à ce que ce handle soit fermé, quel que soit le contexte du processus.
 
Valeur Signification
0
0x00000000
Empêche d’autres processus d’ouvrir un fichier ou un appareil s’ils demandent l’accès en suppression, en lecture ou en écriture. L’accès exclusif à un fichier ou à un répertoire est accordé uniquement si l’application a accès en écriture au fichier.
FILE_SHARE_DELETE
0x00000004
Active les opérations d’ouverture suivantes sur un fichier ou un appareil pour demander l’accès à la suppression.

Sinon, d’autres processus ne peuvent pas ouvrir le fichier ou l’appareil s’ils demandent l’accès à la suppression.

Si cet indicateur n’est pas spécifié, mais que le fichier ou l’appareil a été ouvert pour supprimer l’accès, la fonction échoue.

Remarque Supprimer l’accès autorise les opérations de suppression et de renommage.
 
FILE_SHARE_READ
0x00000001
Active les opérations d’ouverture suivantes sur un fichier ou un appareil pour demander l’accès en lecture.

Sinon, d’autres processus ne peuvent pas ouvrir le fichier ou l’appareil s’ils demandent l’accès en lecture.

Si cet indicateur n’est pas spécifié, mais que le fichier ou l’appareil a été ouvert pour l’accès en lecture, la fonction échoue.

Si un fichier ou un répertoire est ouvert et que cet indicateur n’est pas spécifié, et que l’appelant n’a pas accès en écriture au fichier ou au répertoire, la fonction échoue.

FILE_SHARE_WRITE
0x00000002
Active les opérations d’ouverture suivantes sur un fichier ou un appareil pour demander l’accès en écriture.

Sinon, d’autres processus ne peuvent pas ouvrir le fichier ou l’appareil s’ils demandent l’accès en écriture.

Si cet indicateur n’est pas spécifié, mais que le fichier ou l’appareil a été ouvert pour l’accès en écriture ou a un mappage de fichiers avec accès en écriture, la fonction échoue.

[in] dwCreationDisposition

Action à entreprendre sur un fichier ou un appareil qui existe ou n’existe pas.

Pour les appareils autres que les fichiers, ce paramètre est généralement défini sur OPEN_EXISTING.

Pour plus d’informations, consultez la section Remarques.

Ce paramètre doit être l’une des valeurs suivantes, qui ne peuvent pas être combinées :

Valeur Signification
CREATE_ALWAYS
2
Crée un fichier, toujours.

Si le fichier spécifié existe et est accessible en écriture, la fonction tronque le fichier, la fonction réussit et le code de dernière erreur est défini sur ERROR_ALREADY_EXISTS (183).

Si le fichier spécifié n’existe pas et qu’il s’agit d’un chemin d’accès valide, un nouveau fichier est créé, la fonction réussit et le code de dernière erreur est défini sur zéro.

Pour plus d’informations, consultez la section Remarques de cette rubrique.

CREATE_NEW
1
Crée un fichier, uniquement s’il n’existe pas déjà.

Si le fichier spécifié existe, la fonction échoue et le code de dernière erreur est défini sur ERROR_FILE_EXISTS (80).

Si le fichier spécifié n’existe pas et qu’il s’agit d’un chemin d’accès valide à un emplacement accessible en écriture, un nouveau fichier est créé.

OPEN_ALWAYS
4
Ouvre un fichier, toujours.

Si le fichier spécifié existe, la fonction réussit et le code de dernière erreur est défini sur ERROR_ALREADY_EXISTS (183).

Si le fichier spécifié n’existe pas et qu’il s’agit d’un chemin d’accès valide à un emplacement accessible en écriture, la fonction crée un fichier et le code de dernière erreur est défini sur zéro.

OPEN_EXISTING
3
Ouvre un fichier ou un appareil, uniquement s’il existe.

Si le fichier ou l’appareil spécifié n’existe pas, la fonction échoue et le code de dernière erreur est défini sur ERROR_FILE_NOT_FOUND (2).

Pour plus d’informations sur les appareils, consultez la section Remarques.

TRUNCATE_EXISTING
5
Ouvre un fichier et la tronque afin que sa taille soit égale à zéro octet, uniquement s’il existe.

Si le fichier spécifié n’existe pas, la fonction échoue et le code de dernière erreur est défini sur ERROR_FILE_NOT_FOUND (2).

Le processus appelant doit ouvrir le fichier avec le jeu de bits GENERIC_WRITE dans le cadre du paramètre dwDesiredAccess.

[in, optional] pCreateExParams

Pointeur vers une structure CREATEFILE2_EXTENDED_PARAMETERS facultative.

Valeur de retour

Si la fonction réussit, la valeur de retour est un handle ouvert pour le fichier, l’appareil, le canal nommé ou l’emplacement de messagerie spécifié.

Si la fonction échoue, la valeur de retour est INVALID_HANDLE_VALUE. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

Pour compiler une application qui utilise la fonction CreateFile2, définissez la macro _WIN32_WINNT en tant que 0x0602 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

CreateFile2 prend en charge l’interaction des fichiers et la plupart des autres types d’appareils et mécanismes d’E/S disponibles pour les développeurs Windows. Cette section tente de couvrir les problèmes variés que les développeurs peuvent rencontrer lors de l’utilisation de CreateFile2 dans différents contextes et avec différents types d’E/S. Le texte tente d’utiliser le mot fichier uniquement lorsque vous faites référence spécifiquement aux données stockées dans un fichier réel sur un système de fichiers. Toutefois, certaines utilisations de fichier peuvent faire référence plus généralement à un objet d’E/S qui prend en charge des mécanismes de type fichier. Cette utilisation libérale du terme fichier est particulièrement répandue dans les noms constants et les noms de paramètres en raison des raisons historiques mentionnées précédemment.

Lorsqu’une application est terminée à l’aide du handle d’objet retourné par CreateFile2, utilisez la fonction CloseHandle pour fermer le handle. Cela libère non seulement les ressources système, mais peut avoir une influence plus large sur les éléments tels que le partage du fichier ou de l’appareil et la validation des données sur le disque. Les détails sont notés dans cette rubrique selon les besoins.

Certains systèmes de fichiers, tels que le système de fichiers NTFS, prennent en charge la compression ou le chiffrement des fichiers et répertoires individuels. Sur les volumes qui ont un système de fichiers monté avec cette prise en charge, un nouveau fichier hérite des attributs de compression et de chiffrement de son répertoire.

Vous ne pouvez pas utiliser CreateFile2 pour contrôler la compression, la décompression ou le déchiffrement sur un fichier ou un répertoire. Pour plus d’informations, consultez Création et ouverture de fichiers, compression et décompression de fichierset chiffrement de fichiers.

Si le membre lpSecurityAttributes de la structure CREATEFILE2_EXTENDED_PARAMETERS passée dans le paramètre pCreateExParams est NULL, le handle retourné par CreateFile2 ne peut pas être hérité par les processus enfants que votre application peut créer. Les informations suivantes concernant ce membre s’appliquent également :

  • Si la variable membre bInheritHandle n’est pas FALSE, qui est n’importe quelle valeur différente de zéro, le handle peut être hérité. Par conséquent, il est essentiel que ce membre de structure soit correctement initialisé pour FALSE si vous n’avez pas l’intention que le handle soit hérité.
  • Les listes de contrôle d’accès (ACL) dans le descripteur de sécurité par défaut d’un fichier ou d’un répertoire sont héritées de son répertoire parent.
  • Le système de fichiers cible doit prendre en charge la sécurité sur les fichiers et les répertoires du membre lpSecurityDescriptor pour qu’il ait un effet sur eux, ce qui peut être déterminé à l’aide de GetVolumeInformation.
Dans Windows 8 et Windows Server 2012, cette fonction est prise en charge par les technologies suivantes.
Technologie Supporté
Protocole SMB (Server Message Block) 3.0 Oui
Basculement transparent SMB 3.0 (TFO) Non
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) Non
Cluster Shared Volume File System (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui
 

comportement de lien symbolique

Si l’appel à cette fonction crée un fichier, aucun changement de comportement n’est apporté. Tenez également compte des informations suivantes concernant FILE_FLAG_OPEN_REPARSE_POINT indicateur pour le membre dwFileFlags de la structure CREATEFILE2_EXTENDED_PARAMETERS passée dans le paramètre pCreateExParams :
  • Si FILE_FLAG_OPEN_REPARSE_POINT est spécifié :
    • Si un fichier existant est ouvert et qu’il s’agit d’un lien symbolique, le handle retourné est un handle vers le lien symbolique.
    • Si TRUNCATE_EXISTING ou FILE_FLAG_DELETE_ON_CLOSE sont spécifiés, le fichier affecté est un lien symbolique.
  • Si FILE_FLAG_OPEN_REPARSE_POINT n’est pas spécifié :
    • Si un fichier existant est ouvert et qu’il s’agit d’un lien symbolique, le handle retourné est un handle à la cible.
    • Si CREATE_ALWAYS, TRUNCATE_EXISTINGou FILE_FLAG_DELETE_ON_CLOSE sont spécifiés, le fichier affecté est la cible.

fichiers

Si vous renommez ou supprimez un fichier, puis restaurez-le peu après, le système recherche dans le cache les informations de fichier à restaurer. Les informations mises en cache incluent sa paire de noms courte/longue et son heure de création.

Si vous appelez createFile2 sur un fichier en attente de suppression suite à un appel précédent à DeleteFile, la fonction échoue. Le système d’exploitation retarde la suppression du fichier jusqu’à ce que tous les handles du fichier soient fermés. GetLastError retourne ERROR_ACCESS_DENIED.

Le paramètre dwDesiredAccess peut être égal à zéro, ce qui permet à l’application d’interroger les attributs de fichier sans accéder au fichier si l’application s’exécute avec des paramètres de sécurité adéquats. Cela est utile pour tester l’existence d’un fichier sans l’ouvrir pour l’accès en lecture et/ou en écriture, ou pour obtenir d’autres statistiques sur le fichier ou le répertoire. Consultez obtenir et définir des informations de fichier et GetFileInformationByHandle.

Lorsqu’une application crée un fichier sur un réseau, il est préférable d’utiliser GENERIC_READ | GENERIC_WRITE pour dwDesiredAccess que d’utiliser GENERIC_WRITE seul. Le code résultant est plus rapide, car le redirecteur peut utiliser le gestionnaire de cache et envoyer moins de PME avec plus de données. Cette combinaison évite également un problème où l’écriture dans un fichier sur un réseau peut parfois retourner ERROR_ACCESS_DENIED.

Pour plus d’informations, consultez Création et ouverture de fichiers.

flux de fichiers

Sur les systèmes de fichiers NTFS, vous pouvez utiliser createFile2 pour créer des flux distincts dans un fichier. Pour plus d’informations, consultez flux de fichiers.

répertoires

Une application ne peut pas créer un répertoire à l’aide de createFile2, par conséquent, seule la valeur OPEN_EXISTING est valide pour dwCreationDisposition pour ce cas d’usage. Pour créer un répertoire, l’application doit appeler CreateDirectory ou CreateDirectoryEx.

Pour ouvrir un répertoire à l’aide de CreateFile2, spécifiez l’indicateur de FILE_FLAG_BACKUP_SEMANTICS dans le cadre de dwFileFlags membre de la structure CREATEFILE2_EXTENDED_PARAMETERS passée dans le paramètre pCreateExParams . Les vérifications de sécurité appropriées s’appliquent quand cet indicateur est utilisé sans SE_BACKUP_NAME et SE_RESTORE_NAME privilèges.

Lorsque vous utilisez CreateFile2 pour ouvrir un répertoire lors de la défragmentation d’un volume de système de fichiers FAT ou FAT32, ne spécifiez pas le droit d’accès MAXIMUM_ALLOWED. L’accès au répertoire est refusé si c’est le cas. Spécifiez plutôt le droit d’accès GENERIC_READ.

Pour plus d’informations, consultez About Directory Management.

disques physiques et volumes

L’accès direct au disque ou à un volume est restreint.

Vous pouvez utiliser la fonction CreateFile2 pour ouvrir un lecteur de disque physique ou un volume, qui retourne un handle DASD (Direct Access Storage Device) qui peut être utilisé avec la fonction DeviceIoControl. Cela vous permet d’accéder directement au disque ou au volume, par exemple des métadonnées de disque comme la table de partition. Toutefois, ce type d’accès expose également le lecteur de disque ou le volume à une perte de données potentielle, car une écriture incorrecte sur un disque à l’aide de ce mécanisme peut rendre son contenu inaccessible au système d’exploitation. Pour garantir l’intégrité des données, veillez à vous familiariser avec DeviceIoControl et à la façon dont d’autres API se comportent différemment avec un handle d’accès direct par opposition à un handle de système de fichiers.

Les conditions suivantes doivent être remplies pour qu’un tel appel réussisse :

  • L’appelant doit disposer de privilèges d’administration. Pour plus d’informations, consultez Exécution avec des privilèges spéciaux.
  • Le paramètre dwCreationDisposition doit avoir l’indicateur OPEN_EXISTING.
  • Lors de l’ouverture d’un volume ou d’un disque floppy, le paramètre dwShareMode doit avoir l’indicateur FILE_SHARE_WRITE.
Remarque Le paramètre dwDesiredAccess peut être égal à zéro, ce qui permet à l’application d’interroger des attributs d’appareil sans accéder à un appareil. Cela est utile pour une application pour déterminer la taille d’un lecteur de disque de floppy et les formats pris en charge sans nécessiter de disque de floppy dans un lecteur, par exemple. Il peut également être utilisé pour lire des statistiques sans nécessiter d’autorisation de lecture/écriture de données de niveau supérieur.
 
Lors de l’ouverture d’un lecteur physique x:, la chaîne
lpFileName doit être la forme suivante : « \\.\PhysicalDriveX». Les numéros de disque dur commencent à zéro. Le tableau suivant présente quelques exemples de chaînes de lecteur physiques.
Corde Signification
« \\.\PhysicalDrive0 » Ouvre le premier lecteur physique.
« \\.\PhysicalDrive2 » Ouvre le troisième lecteur physique.
 

Pour obtenir l’identificateur de lecteur physique d’un volume, ouvrez un handle sur le volume et appelez la fonction DeviceIoControl avec IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS. Ce code de contrôle retourne le numéro de disque et le décalage pour chacune des étendues du volume ; un volume peut s’étendre sur plusieurs disques physiques.

Pour obtenir un exemple d’ouverture d’un lecteur physique, consultez Appel de DeviceIoControl.

Lors de l’ouverture d’un volume ou d’un lecteur multimédia amovible (par exemple, un lecteur de disque floppy ou un lecteur de mémoire flash), la chaîne lpFileName doit être la forme suivante : « \\.\X: ». N’utilisez pas de barre oblique inverse de fin (\), qui indique le répertoire racine d’un lecteur. Le tableau suivant présente quelques exemples de chaînes de lecteur.

Corde Signification
« \\.\A : » Ouvre le lecteur de disque de floppy A.
« \\.\C : » Ouvre le volume C : .
« \\.\C :\ » Ouvre le système de fichiers du volume C : .
 

Vous pouvez également ouvrir un volume en faisant référence à son nom de volume. Pour plus d’informations, consultez Nommage d’un volume.

Un volume contient un ou plusieurs systèmes de fichiers montés. Les handles de volume peuvent être ouverts comme non mis en cache à la discrétion du système de fichiers particulier, même lorsque l’option non mise en cache n’est pas spécifiée dans CreateFile2. Vous devez supposer que tous les systèmes de fichiers Microsoft ouvrent des handles de volume comme non mis en cache. Les restrictions sur les E/S non mises en cache pour les fichiers s’appliquent également aux volumes.

Un système de fichiers peut ou non nécessiter l’alignement de la mémoire tampon même si les données ne sont pas mises en cache. Toutefois, si l’option non mise en cache est spécifiée lors de l’ouverture d’un volume, l’alignement de la mémoire tampon est appliqué indépendamment du système de fichiers sur le volume. Il est recommandé sur tous les systèmes de fichiers que vous ouvrez des handles de volume comme non mis en cache et de suivre les restrictions d’E/S non mises en cache.

Remarque Pour lire ou écrire dans les derniers secteurs du volume, vous devez appeler DeviceIoControl et spécifier FSCTL_ALLOW_EXTENDED_DASD_IO. Cela signale au pilote du système de fichiers de ne pas effectuer de vérifications de limites d’E/S sur les appels de lecture ou d’écriture de partition. Au lieu de cela, les vérifications des limites sont effectuées par le pilote de périphérique.
 

Changer d’appareil

Les codes de contrôle IOCTL_CHANGER_* pour DeviceIoControl accepter un handle sur un appareil de changement. Pour ouvrir un appareil de changement, utilisez un nom de fichier du formulaire suivant : « \\.\Changerx» où x est un nombre qui indique l’appareil à ouvrir, en commençant par zéro. Pour ouvrir l’appareil de changement zéro dans une application écrite en C ou C++, utilisez le nom de fichier suivant : « \\\\.\\Changer0 ».

lecteurs de bande

Vous pouvez ouvrir des lecteurs de bande à l’aide d’un nom de fichier de la forme suivante : « \\.\TAPEx» où x est un nombre qui indique le lecteur à ouvrir, en commençant par le lecteur de bande zéro. Pour ouvrir le lecteur de bande zéro dans une application écrite en C ou C++, utilisez le nom de fichier suivant : « \\\\.\\\TAPE0 ».

Pour plus d’informations, consultez de sauvegarde .

ressources de communication

La fonction CreateFile2 peut créer un handle vers une ressource de communication, telle que le port série COM1. Pour les ressources de communication, le paramètre dwCreationDisposition doit être OPEN_EXISTING, le paramètre dwShareMode doit être zéro (accès exclusif) et le paramètre hTemplateFile doit être NULL. L’accès en lecture, écriture ou lecture/écriture peut être spécifié et le handle peut être ouvert pour les E/S superposées.

Pour spécifier un numéro de port COM supérieur à 9, utilisez la syntaxe suivante : « \.\COM10 ». Cette syntaxe fonctionne pour tous les numéros de port et matériels qui permettent aux numéros de port COM d’être spécifiés.

Pour plus d’informations sur les communications, consultez Communications.

consoles

La fonction CreateFile2 peut créer un handle pour l’entrée de console (CONIN$). Si le processus a un handle ouvert à celui-ci en raison de l’héritage ou de la duplication, il peut également créer un handle dans la mémoire tampon d’écran active (CONOUT$). Le processus appelant doit être attaché à une console héritée ou à une console allouée par la fonction AllocConsole . Pour les handles de console, définissez les paramètres CreateFile2 comme suit.
Paramètres Valeur
lpFileName Utilisez la valeur CONIN$ pour spécifier l’entrée de console.

Utilisez la valeur CONOUT$ pour spécifier la sortie de la console.

CONIN$ obtient un handle vers la mémoire tampon d’entrée de la console, même si la fonction SetStdHandle redirige le handle d’entrée standard. Pour obtenir le handle d’entrée standard, utilisez la fonction GetStdHandle.

CONOUT$ obtient un handle vers la mémoire tampon d’écran active, même si SetStdHandle redirige le handle de sortie standard. Pour obtenir le handle de sortie standard, utilisez GetStdHandle.

dwDesiredAccess GENERIC_READ | GENERIC_WRITE est préférable, mais l’une ou l’autre peut limiter l’accès.
dwShareMode Lors de l’ouverture de CONIN$, spécifiez FILE_SHARE_READ. Lors de l’ouverture de CONOUT$, spécifiez FILE_SHARE_WRITE.

Si le processus appelant hérite de la console ou si un processus enfant doit être en mesure d’accéder à la console, ce paramètre doit être FILE_SHARE_READ | FILE_SHARE_WRITE.

dwCreationDisposition Vous devez spécifier OPEN_EXISTING lors de l’utilisation de createFile2 pour ouvrir la console.
 

Définissez les membres de la structure CREATEFILE2_EXTENDED_PARAMETERS passée dans le paramètre pCreateExParams comme suit.

Membres Valeur
lpSecurityAttributes Si vous souhaitez que la console soit héritée, le membre bInheritHandle de la structure SECURITY_ATTRIBUTES doit être TRUE.
dwFileAttributes

dwFileFlags

dwSecurityQosFlags

hTemplateFile

Ignoré.
 

Le tableau suivant présente différents paramètres de dwDesiredAccess et lpFileName.

lpFileName dwDesiredAccess Résultat
« CON » GENERIC_READ Ouvre la console pour l’entrée.
« CON » GENERIC_WRITE Ouvre la console pour la sortie.
« CON » GENERIC_READ | GENERIC_WRITE Provoque l’échec de CreateFile2 ; GetLastError retourne ERROR_FILE_NOT_FOUND.
 

Mailslots

Si CreateFile2 ouvre la fin du client d’un maillot, la fonction retourne INVALID_HANDLE_VALUE si le client maillot tente d’ouvrir un maillot local avant que le serveur maillot ne l’ait créé avec la fonction CreateMailSlot.

Pour plus d’informations, consultez Mailslots.

canaux

Si CreateFile2 ouvre la fin du client d’un canal nommé, la fonction utilise n’importe quelle instance du canal nommé qui est dans l’état d’écoute. Le processus d’ouverture peut dupliquer le handle autant de fois que nécessaire, mais après son ouverture, l’instance de canal nommé ne peut pas être ouverte par un autre client. L’accès spécifié lorsqu’un canal est ouvert doit être compatible avec l’accès spécifié dans le paramètre dwOpenMode de la fonction CreateNamedPipe
.

Si la fonction CreateNamedPipe n’a pas été correctement appelée sur le serveur avant cette opération, un canal n’existe pas et CreateFile2 échoue avec ERROR_FILE_NOT_FOUND.

S’il existe au moins une instance de canal actif, mais qu’il n’existe pas de canaux d’écouteur disponibles sur le serveur, ce qui signifie que toutes les instances de canal sont actuellement connectées, CreateFile2 échoue avec ERROR_PIPE_BUSY.

Pour plus d’informations, consultez Pipes.

Exigences

Exigence Valeur
client minimum pris en charge Windows 8 [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows Server 2012 [applications de bureau | Applications UWP]
plateforme cible Windows
d’en-tête fileapi.h (include Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

à propos des de gestion des annuaires

À propos de la gestion des volumes

de sauvegarde

closeHandle

Communications

CreateDirectory

CreateDirectoryEx

CreateFile

CreateFileTransacted

CreateMailSlot

CreateNamedPipe

création, suppression et maintenance de fichiers

DeleteFile

de contrôle d’entrée et de sortie de l’appareil (IOCTL)

DeviceIoControl

compression et décompression de fichiers

de chiffrement de fichiers

fonctions de gestion de fichiers

droits d’accès et de sécurité des fichiers

flux de fichiers

Functions

GetLastError

ports d’achèvement d’E/S

Concepts d’E/S

mailslots

obtenir et définir des informations de fichier

Rubriques de vue d’ensemble

pipes

readFile

readFileEx

en cours d’exécution avec des privilèges spéciaux

SetFileAttributes

writeFile

writeFileEx