1、问:如何得到系统上已安装硬盘数量及每个硬盘的信息。    当前系统已安装硬盘在注册表中以下位置可以得到。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\Enum
    其中Count值表示当前系统安装了几块硬盘。    0,1,2,……对应的值表明第0/1/2块硬盘的硬件信息在注册表哪个位置存放(相对于HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum)
    通过这些你可以知道硬盘是IDE硬盘还是USB硬盘。如:我的系统上    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Disk\Enum下面
    Count的值是2,说明我的系统中装有两块硬盘
    0的值是IDE\DiskST3120022A______________________________3.06____\4a33325441354247202020202020202020202020
    说明我的第0块硬盘是块IDE硬盘
    1的值是USBSTOR\Disk&Ven_HITACHI_&Prod_DK23EA-40&Rev_0811\6&127aa5df&0
    说明我的第1块硬盘是块移动硬盘    Vendor ID在0/1的值中多少可以看出来一些,不过最好还是去其指向的注册表位置中找。2、如何枚举一块硬盘上的驱动器盘符。   答:
       首先用FindFirstVolume/FindNextVolume可以枚举出系统中所有的卷(得到类似\??\Volume{67899342-0386-11d8-93cc-806d6172696f}的卷名)
       不用FindFirstVolume/FindNextVolume也可以到HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices下面找到这些卷名       然后你可以用CreateFile,将卷名传入,打开这些卷,再用调用DeviceIoControl,使用IOCTL_DISK_GET_PARTITION_INFO_EX获得这个卷的分区信息。你需要获得所有卷的分区信息。       接着,由1问中可以知道硬盘的序号,接着你用CreateFile打开\\.\PhysicalDrive#(#为磁盘序号,0, 1之类的),调用DeviceIoControl, 使用IOCTL_DISK_GET_DRIVE_LAYOUT_EX获得这个磁盘上所有分区的分区信息,跟前面得到的卷的分区信息比较可以得出这个磁盘有哪些卷。       最后,枚举系统中固定磁盘的盘符,用GetVolumeNameForVolumeMountPoint可以获得盘符对应的卷名,最终确定指定磁盘上分区的盘符。   当然也可以不用FindFirstVolume/FindNextVolume,直接用GetLogicalDrives取得所有固定磁盘驱动器的盘符,然后用CreateFile打开,再DeviceIoControl获得驱动器分区信息。再和物理磁盘的所有分区信息进行比较来确定物理磁盘上有哪些盘符