usbeck
Messages postés13Date d'inscriptiondimanche 19 décembre 2004StatutMembreDernière intervention21 juin 2007
-
21 août 2006 à 09:26
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
21 août 2006 à 16:03
Bonjour, (le nom un peu compliqué du sujet est pour les recherches, parce que j'aimerai bien que tous les titres soient précis ( "j'ai un probleme" c pas sympa comme titre de thread ^^ ) )
Résumé du problème : Mon ReadFile renvoit false quand mon Handle (qui est bon) est sur un périphérique USB, je n'ai pas le problème en Visual Basic.
Le problème en détail Je rencontre un petit problème avec un ReadFile.
Dans un premier cas j'ouvre un Handle sur un port virtuel "COM6" et je communique via ce port avec un hardware distant (par bluetooth) et avec le ReadFile suivant tout se passe bien :
h = CreateFile("COM6",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
(...)
if(ReadFile(h,data,3,&nbRead, NULL)){...}
dans mon deuxieme cas j'ouvre un handle sur un periphérique USB; le handle marche correctement, (grace au fonction fournit par la bibliotheque hid.dll je peux le vérifier aisément (ca communique :D ) ) mais le ReadFile me renvoit false. Avec la meme structure que précédemment :
h = CreateFile(FunctionClassDeviceData.DevicePath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
// FunctionClassDeviceData.DevicePath correspond au chemin d'acces a l'USB, et cette ligne marche :)
(...)
if(ReadFile(h,data,3,&nbRead, NULL)){...}
Je cherche donc à résoudre ce problème, sachant que cela fonctionne en VB :
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 21 août 2006 à 14:46
Peut être que la taille 3 n'est pas valide pour lecture
Par exemple quand on ouvre un disque dur avec ReadFile, il faut lire par bloc de 512o (ou multiple)
Pourquoi tu ne "copie" pas tel quel le code VB? (je veux dire, le flag FILE_FLAG_OVERLAPPED par exemple a disparu...)
usbeck
Messages postés13Date d'inscriptiondimanche 19 décembre 2004StatutMembreDernière intervention21 juin 20072 21 août 2006 à 11:25
Edit : Mise en page :) pas de bbCode : D
Bonjour, (le nom un peu compliqué du sujet est pour les recherches,
parce que j'aimerai bien que tous les titres soient précis ( "j'ai un
probleme" c pas sympa comme titre de thread ^^ ) )
Résumé
du problème : Mon ReadFile renvoit false quand mon Handle (qui est
bon) est sur un périphérique USB, je n'ai pas le problème en Visual
Basic.
Le problème en détail Je rencontre un petit problème avec un ReadFile.
Dans
un premier cas j'ouvre un Handle sur un port virtuel "COM6" et je
communique via ce port avec un hardware distant (par bluetooth) et avec
le ReadFile suivant tout se passe bien :
h = CreateFile("COM6",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); (...)
if(ReadFile(h,data,3,&nbRead, NULL)){...}
dans
mon deuxieme cas j'ouvre un handle sur un periphérique USB; le handle
marche correctement, (grace au fonction fournit par la bibliotheque
hid.dll je peux le vérifier aisément (ca communique :D ) ) mais le
ReadFile me renvoit false. Avec la meme structure que précédemment :
h = CreateFile(FunctionClassDeviceData.DevicePath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); // FunctionClassDeviceData.DevicePath correspond au chemin d'acces a l'USB, et cette ligne marche :) (...) if(ReadFile(h,data,3,&nbRead, NULL)){...}
Je cherche donc à résoudre ce problème, sachant que cela fonctionne en VB :
OpenForRead = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READWRITE, SA, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
OpenForWrite = CreateFile(FileName, GENERIC_WRITE, FILE_SHARE_READWRITE, SA, OPEN_EXISTING, 0, 0);
(...)
Success = ReadFile(ReadHandle_USB, Buffer, Count, BytesRead, ReadOverlap)
L'erreur récupérée apres le le createFile est l'erreur 1784:
> Error: 1784 The supplied user buffer is not valid for the requested operation.
La définition des paramètres, (incluant mon buffer) :
BYTE data[1600];
DWORD nbRead = 0;
usbeck
Messages postés13Date d'inscriptiondimanche 19 décembre 2004StatutMembreDernière intervention21 juin 20072 21 août 2006 à 15:58
CA MARCHE !!!!! OMG j'en pleure, ca fait ... plus de 2 semaines que je suis la dessus et que j'avance tout petit à petit et la ca marche :'(
C'est vrai qu'il aurait pu etre plus futé de ma part de prendre directement les tailles de buffer et de lecture lu comme dans le Code VB et c BON !!!!!
Meme si ton aide peut te paraitre minime, elle fut immense MERCI BEAUCOUP BEAUCOUP !!!!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?