2012-01-11 2 views
3

Можно создать дубликат:
How to list physical disks?Listing физические диски установлены на моем компьютере

Что такое "лучший способ" (быстрый) C++ способ Список физических дисков, установленных на моем компьютере? Есть ли библиотека ускорения для этого?

+1

Итак, только повышение? какие библиотеки вы разрешаете использовать? какая операционная система? –

+0

Какая ОС вы используете? – Cyclonecode

+0

@ Mr.TAMER Windows - это система, над которой я работаю, повышение - это предпочтительный способ, но другие в случае, если boost не делает, это тоже будет принято. – smallB

ответ

11

использовать GetLogicalDriveStrings() для извлечения всех доступных логических дисков.

#include <windows.h> 
#include <stdio.h> 


DWORD mydrives = 100;// buffer length 
char lpBuffer[100];// buffer for drive string storage 

int main() 
{ 
     DWORD test = GetLogicalDriveStrings(mydrives, lpBuffer); 

     printf("The logical drives of this machine are:\n\n"); 

     for(int i = 0; i<100; i++) printf("%c", lpBuffer[i]); 


     printf("\n"); 
     return 0; 
} 

GetLogicalDrives() или использовать

#include <windows.h> 
#include <direct.h> 
#include <stdio.h> 
#include <tchar.h> 

// initial value 
TCHAR szDrive[ ] = _T(" A:"); 

int main() 
{ 
    DWORD uDriveMask = GetLogicalDrives(); 
    printf("The bitmask of the logical drives in hex: %0X\n", uDriveMask); 
    printf("The bitmask of the logical drives in decimal: %d\n", uDriveMask); 
    if(uDriveMask == 0) 
     printf("\nGetLogicalDrives() failed with failure code: %d\n", GetLastError()); 
    else 
    { 
     printf("\nThis machine has the following logical drives:\n"); 
    while(uDriveMask) 
    {// use the bitwise AND, 1–available, 0-not available 
    if(uDriveMask & 1) 
     printf("%s\n",szDrive); 
    // increment... 
    ++szDrive[1]; 
     // shift the bitmask binary right 
     uDriveMask >>= 1; 
    } 
    printf("\n "); 
    } 
    return 0; 
} 
0

Одна возможность заключается в использовании WMI для перечисления экземпляров Win32_DiskDrive.

Смежные вопросы