请问怎样获得驱动器的盘符?请给出源代码

解决方案 »

  1.   

    好象是 
    GetDriver
    GetDriverString
    你搜搜MSDN。
      

  2.   

    CString CMYApp::GetDriveStringT()
    {
    CHAR SysDir[128]=_T("");
    int strLen=0;
    CString strSysDir = "";
    strLen=GetLogicalDriveStrings(sizeof(SysDir),SysDir);
    if(strLen!=0)
    {
    for(int i=0;i<strLen;i++)
    {
    if(SysDir[i]=='\0')
    SysDir[i]='+';
    }
    }
    strSysDir.Format("%s",SysDir);
    if(strSysDir.Right(1) == "+")
    strSysDir = strSysDir.Left(strSysDir.GetLength() - 1);
    return strSysDir;
    }返回的值类似于这样:
    "A:\+C:\+D:\+E:\+F:\"
      

  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.   

    CStringArray oaDisk;
        int i;
        unsigned int type=3; //驱动器类型,3表硬盘
        DWORD diskbyte=GetLogicalDrives();
    CFileFind cfFind;
    if(diskbyte==0)
    {
    return "没有盘";
    } char iCount='A'-1;
    while(diskbyte)
    {
    iCount++;
    if(GetDriveType(CString(iCount)+":\\")==type)
    oaDisk.Add(CString(iCount)+":\\");
    diskbyte>>=1;
    }
    //
    执行完毕后,oaDisk中保存的就是所有驱动器的盘符