|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 8 ![]() |
Bonjour,
J'essaie d'ouvrir un device USB avec CreateFile (borland). Mon handle est toujours invalide. Ma fonction est de ce type: hUsb=CreateFile("\\?\usb#vid_05ca&pid_1834#5&349ef221&0&8#{a5dcbf10-6530-11d2-901f-00c04fb951ed}", GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL); if(hUsb == INVALID_HANDLE_VALUE) ....... Le GUID est intercepté par la variable :detail->DevicePath , donc correcte. J'ai essayé differents formats "\\.\usb, \\\\?\\usb, \\\\.\\usb....." mais sans succès. L'alignement des données sur le compilateur est en byte. Quelqu'un aurait il la soluce car cela fait quelques jours que je cherche à avoir un handle Merci |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 190 ![]() |
Citation:
Citation:
Code :
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
Quelle version de BCB ? 3 à 2007 ? ou entre 2009 à XE3... ? Quel mapping wchar_t si >= 2009 indiquant CreateFileA ou CreateFileW je doublerais les \ ainsi : CreateFile("\\\\?\\usb#vid... Pour le reste ta chaine semble effectivement correcte Tu évoques DevicePath, je suppose que c'est en référence à l'exemple : How to Access a USB Device by Using WinUSB Functions (Windows Drivers) - Create a File Handle for the Device
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 8 ![]() |
Merci, effectivement hUsb me retourne un pointeur int.
char mapTemp[256]; strcpy(mapTemp,"\\.\usb#vid_05ca&pid_1834#5&349ef221&0&8#{a5dcbf10-6530-11d2-901f-00c04fb951ed}"); hUsb=FileCreate(mapTemp); J'utilise le Borland C++ 5.0. Reste à savoir utilise read/write pour dialoguer sur l'usb. Tout de meme drole que je ne puisse pas utilise l'api de windows sous Borland. DevicePath provient effectivement de la librairie win api (qui elle fonctionne sur Borland). Je passerai le source complet lecture /ecriture sur usb lorsqu'il sera fonctionnel. Ca devrait etre valable sous Borland 6 et XE |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 8 ![]() |
J'ai tout de meme difficile à comprendre l'équivalence de "DeviceIoControl" pour lire ou écrire les trames FileWrite ou FileRead en Borland c++.
DeviceIoControl est parametré par: #define IOCTL_USBIO_WRITE_PACKET |
|
|
00
|
|
|
#5 | |||
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 190 ![]() |
J'en doute, c'est Borland C++ Builder 5 avec la bibliothèque VCL
Borland C++ 5.0 existe aussi, il me semble qu'il utilisait la bibliothèque OWL, c'est un autre environnement de développement de Borland x2Citation:
ceci suffit Code :
hUsb = FileCreate("\\\\.\\usb#vid_05ca&pid_1834#5&349ef221&0&8#{a5dcbf10-6530-11d2-901f-00c04fb951ed}"); Sur XE faudrait faire attention à l'unicode
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|||
|
|
10
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 8 ![]() |
Retour sur CreateFile et Borland C++ ( biblio win)
J'ai enfin réussi 'par chance' à ouvrir un handle. Fallait trouver la conversion, sinon rien ne va. Code :
Code :
for(int R=0;R<256;R++) Guid[R]=detail->DevicePath[R]; PS: ShaiLeTrollJe prends bien note de tes remarques, mais j'essaie de faire fonctionner le code en premier. Effectivement, c'est du Borland C++ 5.0 builder pour etre précis. Il me reste ce fameux DeviceIoControl à faire fonctionner. Merci. |
||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 8 ![]() |
Finalement, le handle n'est pas correcte.
J'ai laissé tombé après trop de temps de galère. Je suis passé sous nrComm et la, tout fonctionne. Dommage.... |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com