c ++ - Navn kortlægning - \\. \ PhysicalDrive til \\. \ SCSI

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg udvikler i Windows med C/C ++, og jeg vil gerne vide, er det muligt at få et passende \.SCSI enhedsnavn efter \.PhysicalDrive? ..


For eksempel er det dejligt at vide, hvordan man får det \.PhysicalDrive0 er det samme som \.SCSI0.

Bedste reference


Se på koden, som jeg skrev i mit svar på spørgsmålet. Forfatteren af ​​spørgsmålet havde ændret spørgsmålet i spørgsmålet så mange gange, og den sidste tekstudgave slet ikke klart, eller hvad det oprindelige problem var.


I eksemplet, hvilken C-kildekode du kan downloade her, viser jeg, hvordan du får mange slags oplysninger om det lokale drev ved hjælp af forskellige Windows API. Det vigtige, du har brug for, er at nogle navnekonvertering som DeviceType og DeviceNumber (modtaget af IOCTL\_STORAGE\_GET\_DEVICE\_NUMBER) som følgende [10]


DeviceType: 7, DeviceNumber: 5, PartitionNumber: 1


er unikke i operativsystemet og kan bruges til at identificere de samme enheder. Henvisningen til erklæringen, som du kan finde i dokumentationen til IOCTL\_STORAGE\_GET\_DEVICE\_NUMBER kontrolkode: [11]



  Værdierne i
  STORAGE\_DEVICE\_NUMBER struktur er
  garanteret at forblive uændret indtil
  enheden er fjernet eller systemet er
  genstartes. Det er ikke garanteret at være
  vedvarende på tværs af enheden genstarter eller
  systemet genstarter.



På den måde kan du sammenligne \.SCSI0 enheder og \.PhysicalDrive0 og finde ud af korrespondancen.