其实这个问题也很多人问过的了
我想知道电脑上(A)有多少个物理的硬盘(B)每个物理硬盘上有多少个分区(C)每个分区的逻辑盘符是什么。
怎样实现呢?WMI方法也行,最好是能在win98下也可以的,或者有相关的资料吗?

解决方案 »

  1.   

    GetDiskFreeSpaceEx() 只能取得磁盘的容量。
    getLogicalDrives() 只能取得所有的逻辑驱动器的盘符,不能判断这些逻辑驱动器是属于那个物理盘的(假设有多个硬盘)。
    高手们,HELP!!!!~~~~~~
      

  2.   

    可以与我探讨,我已经实现了(A)有多少个物理的硬盘(B)每个物理硬盘上有多少个分区,但C 还在研究重
    [email protected]
      

  3.   

    //函数描述:函数名 Fresource_driveinfo
    //功能:取驱动器信息
    //参数描述: driveInfo存放取得的驱动器统计信息数组,
    // length为数组实际存放项的
    //返回值描述:返回值1表示正常,-1表示出错
    short Fresource_driveinfo( Fdrive_info driveInfo[MAX1],int& length )
    {
    Fdrive_info DriveInfo;
    memset( &DriveInfo, 0, sizeof( Fdrive_info ) );
    DWORD dwBuffer=256;
    char szBuffer[256];
    memset( szBuffer, 0, dwBuffer );
    int nSize = GetLogicalDriveStrings( dwBuffer, szBuffer );
    if( nSize == 0 )
    {
    return -1;
    } char szDrivers[32][5];
    memset( szDrivers, 0, 160 );
    char szTemp[4];
    memset( szTemp, 0, 4 );
    int j=0;
    int nLength=0;   // 有几个盘符
    for( int i=0; i<nSize; i++ )
    {
    if( szBuffer[i] == '\0' )
    {
    szTemp[j]='\0';
    strcpy( szDrivers[nLength], szTemp ); UINT nDriver = GetDriveType( szDrivers[nLength] ); 
    // 得到驱动器的信息
    switch( nDriver )
    {
    case DRIVE_REMOVABLE:  // 是否是软驱
    break;
    case DRIVE_CDROM:
    break;
    case DRIVE_FIXED:
    strcpy( DriveInfo.drive_type, "硬盘" );
    strcat( DriveInfo.drive_type, "DRIVE_FIXED" ); //GetVolumeInformation();
    //DriveInfo.Partitiontype = ;
    //strcpy( DriveInfo.drive_id, szDrivers[nLength] );
    //DriveInfo.drive_size = ;
    //GetDiskFreeSpace( szDrivers );
    break; case DRIVE_REMOTE:
    break;
    case DRIVE_RAMDISK:
    break;
    }
    nLength++;
    j=0;
    continue;
    }
    szTemp[j]=szBuffer[i];
    j++;
    } length = nLength;
    return 1;
    }
      

  4.   

    我以前用过WMI来实现:
    因为WMI可以用下面的方法查询出一个逻辑盘的归属:如Query: 
    ASSOCIATORS OF {Win32_LogicalDisk.DeviceID="C:"}
    WHERE RequiredAssocQualifier = Association
     
    Results:
    Win32_Directory.Name="C:\\"
    Win32_ComputerSystem.Name="mycomputer"
    Win32_DiskPartition.DeviceID="Disk #0, Partition #0" 
    只要将 DeviceID="C:" D: E: F:....... 下去就得到一个表格了。
    但是在VB了怎样调用WMI以及怎样获取返回的信息呢????上面的方法只能在Win2000/xp下工作,在win98呢?????????5555555关于WMI,在MSDN里面有。
    Platform SDK: Windows Management Instrumentation
      

  5.   

    TO: wltsui(前途未必光明, 道路一定曲折!) ,我的意思不是这样的。5555
      

  6.   

    想得到硬件ID之类的?罗大侠和邹大侠(?)的网站上现成的
    asm.yeah.net
      

  7.   

    我也在做此类问题,马上就可以解决A,B问题,但C还不知道怎么解决,相比之下应该C最容易解决