//磁盘分区的总容量(字节)=总簇数*每簇扇区数*每扇区字节数
//磁盘分区的空闲空间(字节)=空闲簇数*每簇扇区数*每扇区字节数
BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName,//指向所要获取磁盘空间信息的磁盘分区根路径字符串
LPDWORD lpSectorsPerCluster,//指向存储每簇扇区数的DWORD类型变量
LPDWORD lpBytesPerSector,//指向存储每扇区字节数的DWORD类型变量
LPDWORD lpNumberOfFreeClusters,//指向存储空闲簇的DWORD类型变量
LPDWORD lpTotalNumberOfClusters//指向存储总簇数的DWORD类型变量
);
/* **************************************************************
* BOOL GetDiskFreeSpaceEx
* 功能:
* 获取用户可用的空闲空间字节数、空闲空间的字节数、磁盘总容量的字节数
* 参数:
* LPCTSTR lpDirectoryName
* 指向所要获取磁盘空闲信息的磁盘分区根路径字符串
* PULARGE_INTEGER lpFreeBytesAvailable
* 指向用于存储可获得的总字节数量的变量,用户实际可用的空闲空间
* PULARGE_INTEGER lpTotalNumberOfBytes
* 指向存储磁盘空间总字节数据的变量
* PULARGE_INTEGER lpTotalNUmberOfFreeBytes
* 指向存储磁盘空闲空间总字节的变量
* 返回值:
* 返回BOOL值,表示信息获取是否成功
***************************************************************/
BOOL GetDiskFreeSpaceEx(
LPCTSTR lpDirectoryName,//指向所要获取磁盘空闲信息的磁盘分区根路径字符串
PULARGE_INTEGER lpFreeBytesAvailable,//指向用于存储可获得的总字节数量的变量
PULARGE_INTEGER lpTotalNumberOfBytes,//指向存储磁盘空间总字节数据的变量
PULARGE_INTEGER lpTotalNUmberOfFreeBytes//指向存储磁盘空闲空间总字节的变量
);

代码演示

