VB6: Fonction WriteFile pour USB en classe HID

Le
PovTruffe
Bonjour,

Je cherche à communiquer avec un périphérique USB fonctionnant en
classe HID. Toutes les fonctions API permettant de détecter ce périph
et de lire ses caractéristiques ne posent aucun problème (après avoir
toutefois pas mal galéré).
Mais l'appel de la fonction WriteFile m'indique systématiquement que
"Le tampon utilisateur fourni n'est pas valide pour l'opération demandée".

Voici l'appel:
WriteFile (HIDHandle, SendBuffer(0), CLng(Capabilities.OutputReportByteLength), NumberOfBytesWritten, 0)

Sa déclaration est:
Public Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, ByRef lpBuffer As Byte, ByVal
nNumberOfBytesToWrite As Long, ByRef lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long

Le code qui précède concernant ce buffer:
Dim SendBuffer() As Byte
ReDim SendBuffer(Capabilities.OutputReportByteLength - 1) 'The SendBuffer array begins at 0, so subtract 1 from the
number of bytes.
SendBuffer(0) = 0 'The first byte is the Report ID

J'avais récupéré le code VB6 sur ce site:
http://www.lvr.com/hidpage.htm Lien direct du code: http://www.lvr.com/files/usbhidio2.zip

J'ai vérifié et revérifié les valeurs passées à la fonction ainsi que la validité
de la déclaration, mais là je sèche. Une idée ?
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
PovTruffe
Le #16635191
Snif ! pas de réponse. Faut dire que ma question est très spécifique et que
ce newsgroup n'est pas très actif.

J'ai quand-même un peu avancé. La fonction WriteFile ne pose aucun
problème avec le même programme tournant sur un PC sous Windows 2000.

Et sur le PC sous XP qui pose problème, la fonction WriteFile fonctionne
bien pour écrire dans un fichier classique. Seul l'USB pose problème.

Il y a peut être un problème hardware USB sur la carte mère. L'interface
USB ne semble pas très stable.

Une idée ?
Publicité
Poster une réponse
Anonyme