Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Erreur 1784 Problème ReadFile [ Divers / Général ] (usbeck)

lundi 21 août 2006 à 09:26:50 | Erreur 1784 Problème ReadFile

usbeck

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 ^^ ) )

[b]Résumé du problème[/b] : 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.

[b]Le problème en détail[/b]
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 :

[code]h = CreateFile("COM6",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
(...)
if(ReadFile(h,data,3,&nbRead, NULL)){...}
[/code]

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 :

[code]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)){...}
[/code]

Je cherche donc à résoudre ce problème, sachant que cela fonctionne en VB :
[code]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)
[/code]

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) :
[code]
    BYTE data[1600];
    DWORD nbRead = 0;
[/code]

Apres des recherches Google :
Windows me dit ca : [url]http://support.microsoft.com/default.aspx?scid=kb;EN-US;Q259573[/url]
Je sais c pas si il y a un lien, et y en aurait un , j'ai pas bien compris comment mettre en place leur solution.

Si tout cela dit qqchose à qqun ?

--- Ne prenez pas le vie trop au sérieux, de toutes manières vous n'y survivrez pas ---

lundi 21 août 2006 à 11:25:55 | Re : Erreur 1784 Problème ReadFile

usbeck

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;



Apres des recherches Google :
Windows me dit ca : [ Lien ]
Je sais c pas si il y a un lien, et y en aurait un , j'ai pas bien compris comment mettre en place leur solution.

Si tout cela dit qqchose à qqun ?

--- Ne prenez pas le vie trop au sérieux, de toutes manières vous n'y survivrez pas ---

lundi 21 août 2006 à 14:46:18 | Re : Erreur 1784 Problème ReadFile

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
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...)

_____________________________________
Un éditeur de ressources gratuit pour Windows


lundi 21 août 2006 à 15:58:16 | Re : Erreur 1784 Problème ReadFile

usbeck

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 !!!!!!

lundi 21 août 2006 à 16:00:51 | Re : Erreur 1784 Problème ReadFile

usbeck

Réponse acceptée !
Pour faire une jolie réponse : L'erreur 1784 sur un readfile peut etre du à cause d'une longueur de donnée à lire et d'un buffer mal dimmensionné. Pour mon exemple, ca ne marche que si mon nombre de donnée lue est de 65 octet (la taille de ma tram) et que mon buffer est de taille supérieur. J'utilise Data[64] et 65 en lecture bit.

lundi 21 août 2006 à 16:03:37 | Re : Erreur 1784 Problème ReadFile

vecchio56

Administrateur CodeS-SourceS
Si tu veux lire 65 octets, il est plus sage d'en réserver 65
Si tu ne réserves que 64 il y aura dépassement du tableau

_____________________________________
Un éditeur de ressources gratuit pour Windows




Cette discussion est classé dans : problème, code, createfile, readfile, generic


Répondre à ce message

Sujets en rapport avec ce message

(MS VCpp) Problème de variables [ par YS1 ] J'ai créé une DLL C+PP que je souhaite utiliser dans un programe VB.La fonction principale de la DLL renvoie un certain nombre de variables, qui sont problème chaines de caractères [ par tintin72 ] BonjourJ'aimerai avoir un petit éclaircissement sur les chaines de caractères.Voici un programme tout bête... char prenom[100]; cout gets(pr Petit problème de code [ par mimyne ] Bonjour g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[10]; if (pSender == Btnres) { //o Problème de code en c++ (fonction itoa) [ par mimyne ] voila g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[2]; if (pSender == Btnres) { { ito If problème [ par Hades53 ] J'ai un problème avec If :char*variable1;variable1 = "bonjour";if (variable1 == "bonjour") cout < Problème incompréhensible [ par CyberP ] Dans un callback d'une fenêtre, j'ai inséré ce code :case WM_PAINT:{ PAINTSTRUCT peindre; HDC rect; rect = BeginPaint(hWnd, &peindre); Engine.dr Un porblème : Oui un très gros ! [ par PiX3L ] Salut tt le monde,bon c'est super le C++ surtout quand y a pas de bug !Mais le problème c'est que j'en ai et que ça fais 2 heures que je suis dessus e Problème : Récupération des données d'un Buffer pour mettre dans une EditBox [ par Memerosti ] BonjourMon problème est le suivant : J'ai ouvert un fichier, lu ses données, et jusque là ça va. Mais ensuite je voudrais récupérer ces données, pour [C++][MFC] Problème avec les onglets [ par impress ] Bonjour, Après avoir parcouru différents forums et tutoriaux, j'ai réussi (enfin !) à créer des onglets de façon propre.Le problème, c'est que je n'ar pb stupide : diviser [ par guifr ] Alors là, je sens que je vais craquer, je suis à deux doigts de commettre un ordicide ! sois mon pc est complètement stupide, ou alors c'est moi (ce q


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.