2010-06-09 10 views
2

J'utilise win32 api avec C++.Comment obtenir le volume GUID

Je voudrais savoir comment obtenir le volume GUID en utilisant un "chemin de périphérique".

Mon appareil ressemble à ceci:

\\?\usb#vid_04f2&pid_0111#5&39fe81e&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed} 

Merci.

+0

Pour quoi voulez-vous l'utiliser? –

+0

@codeka: J'ai besoin de faire correspondre la lettre du lecteur avec le chemin de l'appareil – user198725878

+0

Vous pouvez poser cette question autant de fois que vous le souhaitez, mais la réponse ne changera pas. Le lien que j'ai posté dans votre autre question montre comment faire cela. – Luke

Répondre

2

Ce sera l'appareil avec l'ID d'instance de périphérique usb\VID_04f2&PID_0111\5&39fe81e&0&2. C'est probablement un périphérique de stockage de masse aka disque. Maintenant, le problème que vous avez est qu'un périphérique de stockage de masse n'a pas réellement une lettre de lecteur; c'est le volume sur ce disque qui a une lettre de lecteur. S'il y a deux partitions, un seul périphérique de stockage de masse USB peut avoir deux lettres de lecteur. Donc, il n'y a pas de fonction directe pour obtenir le volume.

Il semble que vous ayez besoin d'énumérer l'arborescence des périphériques dont l'origine est usb\VID_04f2&PID_0111\5&39fe81e&0&2 pour trouver des enfants avec le type de périphérique «volume». Le DEV_BROADCAST_DEVICEINTERFACE que vous obtenez aura un champ dbcc_name que vous pouvez passer à GetVolumeNameForVolumeMountPoint().

+0

Existe-t-il un moyen d'utiliser 'GetVolumeNameForVolumeMountPoint' si le périphérique n'est pas monté (par exemple si Windows ne contient plus de lettres de lecteur)? –

+0

@ Juge Maygarden: Je pense que vous avez une fausse supposition ici. "Montage" sur Windows ne nécessite pas de lettre de lecteur. Le "point de montage" utilisé ici ('nom_dbcc ') n'est certainement pas une lettre de lecteur. – MSalters

0

Avez-vous envisagé d'interroger le WMI pour cela? Faites-moi savoir si vous avez besoin de détails sur la façon de le faire.

+0

Merci pour la réponse. Je fais avec win32api way – user198725878