Question

Sous Windows (XP-7), est-il un moyen fiable de différenciation entre les lecteurs de programatically disquettes USB et les lecteurs flash USB en C ++?

À l'heure actuelle, j'utilise WMI pour obtenir des mises à jour lorsque de nouvelles les instances de Win32_LogicalDisk « nofollow noreferrer » sont détectés, puis en utilisant l'attribut DriveType de l'objet LogicalDisk de trouver un type de base. Cela fonctionne très bien, sauf que les lecteurs de disquettes et les lecteurs flash USB sont tous deux DriveType DRIVE_REMOVABLE, afin de faire la différence entre ceux (disquette contre flash), j'utilise le MS-KB: Comment modifier les affectations de lettre de lecteur Windows XP), ou à la recherche à la description, mais je voudrais vraiment comme quelque chose d'un peu plus fiable.

Désolé pour la longue explication, mais je voulais juste être clair! Merci

Était-ce utile?

La solution

Avez-vous essayé Win32_LogicalDisk.MediaType? Il a énumérations pour les disquettes. Assurez-vous de l'essayer quand il n'y a pas de disque dans le lecteur.

Autres conseils

Au niveau USB, il n'y a pas moyen de faire la différence entre un disque classique sur clé USB et une-disquette. Ce qui signifie que Windows lui-même, ne peut pas dire de manière fiable ce qui est quoi.

Il y a quelques conseils que vous pouvez recueillir: : Devrais-Floppies une. Avoir le protocole de stockage de masse CBI / CB b. SCSI UFI

Mais, dans le monde des périphériques USB, tout le monde fait ce qu'ils veulent. Le seul test est: « Est-ce que ça fonctionne sur les fenêtres ». Et Windows vérifie la taille juste, si son un périphérique USB avec set-supports amovibles et avec des tailles de disquettes classiques, il considérera que ce soit une disquette.

ne peut pas dire au sujet de la « vraie » disquette, mais avec l'USB connecté, il n'y a pas de façon définitive.

Vous pouvez utiliser l'attribut Taille (USB> 1.4MB), il est pas comme il y a une chance de rencontrer flash 1.4MB conduire dans un proche avenir.

La propriété évidente pour vérifier serait IOCTL_DISK_GET_DRIVE_GEOMETRY. Cela vous arrive (entre autres) un MEDIA_TYPE. Tout sauf RemovableMedia et FixedMedia est une disquette.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top