#include <windows.h>
#include <stdio.h> /* **********************************************************************
* BOOL GetDiskSpaceInfo(LPCSTR pszDrive)
* 功能:根据输入的驱动器,获取磁盘总容量、空闲空间、簇数量等磁盘信息
* 参数:驱动器根路径,比如:“D:\”
***********************************************************************/
BOOL GetDiskSpaceInfo(LPCSTR pszDrive)
{
DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes;
DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters;
BOOL bResult; printf("%s\n", pszDrive); //使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
bResult = GetDiskFreeSpaceExA(
pszDrive,
(PULARGE_INTEGER)&qwFreeBytesToCaller,
(PULARGE_INTEGER)&qwTotalBytes,
(PULARGE_INTEGER)&qwFreeBytes
);
if(bResult)
{
printf("使用GetDiskFreeSpaceEx获取磁盘空间信息\n");
printf("可获得的空闲空间(字节):\t%I64d\n", qwFreeBytesToCaller);
printf("空闲空间(字节):\t\t%I64d\n", qwFreeBytes);
printf("磁盘总容量(字节):\t\t%I64d\n", qwTotalBytes);
}
//使用GetDiskFreeSpace获取磁盘信息并打印结果
bResult = GetDiskFreeSpaceA(
pszDrive,
&dwSectPerClust,
&dwBytesPerSect,
&dwFreeClusters,
&dwTotalClusters
);
if(bResult)
{
printf("\n使用GetDiskFreeSpace获取磁盘空间信息\n");
printf("空闲的簇数量:\t\t%d\n", dwFreeClusters);
printf("总簇数量:\t\t%d\n", dwTotalClusters);
printf("每簇的扇区数量:\t%d\n", dwSectPerClust);
printf("每扇区的容量(字节):\t%d\n", dwBytesPerSect);
printf("空闲空间(字节):\t%I64d\n",(DWORD64)dwFreeClusters*(DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);
printf("磁盘总容量(字节):\t%I64d\n",(DWORD64)dwTotalClusters*(DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);
}
return bResult;
} int main(void)
{
GetDiskSpaceInfo("c:");
return ;
}

windows程序设计 获取磁盘容量的更多相关文章

  1. C# 获取磁盘容量

    原文:C# 获取磁盘容量 /// 获取指定驱动器的空间总大小(单位为B) /// </summary> /// <param name="str_HardDiskName& ...

  2. Windows c(++)获取磁盘剩余容量

    头文件 #include <windows.h> #include <wtypes.h> 函数 GetDiskFreeSpaceExA 获取剩余可用空间 /// 得到盘符, 例 ...

  3. 使用HD/IDE层的ioctl接口获取磁盘容量get_hdd_max_sector

    利用HD/IDE layer的ioctl函数接口获取HD/IDE的磁盘容量.HDIO_DRIVE_TASK  能发出訪问LBA地址的命令.但不能读写数据. #include <stdio.h&g ...

  4. windows程序设计 获取系统文件路径

    获取系统文件路径,打印到txt文件中. #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hP ...

  5. windows程序设计 获取显示器分辨率

    我的显示器分辨率 /*--------------------------------------------------------------------------- scrsize.c -- ...

  6. windows程序设计获取文本框(窗口、对话框)文本

    就是这样一个简单的界面,窗口上重绘的对话框(这种写法参考我之前博文): 需要做到的就是点击确定,获取文本框中内容. // 处理对话框消息 INT_PTR CALLBACK NewDlgProc(HWN ...

  7. windows下C语言编程获取磁盘(分区)使用情况

    windows下编程获取磁盘(分区)使用情况 windows下编程获取磁盘(分区)使用情况 GetLogicalDriveStrings函数 使用示例 获取需要的缓冲区长度示例 获取所有驱动器号示例 ...

  8. 获取磁盘的 总容量,空余容量,已用容量 【windows】

    使用windows api 输入:盘符字符串 输出:磁盘容量 float get_disk_spaces(const char drive_letter, float & total_spac ...

  9. Windows Azure Virtual Machine (29) 修改Azure VM 数据磁盘容量

    <Windows Azure Platform 系列文章目录> 当我们使用Windows Azure管理界面,创建Azure虚拟机的时候,默认挂载的磁盘是固定大小的 1.比如我创建1个Wi ...

随机推荐

  1. Java设计模式之建造者模式(生成器模式)

    建造者模式: 也叫生成器模式.用来隐藏复合对象的创建过程,他把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象. 总结一句就是封装一个对象的构造过程,并允许按步骤构造 ...

  2. 对Spring运用的一些思考

    最近使用spring总是遇到启动时启动不起来,或者启动起来一会就服务就关闭掉. 停下来想想不是spring不好复杂,而是我对它掌握不够,再有就是使用要尽量规范 使用配置文件,dao.manager.s ...

  3. 使用mybatis assembly插件打成tar包,在linux系统中运行服务

    使用mybatis assembly插件打成tar包,在linux系统中运行服务 assembly插件插件地址: 链接:https://pan.baidu.com/s/1i6bWPxF 密码:gad5 ...

  4. Json.NET Performance Tips

    原文: http://www.newtonsoft.com/json/help/html/Performance.htm To keep an application consistently fas ...

  5. Node.js_密码明文_密文_加密库_sha1

    加密库 sha1 加密模块,能够将指定 明文 加密成一个长度相等的 密文 let pwd = 'qwe123456'; const secret = sha1(pwd); 同样的明文,加密得到同样的密 ...

  6. editplus注册码生成

    http://www.jb51.net/tools/editplus/ 主要JS代码: function generate_editplus_regcode() { var list = [0,493 ...

  7. C博客作业01--分支,顺序结构

    本章学习总结(2分) 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周初次接触C语言,一开始难度较大,很多代码都看不懂,书里面的章节要看很多遍.开始编写代码时也遇到很多困难 ...

  8. XP下ubuntu双系统安装方法

    利用u盘将iso刻录 从u盘启动 连续按alt+f2 进入ubuntu试用 打开终端 输入 sudo umount -l /cdrom sudo umount -l /isodevice 然后安装un ...

  9. c#重命名文件,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”

    修改远程服务器的文件名,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”,“System.NotSupportedExcept ...

  10. HtmlFilter实现Html标签转义过滤器

    HtmlUrlFilter: import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterC ...