#include <stdio.h> #include <windows.h> typedef struct tagdriver { // (1)磁盘盘符 wchar_t disk; // (2)磁盘总的大小 double all; // (3)磁盘可用空间 double free; // (4)磁盘类型(是光盘、硬盘、还是移动硬盘) int type; }driver; void getdrivers() { bool fresult; // 定义 磁盘消息结构体 driver dir; // 遍历磁盘 for (wchar_t d = 'a'; d <= 'z'; d++) { // 磁盘消息结构体清0 memset(&dir, 0, sizeof(driver)); unsigned _int64 i64freebytestocaller; unsigned _int64 i64totalbytes; unsigned _int64 i64freebytes; tchar sztemp[3] = { d, ':', '\0' }; // 获取磁盘类型 uint utype = getdrivetypew(sztemp); // drive_unknown 无法确定驱动器类型。 // drive_no_root_dir 根路径无效; 例如,指定路径上没有安装卷。 // drive_removable 驱动器有可移动介质; 例如,软盘驱动器,拇指驱动器或闪存卡读卡器。 // drive_fixed 驱动器有固定的媒体; 例如,硬盘驱动器或闪存驱动器。 // drive_remote 该驱动器是远程(网络)驱动器。 // drive_cdrom 该驱动器是一个cd-rom驱动器。 // drive_ramdisk 驱动器是ram磁盘。 switch (utype) { case drive_fixed: { // 硬盘是1 dir.type = 1; break; } case drive_cdrom: { // 光盘是2 dir.type = 2; break; } case drive_remote: { // 移动硬盘是3 dir.type = 3; break; } default: { continue; } } // getdiskfreespaceex获取与一个磁盘的组织以及剩余空间容量有关的信息 fresult = getdiskfreespaceex(sztemp, (pularge_integer)&i64freebytestocaller, (pularge_integer)&i64totalbytes, (pularge_integer)&i64freebytes); // 盘符 dir.disk = d; if (fresult) { dir.all = (double)(i64totalbytes / 1024.0 / 1024 / 1024); dir.free = (double)(i64freebytestocaller / 1024.0 / 1024 / 1024); } else { dir.all = 0.0; dir.free = 0.0; } printf("%c盘:共%.2fgb, 可用%.2fgb, 磁盘类型:%d\n", dir.disk, dir.all, dir.free, dir.type); } } int main() { getdrivers(); getchar(); return 0; }
以上就是c++遍历磁盘驱动器的示例代码的详细内容,更多关于c++遍历磁盘驱动器的资料请关注移动技术网其它相关文章!
发表评论