您可以使用QueryDosDevice
. 根据描述,您希望这会列出诸如C:
和之类的东西D:
,但它也会列出诸如之类的东西PhysicalDrive0
,PhysicalDrive1
等等。
主要缺点是它还会列出很多你可能不关心的其他设备名称,所以(例如)在我的机器上,我得到了一个包含近 600 个设备名称的列表,其中只有很小的百分比是与你关心的事情有关。
以防万一,一些(旧)示例代码:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <iostream>
int main(int argc, char **argv) {
char physical[65536];
char logical[65536];
if ( argc > 1) {
for (int i=1; i<argc; i++) {
QueryDosDevice(argv[i],logical, sizeof(logical));
std::cout << argv[i] << " : \t" << logical << std::endl << std::endl;
}
return 0;
}
QueryDosDevice(NULL, physical, sizeof(physical));
std::cout << "devices: " << std::endl;
for (char *pos = physical; *pos; pos+=strlen(pos)+1) {
QueryDosDevice(pos, logical, sizeof(logical));
std::cout << pos << " : \t" << logical << std::endl << std::endl;
}
return 0;
}
但是,如果我像 `devlist | grep "^Physical",它列出了物理驱动器。