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 :

[DRIVER]Développer drivers port serie virtuel


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [DRIVER]Développer drivers port serie virtuel
    Bonjour tout le monde,

    Je suis actuellement en galère pour une application que j'essais de faire tourner.
    En fait je dois "espionner" les informations qu'envois un logiciel via le port série à un afficheur (au niveau d'une caisse enregistreuse type supermarché).
    Je travaille normalement en C# mais je n'ai pas trouvé de methode pour "sniffer" ces informations car je ne peux pas utiliser un port serie en cour d'utilisation (je suis sous windows XP et visual studio 2005 au fait).
    Il existe plein de logiciel (payant) permettant de créer un couple de port série virtuel.
    Je souhaiterai (essayer de) faire la même chose. (ex: http://www.intellidriver.com/products.2.14_Demo.html )

    En fait ils créent deux port série virtuel grace à leur driver et c'est ce driver que je souhaiterai réaliser.

    J'ai parcouru le net pour essayer de grapiller des informations mais je n'ai rien trouver ( http://psylon.free.fr/dev/ddk/ ) si ce n'est que tout le monde conseille de laisser tomber pour un gars comme moi (connaissance moyenne en prog C, C++, C#, java) vis a vis du dévelopement de drivers.

    Quelqu'un aurait un bout de piste pour que je puisse me lancer dans cette aventure ou, au pire, me décourager et me laisser acheter les versions payantes.

    f.colo

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    C'est du boulot effectivement. Si tu utilises cette méthode, il vaut peut être mieux acheter le produit.
    Mais il y a d'autres possibilités. Tu peux hooker les fonctions utilisées par cette appli pour dumper tout ce qu'elle écrit, avant de le ré-expédier vers la fonction originale.
    Voir ApiSpy par exemple:
    http://www.internals.com/
    et l'article sur le sujet sur le même site.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 6
    Points
    6

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Il te faut au moins un bon bouquin, et beaucoup de temps. Avec l'API hooking ca sera moins dur et plus facile à développer.
    Tu as essayé de jouer avec APISpy ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Je dois surement être neuneu car j'ai pas réussi à le faire fonctionner
    J'ai lu l'article mais j'ai pas sus le faire fonctionner, alors j'ai laissé (peut etre trop vite) tomber.
    Comme je ne sais pas comment mon logiciel (FIT Restaurant) communque avec le port serie, je ne sais pas quoi mettre dans mon fichier .api

    f.colo

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Oui il faut lire la doc sur le fichier qui doit pas être n'importe où.
    Les fonctions à hooker sont WriteFile et ReadFile pour les accès, et éventuellement celles relatives aux ports COM:
    http://msdn.microsoft.com/library/en-us/devio/base/communications_functions.asp
    Commenc déjà par réaliser un programme qui manipuler le port COM avec ces fonctions pour comprendre comment ça marche.
    http://c.developpez.com/faq/vc/?page...WithSerialPort

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Donc je suis sous windows XP, j'ai placé un fichier mySpy.api dans c:/windows/.
    Ce fichier contient les deux ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    KERNEL32.DLL:WriteFile(INT,PBYTE,INT,PDWORD,INT)
    KERNEL32.DLL:ReadFile(INT,PBYTE,INT,PDWORD,INT)
    Je ne sais pas trop ce qu'il faut mettre comme argument:
    Sous C# les fonctions sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
            [DllImport("kernel32.dll")]
            private static extern bool ReadFile(
              int hFile,                // handle to file
              byte[] lpBuffer,             // data buffer
              int nNumberOfBytesToRead,  // number of bytes to read
              ref int lpNumberOfBytesRead, // number of bytes read
              ref OVERLAPPED lpOverlapped    // overlapped buffer
            );
            [DllImport("kernel32.dll")]
            private static extern bool WriteFile(
              int hFile,                    // handle to file
              byte[] lpBuffer,                // data buffer
              int nNumberOfBytesToWrite,     // number of bytes to write
              ref int lpNumberOfBytesWritten,  // number of bytes written
              ref OVERLAPPED lpOverlapped        // overlapped buffer
            );
    Et ca ne fonctionne pas , sais tu où je fais l'erreur?
    (cool ta rapidité de réponse )

    f.colo

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Je viens de faire le test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KERNEL32.DLL:WriteFile(HANDLE, PSTR, DWORD, PDWORD, DWORD)
    il intercepte l'écriture d'un fichier avec notepad.
    pour la lecture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    KERNEL32.DLL:WriteFile(HANDLE, PBYTE, DWORD, PDWORD, DWORD)
    mais ça va pas t'afficher ce qui a été lu. Par contre l'écriture oui tu verras ce qui est écrit.
    Note que ça intercepte les lectures / écritures, donc il faut qu'il y ait lecture/écriture pour que ça marche. Fait un test en sauvegardant un fichier avec notepad.

    Pour le 2° paramètre:
    PBYTE: tableau de BYTE, il affiche juste l'adresse du tableau
    PSTR : il considère que c'est uen chaine de caractères, et il te l'affiche. Mais si ton logiciel n'écrit pas une chaine de cars, je sais pas ce que ça va donner.
    Pour la lecture c'est pas possible, car il t'affiche les paramètres au moment de l'appel, or le résultat de la lecture est obtenu après l'appel.

  9. #9
    Membre habitué Avatar de - Robby -
    Inscrit en
    Juillet 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 266
    Points : 170
    Points
    170
    Par défaut
    Bonsoir a tous,
    Je ne suis pas un spécialiste concernant le problème posé.
    J'ai juste accroché sur les données " driver + port série ".
    Et la j'ai un article intéressant ... qui pourra peut être aider, ou donner des idées.
    ---> I C I

    Un fichier pdf de 7.9Mo... un rien de patience.
    C'est un projet de fin d'études, de l'INSA de Lyon 2003. Une fusée avec toute son étude (intéressant au passage) ... mais à la fin ... page 164 et suivantes ... tu trouveras leur propre étude et conception d'un driver usb pour recevoir les données de la dites fusée. Je trouve cet article très interessant. C'est du concret.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Aurelien.Regat-Barrel --> ok, ca fonctionne avec tes explications et en ayant bien relu l'aide.
    Par contre, il me capture tout de toutes les applications qui tournent à coté. Par exemple, lors de mon essais, j'avais mon utilitaire ftp qui uppé un fichier et ApiSpy capturé tous ses appel à WriteFile(INT,PBYTE,INT,PDWORD,INT). Je n'ai pas vu la possibilité de surveiller qu'une application, c'est domage.

    Sympas Robby ton lien, mais je retrouve les fonctions et parametres que j'avais dans les liens au dessus, comprehensible mais il me serait impossible de savoir lequel utiliser et quand.

    Je continu à chercher et vous tiens au courant de mes avancés.

    f.colo

Discussions similaires

  1. Outils développement driver
    Par jojo_ol76 dans le forum Android
    Réponses: 1
    Dernier message: 10/05/2011, 10h21
  2. drivers acces direct port serie et //
    Par lucky dans le forum Windows XP
    Réponses: 0
    Dernier message: 12/04/2011, 13h24
  3. port serie virtuel et java urgent
    Par never-land0 dans le forum Développement Mobile en Java
    Réponses: 0
    Dernier message: 05/09/2008, 17h23
  4. Développement driver d'impression
    Par guitou_429 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 30/05/2008, 17h03
  5. piloter un port usb via un port serie virtuel?
    Par passion_info dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/10/2006, 12h56

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