begin process at 2010 03 18 00:53:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Erreur 1784 Problème ReadFile


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur 1784 Problème ReadFile

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ée 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


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales