IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Question CreateFile IRP


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut Question CreateFile IRP
    Bonjour, j'ai une question concernant le fonctionnement de CreateFile au niveau noyau...

    Concernant le cas simple CreateFile("truc.txt", [...]), un handle est récupéré sur le device concernant le volme disk, mais concernant le fichier "truc.txt", comment le fichier gère-t-il cela ? Est-ce que comme le device il récupère un Handle sur un FILE_OBJECT ??

    J'aimerais avoir quelques explications..

    Merci !

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Le pilote du système de fichiers de Windows est chargé par l'OS Loader (NTLDR sous Windows NT) c'est-à-dire juste après que le PC ait démarré. C'est lui qui donne les noms aux volumes, fichiers, répertoires, etc. Pour un tel driver, un fichier est un périphérique (dans le monde des applications, lorsqu'on a affaire à une E/S, on dit "tout est fichier" tandis que dans le monde des drivers on dit plutôt "tout est périphérique" ...) bref, un device. Lorsque tu appelles CreateFile en spécifiant le nom d'un device, une requête CREATE est envoyée au pilote qui a nommé l'objet, avec les paramètres passés à CreateFile. Au driver ensuite de compléter la requête. C'est le même principe pour n'importe quel type de driver.

    Concernant le cas simple CreateFile("truc.txt", [...]), un handle est récupéré sur le device concernant le volme disk
    Tu voulais dire "\\\\.\\x:" j'espère. Mais bof, ce sont tous des requêtes déstinées au même pilote.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Melem Voir le message
    Lorsque tu appelles CreateFile en spécifiant le nom d'un device, une requête CREATE est envoyée au pilote qui a nommé l'objet, avec les paramètres passés à CreateFile.
    [...]
    Tu voulais dire "\\\\.\\x:" j'espère. Mais bof, ce sont tous des requêtes déstinées au même pilote.
    Justement, lors que l'on demande l'ouverture d'un handle sur un fichier par ex. "\\\\.\\x:\truc.txt", concrétement CreateFile récupère quel(s) handle(s) ? Un handle sur le device \\\\.\\x:, ou/et un sur le fichier truc.txt ?
    En fait j'arrive pas à faire la distinction entre les deux entités (\\\\.\\x:, et le fichier truc.txt)...

    Merci

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Justement, lorsque l'on demande l'ouverture d'un handle sur un fichier par ex. "\\\\.\\x:\truc.txt", concrétement CreateFile récupère quel(s) handle(s) ?
    Cette phrase est très mal. On demande l'ouverture d'un fichier. En retour on obtient un handle vers ce fichier (si l'opération a réussi bien sûr). Ce handle est géré par Windows et sert uniquement à identifier un device depuis un programme utilisateur. Le pilote n'a pas à avoir connaissance de ce handle. Un handle encapsule un DEVICE_OBJECT, une stucture représentant un device auquel le pilote a accès.

    En fait j'arrive pas à faire la distinction entre les deux entités (\\\\.\\x:, et le fichier truc.txt) ...
    Je conclus donc que tu n'as pas lu la doc de CreateFile dans MSDN . \\x:\ ("\\\\x:\\" en C à cause du coup du \) passé à CreateFile permet de récupérer le handle du lecteur dont la lettre associée est x. Avec un tel handle, tu peux démonter un volume, formater une piste, lire un secteur, écrire sur un secteur, obtenir la géométrie du disque, éjecter le lecteur, etc. x:\truc.txt ("x:\\truct.txt") passée à cette fonction permet de récupérer un handle vers un fichier sur disque (le fichier truct.txt situé à la racine du lecteur x). Avec un tel handle tu peux lire ou écrire dans le fichier. On peut aussi ouvrir un fichier avec truct.txt (sans chemin) par exemple et dans ce cas la fonction va chercher le fichier portant ce nom dans le répertoire courant.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 125
    Points : 41
    Points
    41
    Par défaut
    Ok, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Divers questions
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 06/08/2002, 21h57
  2. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11
  3. CreateFile
    Par PEM dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/07/2002, 15h33
  4. Question de faisabilité
    Par lisarasu dans le forum CORBA
    Réponses: 3
    Dernier message: 14/05/2002, 11h26
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo