QueryDosDevice(L"E:", DeviceName, MAX_PATH);
(E: is a SD card)
DeviceName is “\Device\HarddiskVolume3”
How do I “convert” it to something like "\\.\PHYSICALDRIVE1"
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Volumes are made up of one or more partitions, which reside on disks. So, E: doesn’t necessarily map to a single disk in the system (think software RAID).
The way you map volumes to the PhysicalDrive names in Win32 is to first open the volume and then send IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS. This will give you a structure that has one DISK_EXTENT entry for every partition that the volume spans:
The extents have a disk number in them:
The DiskNumber is what goes into the PhsyicalDriveX link, so you can just sprintf that number with “\\.\PhysicalDrive%d”
-scott