2011-05-05 144 views
4

我的应用程序适用于Windows Vista和XP。获取硬盘的驱动器号

在我的机器上连接的硬盘有很多。我需要从我的系统启动硬盘的驱动器号。

通过使用GetLogicalDriveStrings函数我可以得到所有硬盘驱动器的驱动器号。但我怎么能区分这个特定的驱动器号是我的启动硬盘驱动器的分区名称?

盘的结构是:

Disk0上(与此引导) - CDG

disk1- EFH

disk2- IJ

我需要得到C,d,G只要。

+0

许多问题的另一个问题,其中[karthik](http://stackoverflow.com/users/644073/karthik)或[user692270](http://stackoverflow.com/users/692270/user692270)接受@karthik'的答案。严重的是,你患有自卑感;去找你的医生。 – 2011-09-27 07:41:33

回答

5

致电GetLogicalDrives获取所有可用的驱动器号。

致电GetSystemDirectory获取包含操作系统的驱动器。

打开使用的CreateFile( “\。\ C:” 音量:返回的与GetSystemDirectory返回的驱动器盘符

呼叫DeviceIControl,...

这里替换C。与IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS处理代码来获取硬盘编号。

现在你知道包含操作系统的驱动器的硬盘数量。

在所有其他驱动器号上重复CreateFileDeviceIoControl并将硬盘号码与先前获得的硬盘号码进行比较。

+0

许多问题的另一个问题是[karthik](http://stackoverflow.com/users/644073/karthik)或[user692270](http://stackoverflow.com/users/692270/user692270)接受@karthik的答案。严重的是,你患有自卑感;去找你的医生。 – 2011-09-27 07:40:53