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 :

Débutant en développement de pilotes


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut Débutant en développement de pilotes
    Salut, je suis entrain de tâté le terrain des drivers avec WDK.

    J'ai prit la structure d'un présente dans le dossier general (compilation, instal nickel, j pense...) ! Suite à cela, j'aimerai pouvoir m'amuser sur la clé, par exemple: créer un fichier et l'éditer (mon peripherique est une clé usb).

    J'ai vu qu'il fallait utilisé la method CreateFile et ensuite faire des requetes....

    ET la, ben je suis perdu, je ne sais pas où intégrer la method etc

    Pourrai tu m'aider stp??

    J'ai deja cherché des tutoriaux mais j'ai rien trouvé de complet...


    MERCI MERCI 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
    Pour créer et éditer un fichier sur une clé usb, on n'a pas besoin de drivers. Que veux-tu faire ? Créer un fichier sur une clé usb (ce qui n'est pas différent de créer n'importe quel autre fichier d'ailleurs) ou apprendre à développer un driver.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Melem Voir le message
    Pour créer et éditer un fichier sur une clé usb, on n'a pas besoin de drivers. Que veux-tu faire ? Créer un fichier sur une clé usb (ce qui n'est pas différent de créer n'importe quel autre fichier d'ailleurs) ou apprendre à développer un driver.
    Apprendre à développer un driver.

    On m'a demandé de créer un fichier, dans la clé usb, dans le but de confirmer que mon driver fonctionne et communique bien avec la clé.

    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
    C'est vrai qu'il n'y a pas beaucoup de tutoriels à ce sujet, surtout en français. Il y en a sur CodeProject (ici) mais ça ne couvre généralement que les bases et c'est aussi en anglais. Pour approfondir, il n'y a pas d'autre doc que les fichiers d'aide qui viennent avec le DDK. En ce moment je ne l'ai pas donc je ne peux pas plus t'aider, mais je vais voir ce que je peux faire. A+.

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Melem Voir le message
    C'est vrai qu'il n'y a pas beaucoup de tutoriels à ce sujet, surtout en français. Il y en a sur CodeProject (ici) mais ça ne couvre généralement que les bases et c'est aussi en anglais. Pour approfondir, il n'y a pas d'autre doc que les fichiers d'aide qui viennent avec le DDK. En ce moment je ne l'ai pas donc je ne peux pas plus t'aider, mais je vais voir ce que je peux faire. A+.
    OK!
    Petite précision, je suis dans l'obligation de crée le driver en mode utilisateur ( pour éviter de bidouiller directement dans le noyau).
    J'ai trouvé 2 doc interessante:

    La première décrit l'architecture de UMDF:
    http://download.microsoft.com/downlo...6/wdf-arch.doc

    La seconde décrit comment écrire un driver pour clé usb:
    http://download.microsoft.com/downlo...4a/USB_WDF.doc

    Mais la j'ai un petit problème: Dans la 1ere, ils disent de créé objet de type FILE pour avoir accès au materiel ( createFile). Alors que dans la 2eme ils demandent de créer un USB target device object pour connecter le driver USB subsystem.

    JE sais pas si ça vous dit qqchose mais bon...

    MErci

    +++

  6. #6
    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
    Ce n'est pas un problème que tu développes en mode utilisateur. Pour CreateFile, et bien ce que l'on représente par ce qu'e lon appelle "Fichier" (File) dans une application est en fait est représenté par ce qu'on appelle "Périphérique" (Device) dans un driver. Le rôle du driver est justement de faire la correspondance entre objet "File" et objet "Device". En résumé le CreateFile c'est ce que tu dois faire dans ton application, pour "te connecter" au driver, et le CreateUsbTargetDevice, c'est ce que tu dois faire dans ton driver ...

    Je te propose également d'expérimenter un IOCTL simple et documenté (IOCTL_STORAGE_EJECT_MEDIA par exemple, qui commande l'ejection d'un disque) pour voir comment ça se passe du côté application (CreateFile, DeviceIoControl, etc.) avant de chercher à comprendre ce que le driver lui fait.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    SAlut,

    je viens de voir ton post!

    J'ai testé un exemple du wdk! Il fonctionne, il faut juste que je précise le bon pid et vid.

    Avec les doc j'ai pu comprendre à peu près la structure du driver.

    Maintenant, j'aimerai savoir si à partir de mon driver et comment pourrai-je créer un fichier dans ma clé usb? et plus tard, utiliser les librairie openssl????

    Merci

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Melem Voir le message
    Ce n'est pas un problème que tu développes en mode utilisateur. Pour CreateFile, et bien ce que l'on représente par ce qu'e lon appelle "Fichier" (File) dans une application est en fait est représenté par ce qu'on appelle "Périphérique" (Device) dans un driver. Le rôle du driver est justement de faire la correspondance entre objet "File" et objet "Device". En résumé le CreateFile c'est ce que tu dois faire dans ton application, pour "te connecter" au driver, et le CreateUsbTargetDevice, c'est ce que tu dois faire dans ton driver ...

    Je te propose également d'expérimenter un IOCTL simple et documenté (IOCTL_STORAGE_EJECT_MEDIA par exemple, qui commande l'ejection d'un disque) pour voir comment ça se passe du côté application (CreateFile, DeviceIoControl, etc.) avant de chercher à comprendre ce que le driver lui fait.
    J'ai voulu en faire qu'à ma tete, mais la je viens de voir que le IOCTL revient souvent, donc je vais me penché sur le sujet!

    Je viens de comprendre une autre chose que tu viens de me dire par rapport à mon application et mon driver: En toute honneteté, je ne faisé pas la diference entre les 2! Je pensais qu'il été confondu! mtn je c ke je doi avoir une application a coté! Et-elle comprise dans le meme projet (dossier) ?

    Merci

  9. #9
    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
    mtn je c ke je doi avoir une application a coté! Et-elle comprise dans le meme projet (dossier) ?
    Non, tu développes :

    - D'une part, l'application (avec ton environnement de développement usuel, Visual Studio ou autre ...).

    - D'autre part, le driver (avec le DDK).

    Ce sont donc deux projets vraiment différents.

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Melem Voir le message
    Non, tu développes :

    - D'une part, l'application (avec ton environnement de développement usuel, Visual Studio ou autre ...).

    - D'autre part, le driver (avec le DDK).

    Ce sont donc deux projets vraiment différents.
    Oui ok!

    J'ai testé le IOCTL avec mon cdrom! C'est un bon debut, je voit maintenant comment j'utiliserai le driver pour effectué mes requete!

    Je vais m'amuser à écrire dans un fichier ou plutot un "traceur" d'evenement en disant : La clé est installé, la clé est désinstallé!

    A bientot peut etre!

    Je te remercie pour ton aide, jvé mettre plus du mien mtn

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    je suis coincé au niveau de mes traceevents!

    J'aimerai lire le journal d'événements pour prouver que mon driver fonctionne!

    J'ai expérimenté traceview, avec le fichier PDB (debug information) ou avec le fichier CTL (control GUID), en vain!

    Ca ne veut pas fonctionné!

    Merci

  12. #12
    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
    Utilise plutôt la fonction DbgPrint qui est semblable à printf sauf qu'elle écrit sur la sortie de débogage plutôt que la sortie standard. Un logiciel tel que DebugView permet de voir les messages envoyés sur la sortie de débogage.

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    D'après ce que j'ai vu dbgprint n'est utilisable quant mode noyau.

    Je voulais savoir si les traceevents de la class device fonctionnent! Mais je ne me suis pas demandé si une instance de cette classe est créée! A defaut d'avoir un main, pourrai-tu me dire quelles instance son créée et pourquoi faire?

    Moi je veux juste vérifié que le driver capte lorsque la clé usb est branché et lorsqu'elle est éjecté.

  14. #14
    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
    Ah oui désolé j'oublie toujours ce détail, mais l'idée est la même. Utilise donc plutôt l'API OutputDebugString à la place (tu auras toujours besoin d'un debugger ou d'un logiciel du genre DebugView pour voir les messages ...).

  15. #15
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    j'en ai mit mais tjrs rien!

    je ne capte rien avec debugview...

  16. #16
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut driver umdf
    Salut,

    je reviens d'un autre projet!

    Avec l'exemple qu'il donne dans le WDK, est-ce qu'il contient seulement le driver?
    Car il y a énormément de classes.
    je pense pas mais bon.

    Merci! Je reviens sur ce sujet, j'ai pas trop le tps et je veux faire assez de chose!

  17. #17
    Débutant
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2004
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 452
    Points : 324
    Points
    324
    Par défaut
    Citation Envoyé par maanifiik Voir le message
    Salut,

    je reviens d'un autre projet!

    Avec l'exemple qu'il donne dans le WDK, est-ce qu'il contient seulement le driver?
    Car il y a énormément de classes.
    je pense pas mais bon.

    Merci! Je reviens sur ce sujet, j'ai pas trop le tps et je veux faire assez de chose!
    Bonjour maanifiik,
    Suite à ton message privée, je te répond ici pour en faire profiter au maximum,
    Je n'ai pas tres bien compris comment tu procède, mais pour vérifier que ton materiel a bien été reconnu,
    regarde dans regedit si tu dispose de ces clés:
    HKLM// System // CurrentControlSet // Enum // (PID-VID du materiel ) // ( si plusieurs dossiers, cela signifie que plusieurs port USB différents ont étés utilisés )

    sinon utlise "USBMonitor", lors du plug de ta clé tu dois recevoir son descripteur, son PidVid ainsi que pas mal d'autres informations.

    pour valider que ta clé soit correctement installé, copie/colle tout simplement un fichier dedans (equivalent à createFile), si de toute manière celle-ci apparait dans ton poste de travail, ca confirme bien qu'elle c'est correctement installé.

    Par contre confirme bien que tu n'utilise pas le driver genericUSB fournit par microsoft.
    Pour savoir, regarde dans ton gestionnaire de périphérique, ou manuellement dans le repertoire caché inf, tu devrait trouver un fichier nommé OEMxx contenant ton PidVid ainsi que le .sys utilisé.

    Voila j'espere t'avoir aidé, si besoin n'hesite pas à me contacter.

    Bon courage à toi,

    Citation Envoyé par maanifiik Voir le message
    j'en ai mit mais tjrs rien!

    je ne capte rien avec debugview...
    Pour utiliser debugView, regarde dans le DDK il te fournissent des fonctions te permettant d'afficher tes infos de debug,
    dans le sourceCode que tu a recuperé elles doivent surement etre présente, met s'en une dans ta fonction "driverEntry" et une autre juste après le "ioCreateDevice" pour capturer ces infos sous debugView,
    voici comment se présente les fonctions de debug :
    BulkUsb_DebugPrint(3, ("AddDevice - begin\n"));
    Cette ligne apparaitra dans debugView au plug de la clé.

    pense dans debugView à selectionner les champs :
    bouton en haut à gauche : capture
    selectionne capture win32, capture kernel et capture events.

    Voila si tu a d'autre questions n'hesite pas,

    Cordialement,

  18. #18
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    bonjour,
    oui en faite ca a bien avancer pour moi ! je pense!

    du moins j'ai réussi a installé le driver et l'application qui s'y connecte!
    J'avais pas mi le bon guid.
    L'application arrive à ce connecter (createFile)! mais le problème viens lors d'un writeFILE. Je me demande si le clsid n'est pas à modifier????????

    et je pige pas trop le Device Monitoring Studio mais jtest

  19. #19
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut
    MA question était:

    Comment récupérer les traces event!
    j'ai l'erreur 87 lorsque je fais un writefile!
    dans le Onwrite de queue.cpp il y a un trace event
    donc je voudrait voir si il arrive jusque la....??

    Merci

  20. #20
    Membre à l'essai
    Inscrit en
    Mars 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 40
    Points : 20
    Points
    20
    Par défaut driver umdf
    BIg problème,

    que j'installe ou pas mon driver,
    mon application tourne tout de meme.....
    elle reussi a ce connecter à la clé usb.

    Qqun peut m'aider?????
    est-ce normal ou pas??

    De plus, j'ai mi des OutputDebugString, il ne fonctionne pas dans le queue.cpp!
    Alors que dans mon application, cela marche normalment!

    De l'aide svp

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2009, 17h59
  2. Développer des pilotes WINDOWS
    Par sivaller dans le forum Windows
    Réponses: 2
    Dernier message: 26/06/2008, 01h25
  3. Réponses: 4
    Dernier message: 17/02/2008, 12h42
  4. Débutant en développement Web
    Par Bella la vita dans le forum Débuter
    Réponses: 9
    Dernier message: 18/01/2008, 07h10
  5. [Kylix] Développement de pilotes matériels
    Par cmp-france dans le forum EDI
    Réponses: 1
    Dernier message: 26/01/2003, 20h11

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