Programmation d’un câble de transfert USB / communication avec un pilote de périphérique USB

Comment puis-je accéder par programmation à un câble de transfert USB (tel que le Easy Transfer Cable de Belkin) à partir de Windows?

Je suis familier avec libusb-win32 , mais d’après ce que je peux dire, utiliser cela avec des appareils plus récents et avec Windows Vista semble peu probable.

Je sais que Windows Easy Transfer peut le faire. Comment écrire un code qui fait la même chose que Windows Easy Transfer?

S’il n’y a pas de documentation sur la façon de procéder, je suis prêt à creuser, mais je ne sais pas par où commencer. Comment regarder ce que fait Windows Easy Transfer pour savoir comment il fonctionne? Je vois que Windows donne même aux câbles de transfert leur propre catégorie dans le Gestionnaire de périphériques, «Transférer les périphériques câblés». Comment faire une communication de bas niveau avec l’un de ces pilotes?

    J’ai découvert que Microsoft propose désormais WinUSB pour une communication simple en mode utilisateur avec des périphériques USB. (Un pilote de périphérique WinUSB doit d’abord être installé pour le périphérique, ce qui est quelque peu similaire à un pilote de périphérique libusb-win32.) WinUSB fonctionne sous XP (SP2 et supérieur) et Vista.

    Le Easy Transfer Cable utilise WinUSB pour son pilote de périphérique, ce qui m’a permis de communiquer avec lui en suivant l’exemple de code fourni dans le document WinUSB de Microsoft.

    Pour ce faire, vous devrez utiliser l’API Win32 de bas niveau. Microsoft a de bons exemples ici pour accéder à un périphérique d’interface utilisateur. Le câble de transfert n’est pas explicitement un HID comme une souris ou un clavier, mais il est conforme aux spécifications HID.

    Par exemple, pour obtenir le nom du périphérique USB que vous souhaitez appeler

    HidD_GetProductSsortingng(...) 

    http://msdn.microsoft.com/en-us/library/ms790920.aspx

    Il y en a beaucoup plus ici, vous devriez certainement jeter un oeil à l’exemple d’application c qui fonctionne pour toutes les versions de Windows de 2000 à Vista.

    http://msdn.microsoft.com/en-us/library/dd163258.aspx

    Bonne chance!

    Vous devez disposer d’un câble de transfert de données USB (également appelé câble de liaison de données USB) prenant en charge l’API ou le SDK, puis utilisez le code suivant:

     void CU2uDlg::OnOK() { BYTE buf[65530]; LPU2URET pU2uRet; BOOL bRet; int ret; CSsortingng msgstr; ret = u2u_open(); if (ret == -1){ AfxMessageBox("Open U2U device Success."); }else{ msgstr.Format("Open U2U device fail,return:%d", ret); AfxMessageBox(msgstr); return; } //send data bRet = u2u_SendData(buf, 65530, ret); if(!bRet) { msgstr.Format("Send data error,return:%d", ret); AfxMessageBox(msgstr); return; } //receive data while (1){ bRet = u2u_RecvData(recvData, dataLen, ret); if( !bRet ) { msgstr.Format("Receive data error,return:%d", ret); AfxMessageBox(msgstr); u2u_close(); return; }else{ break; } } u2u_close(); } 

    Voir: Reference1 , Reference2