Obtenir le DevicePath

Signaler
Messages postés
6
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
22 avril 2010
-
Messages postés
6
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
22 avril 2010
-
Bonjour a tous,
deja, je vous remercie de lire ce message (et encore plus si j'ai droit a une petite reponse ).
Je suis etudiante et stagiaire en ce moment, et une partie de ma mission consiste a faire un prototype pour pouvoir se connecter a un device.
Je code sous visual basic 6, et je n'ai pas forcement trop l'habitude de ce langage.
Grace a d'autres codes trouves sur ce site, j'ai reussi a detecter les devices connectes a l'ordinateur et a en choisir un.
Cependant, il faut qu'il soit possible de lire et ecrire dessus. J'ai donc voulu utiliser la fonction "CreateFile" pour pouvoir ensuite utiliser "Write/ReadFile". Et la, j'ai un probleme, car au lieu d'avoir le DevicePath (commencant par \\?\), j'ai le HardWareID (commencant par USB\).
Il y a t il un moyen simple d'obtenir le chemin necessaire pour "CreateFile" ? ou dois-je recommencer  completement mon code ?

Merci d'avance de votre reponse!

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
"HardwareId commençant par USB" connais pas. Donne un exemple.
S'agit-il t'un type particulier de 'device' ?
Définis mieux ce que tu appelles 'device'

"au lieu d'avoir le DevicePath " : où ça ? dans quoi ?

De toute façon, avant de te plonger dans la programmation, ouvre une fenêtre DOS (Démarrer, Exécuter, CMD) et fais un simple DIR sur le device en question et affine la syntaxe correcte.
Une fois que tu auras la syntaxe qui fonctionne, tu sauras quoi mettre dans ton programme.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
6
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
22 avril 2010

Merci pour repondre si vite.

Pour ce qui est du device sur lequel je vais travailler, ca fait aussi partie de ma mission, et je n'ai pas encore commence a coder le microprocesseur. Il m'est donc impossible pour le moment d'avoir quelque chose de fixe. Toutes les caracteristiques n'ont pas encore ete choisies, pour l'instant, je sais juste que ca va communiquer par usb. C'est pour cette raison que je souhaite faire un programme assez general pour le moment.

Pour en revenir a la partie qui bloque, voici les syntaxes en question (pour ma souris usb):
HardwareID: USB\VID_045E&PID_00E1&REV_0007USB\VID_045E&PID_00E1
DevicePathNAme: \\?\hid#vid_045e&pid_00e1&col02#6&2bd9dc&0&0001#{4d1e55b2-f16f-88cb-001111000030}

Dans mon programme, je recois le HardwareID, et la fonction "CreateFile" utilise le DevicePathName, et comme on peut le voir, ils ne sont pas tout a fait pareil. (Fonction CreateFile: http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx ).

Pour faire mon enumeration, j'utilise la fonction "SetupDiEnumDeviceInfo" pour rester general. Je ne peux pas utiliser la fonction "SetupDiEnumDeviceInterfaces" car je ne connais pas le GUID du device.

Voila, j'espere que j'ai donne suffisament de details pour que tout soit comprehensible. Sinon, il suffit de me demander.
Merci d'avance.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Re
Ok, merci pour ces précisions.
Les ID dont tu parles ont apparemment été récupérées dans la base de registres (?)
Pourquoi partir de là ?

Quand tu dis que tu veux te "connecter à un device" (terme trop vague) : Si ce n'est que pour faire des transferts de fichiers, pourquoi veux-tu te compliquer la vie à identifier la clé USB par le biais de son ID ?
En plus, je ne suis pas persuadé que les ID dont tu parles correspondent aux ID des clés USB, mais plutôt des ports USB du PC, et sur ces ports, plusieurs clés différentes peuvent s'y connecter.

Si tu veux identifier une clé USB :
- Détecter la présence d'une clé USB
    --> Recherche "USB" parmi les codes
- Identifier : Peut-être qu'une simple identification de l'ID de la partition suffira
    --> Recherche "série disque" parmi les codes (partition de disque dur)

Sinon, pour une souris USB, je ne vois pas trop ce que tu veux faire avec un CreateFile ...
"Cependant, il faut qu'il soit possible de lire et ecrire dessus" Ecrire sur une souris ????

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
6
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
22 avril 2010

La souris, c'etait juste pour donner un exemple. Il est bien evident qu'on ne peut pas ecrire de donnees dessus.
Les ID que j'ai donne ne sont pas specifique aux ports usb, mais bien au device. On peut les identifier grace aux vid et pid (Vendor/Product ID).
Et il faut que je puisse envoyer des donnees a ma carte (par exemple pour ecrire sur l'ecran LCD). Il faut aussi que la carte (STR9) m'envoie des donnees (pour faire une analyse). Et, je ne vois pas comment je peux faire ca si je ne connecte pas logiciellement le device ...

En tout cas, merci pour tes reponses!
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Les informations arrivent au compte goutte.
Tu parles de 'device', ensuite d'USB, ensuite de souris, maintenant d'écran LCD et de STR9.
Il va falloir aller droit au but si tu veux qu'on arrive à comprendre quelque chose.

Si les équipements dont tu parles sont des machines professionnelles, elles ont surement un mode d'emploi et une notice de connectivité, voire un SDK pour les programmeurs.
Si ce sont des objets 'intelligents' (genre analyseur), la connexion se fait surement au travers d'une connexion de pseudo port série COM --> Voir les notices.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
6
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
22 avril 2010

Desolee, je ne savais pas que c'etait important pour trouver le chemin d'un device.

Mon systeme consiste en une carte de developpement dont je dois coder le microcontrolleur, pour que je puisse communiquer avec un ordinateur grace a l'USB.
Cependant, je ne sais pas encore les caracteristiques demandees pour la carte. Je cherche donc a faire un programme qui me permettrai de communiquer avec n'importe quel device fonctionnant avec l'usb.
J'ai deja code la partie ou je trouve tous les devices connectes sur l'ordinateur. Ce que je ne sais pas, c'est comment trouver le premier argument a mettre dans la fonction "CreateFile" (voir message precedent pour la definition sur le site de msdn).

Voila, maintenant, j'espere que c'est suffisament bien explique.