c ++ - Hvordan kan jeg bestemme typen af ​​et bestemt drev?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg føler mig lidt noob endnu med dette for at få oplysninger om hardware af CPU'en, så jeg kommer med denne anmodning: Harddisk, CD/DVD/Bluray-læser, Floppy og hvis det er muligt USB.
Jeg har kigget på MSDN GetDriveType, men synes jeg er dårlig til at søge, eller jeg forstår det ikke. Enhver ide? [4]

Bedste reference


Jeg er ikke sikker på hvad du ikke forstod om dokumentationen du linkede til ...


Det eneste argument, der accepteres af funktionen, er rodkatalogen for det drev, du ønsker at få oplysninger om (herunder en tilbagegående tilbageslag). Funktionen returnerer en værdi, der angiver hvilken type drev der er. Et diagram er vist, der giver mulige returværdier og hvad hver af dem betyder.


For eksempel:


GetDriveType(\_T("C:\"))    // returns DRIVE\_FIXED if C: is my hard drive
GetDriveType(\_T("A:\"))    // returns DRIVE\_REMOVABLE if A: is my floppy drive
GetDriveType(\_T("D:\"))    // returns DRIVE\_CDROM if D: is a CD-ROM drive
GetDriveType(\_T("N:\"))    // returns DRIVE\_REMOTE if N: is a network drive


Det siger også, at hvis du vil afgøre, om et drev er et USB-drev, skal du ringe til SetupDiGetDeviceRegistryProperty -funktionen og angive egenskaben SPDRP\_REMOVAL\_POLICY. [5]

Andre referencer 1


Hvis du vil bestemme, at en enhed er en USB-enhed, kan du åbne håndtaget og sende IOCTL-forespørgsler ved hjælp af DeviceIoControl () for at få den bustype, en enhed er tilsluttet.


EnumUsbDrivesLetters - posten er på russisk, men den indeholder C + + kildekode, så sagen kunne forstås let. [6]


Skål, Andriy

Andre referencer 2


Den eneste all-in-one API, jeg kender til Windows med disse oplysninger, er WMI, men det er ikke særdeles nemt at bruge. På den anden side kommunikerer mange programmer direkte med enheder, ved hjælp af pass-through kontrolkoder eller jeg/O-kontrolkoder som SMART\_RCV\_DRIVE\_DATA. [7] [8]


(Jeg ved ikke hvordan Speccy fungerer, men jeg gætter på, at den bruger en kombination af disse metoder for at få systemoplysningerne nødvendige.) [9]