QueryDosDevice(L"E:", DeviceName, MAX_PATH);
(E: bir SD kart)Cilt
DeviceName ben yana "\\.\PHYSICALDRIVE1"
QueryDosDevice(L"E:", DeviceName, MAX_PATH);
(E: bir SD kart)Cilt
DeviceName ben yana "\\.\PHYSICALDRIVE1"
Birimler, disklerde bulunan bir veya daha fazla bölümden oluşur. Yani, E: sistemdeki tek bir diske mutlaka eşleşmiyor (yazılım RAID'i düşünün).
Win32'daki PhysicalDrive adlarına birimleri eşleme biçiminiz, önce birimi açıp IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS adresine gönderilir. PhsyicalDriveX gider ne
typedef struct _DISK_EXTENT {
DWORD DiskNumber;
LARGE_INTEGER StartingOffset;
LARGE_INTEGER ExtentLength;
} DISK_EXTENT, *PDISK_EXTENT;
disknumber geçerli:
typedef struct _VOLUME_DISK_EXTENTS {
DWORD NumberOfDiskExtents;
DISK_EXTENT Extents[ANYSIZE_ARRAY];
} VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
kapsamlarını onları bir disk numarası vardır: Bu, hacim yayılan her bölüm için bir DISK_EXTENT giriş olan bir yapı kazandıracaktır bağlantı yapabilirsiniz yüzden sadece sprintf ile bu sayı "\\. \ PhysicalDrive% d"
-Scott
gibi bir sunucu "dönüştürmek" nasıl "HarddiskVolume3 \ \ Aygıt"
olduğunu Yine de WMI kullanıyorsunuz, Win32_LogicalDiskToPartition
ile başlayın. Win32_LogicalDisk
tarafında, Başlık, sürücü harfi olacaktır. Sonra hangi fiziksel sürücünün bu bölümü tuttuğunu görmek için Win32_DiskDriveToDiskPartition
kullanın.
hedefiniz nedir? Neden böyle bir formata dönüştürmek istiyorsunuz? Yoksa sadece cihazın global endeksini elde etmek mi istiyorsunuz? –
Bu bir sürücü değil, gerçekten sadece bir hacim. –
WMI ile bazı bilgileri almaya çalışıyorum. Ben bilmek gerekir ki ben DeviceID ile Win32_DiskDrive sınıfından eşleştirebilirim – Cornwell