OBTENIR LA LISTE DES PÉPRIPHÉRIQUES ÉJECTABLES (LES CLÉS USB, DISQUE DURS USB...

Signaler
Messages postés
406
Date d'inscription
lundi 2 décembre 2002
Statut
Membre
Dernière intervention
25 janvier 2014
-
Messages postés
185
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
20 juin 2013
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28573-obtenir-la-liste-des-pepripheriques-ejectables-les-cles-usb-disque-durs-usb-et-les-ejecter

Messages postés
185
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
20 juin 2013

Bonsoir ShareVB,

Je te remercie de tes infos. Cependant depuis mon dernier message, j'ai pas mal décortiqué ton code et lu de la doc sur les API SetupDi et du coup j'en ai déduit que je ne pouvais pas distinguer les disque externes par ces API. En effet ils sont attachés à la classe Volume, celle dont tu me donnes le classGUID pour utilisation avec SetupDiGetClassDevs, ce qui permet d'aller + vite dans leur identification mais ne permet pas de savoir qu'ils sont USB, voire même FW. D'ailleurs dans ton code tu détectes bien les clés USB mais pas les disques externes. J'abandonne donc une partie de cette piste pour les détecter et m'oriente vers l'API DeviceIoControl pour détecter le type de bus du disque. (mais l'utilisateur doit être des droits sur le disque !).
Quoiqu'il en soit, Merci pour ton code et tes infos.
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
24
salut,

L'api SetupDiGetClassDevs permet de récupérer les devices selon une catégorie (premier paramètre) soit d'installation (les catégories du Device Manager : http://msdn.microsoft.com/en-us/library/ms791134.aspx) soit d'interface (des catégories plus générales : http://msdn.microsoft.com/en-us/library/bb663138.aspx).

Si tu veux récupérer tous les disques, il faut que tu appelles cette api, de la façon suivante :
SetupDiGetClassDevs({71a27cdd-812a-11d0-bec7-08002be2092f}, NULL, NULL, DIGCF_PRESENT)

ShareVB
Messages postés
185
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
20 juin 2013

10/10 Merci
Messages postés
185
Date d'inscription
dimanche 29 juin 2003
Statut
Membre
Dernière intervention
20 juin 2013

Bonjour,
Je viens de découvrir ce code en cherchant comment identifier des disques externes USB afin d'orienter un traitement différent de l'API WriteFile pour ce type de disque dans un code. C'est super, j'y trouve ce qu'il me faut et je vais en prendre un bout et l'adapter à une classe que j'utilise en information sur disque et fichiers. Merci pour ce gros travail d'information.
Y aurait-il une ou d'autres constantes comme DIGCF_ALLCLASSES = &H4 pour cibler l'extraction et limiter le parcours de l'énumération obtenue ?
Merci
Afficher les 13 commentaires