Couper l'alimentation d'un port usb

Couper l'alimentation d'un port usb - C++ - Programmation

Marsh Posté le 23-05-2006 à 11:03:05    

Bonjour,
 
Je souhaiterais pouvoir controler l'alimentation d'un port d'un hub usb externe (power-off ou power-on) sous Windows Xp SP2 avec Visual C++ 7.
Chaque port du hub est alimenté séparemment (Power switching mode = individual dans le hub descriptor) dont cela semble possible.
 
J'ai vu dans les spécifications usb qu'il est possible, via un Set Port Feature, de faire un power-off ou un power-on d'un port, mais je n'y suis pas arrivé, faute de trouver la fonction nécessaire.
J'ai bien pensé à DeviceIoControl, de la même façon que pour lire les descriptors, mais il me manque le deuxième paramètre de la fonction...
 
Avez-vous des idées à me proposer ??
 
Je tiens bien à souligner que je ne souhaite pas juste faire un port restart, ou un port suspend/resume, mais bel et bien un power-off/on du port.

Reply

Marsh Posté le 23-05-2006 à 11:03:05   

Reply

Marsh Posté le 23-05-2006 à 13:14:10    

Finalement, je pense avoir trouvé un IOCTL qui pourrait convenir :
IOCTL_INTERNAL_USB_CYCLE_PORT.
 
J'aimerais le tester pour vérifier qu'il convient bien.
J'ai essayé via DeviceIoControl mais sans succès :
 

Code :
  1. Success = (DeviceIoControl(HubHandle, IOCTL_INTERNAL_USB_CYCLE_PORT, NULL, 0, NULL, 0, NULL, NULL) !=0 );


 
Success = false et GetLastError me renvoie 1 (ERROR_INVALID_FUNCTION).
 
Savez-vous comment utiliser ce IOCTL ?

Reply

Marsh Posté le 24-05-2006 à 12:34:45    

Après test non, il ne convient pas (IOCTL_USB_HUB_CYCLE_PORT) car il n'y a pas de power off du port USB dans le cycle de simulation...
 
Donc si vous avez d'autres idées pour faire un power off du port je suis toujours preneur !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed