IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème ReadFile sur un Handle avec un périphérique USB error 1784


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut Problème ReadFile USB. 1784 problème buffer
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    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 ) ) mais le ReadFile me renvoit false. Avec la meme structure que précédemment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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)
    Si qqun voit l'erreur flagrante ?

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 390
    Par défaut
    GetLastError() ?
    FormatMessage() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    error 1784.

    Apres qq recherche sur internet (ok premier résultat sur google -_-):
    ==> Error: 1784 The supplied user buffer is not valid for the requested operation.

    Sinon je ne sais pas encore me servir de FormatMessage je regarde un peu les docs et je tiens au courant pour ce dernier

    Voila l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // MessageId: ERROR_INVALID_USER_BUFFER
    //
    // MessageText:
    //
    //  The supplied user buffer is not valid for the requested operation.
    //
    #define ERROR_INVALID_USER_BUFFER        1784L

    La définition, (incluant mon buffer) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	BYTE data[1600];
    	DWORD nbRead = 0;
    y a un probleme la dessus?

    Windows me dit ca : http://support.microsoft.com/default...;EN-US;Q259573
    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.

    Y a des semaines comme ca ou rien ne marche et il faut passer 1 journée par ligne de code ... envie de week end

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 390
    Par défaut
    Désolé, je me m'y connais pas en ports de communication.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    Y aurait il un forum plus approprié que le forum C++ pour poster cette question ?

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 390
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 390
    Par défaut
    Développement Windows, peut-être.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 15/04/2015, 20h36
  2. [RestFB] Problème publication sur page facebook avec une application facebook
    Par shark59 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 20/04/2012, 10h20
  3. Réponses: 4
    Dernier message: 07/07/2011, 08h51
  4. [Débutant] Interface graphique avec un périphérique USB
    Par mr:titi7 dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 02/11/2007, 17h54
  5. [Système] Communiquer avec un périphérique USB
    Par Blackshade dans le forum Langage
    Réponses: 5
    Dernier message: 20/09/2007, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo