#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, , sizeof(DRIVER));
unsigned _int64 i64FreeBytesToCaller;
unsigned _int64 i64TotalBytes;
unsigned _int64 i64FreeBytes;
TCHAR szTemp[] = { 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 = ;
break;
}
case DRIVE_CDROM:
{
// 光盘是2
dir.type = ;
break;
}
case DRIVE_REMOTE:
{
// 移动硬盘是3
dir.type = ;
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 / / );
dir.free = (double)(i64FreeBytesToCaller / 1024.0 / / );
}
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 ;
}

最新文章

  1. [AngularJS] AngularJS系列(6) 中级篇之ngResource
  2. WindowsForm菜单工具栏--2016年12月6日
  3. ToolkitScriptManager, ScriptManager AjaxControlToolkit 出错
  4. SAP 工厂日生产计划待排维护
  5. celery 学习笔记 01-介绍
  6. Java_一些特殊的关键字详(?)解
  7. php下使用phpmailer发送邮件
  8. C. Tavas and Karafs 二分查找+贪心
  9. LINUX 论文
  10. c#获取远程图片的方法
  11. 三、singleton(单例化)一个对象的几种方法
  12. 自定义VIew——漂亮的圆形进度条
  13. zabbix安装笔记
  14. 如何获得Android手机的软件安装列表
  15. windows下mysql免安装配置
  16. python开发流程及项目目录规范
  17. 【清北学堂2018-刷题冲刺】Contest 2
  18. 《HTTP 权威指南》笔记:第十四章 安全 HTTP
  19. leetcode python 006
  20. emwin 之变量定义位置

热门文章

  1. chartjs
  2. 【Js】单页面多个倒计时问题
  3. Java8 Collectors类的静态工厂方法
  4. Archer和ArcherUI配置说明
  5. [LeetCode] 359. Logger Rate Limiter 记录速率限制器
  6. 【Python学习之九】模块
  7. Spring boot使用Aspose.Slides操作ppt转PDF、转图片
  8. 【Python开发】【编程开发】各种系统的清屏操作命令
  9. SecureCRT 使用密钥登录 Ubuntu
  10. JAVA windows环境配置,jdk的安装配置