//磁盘分区的总容量(字节)=总簇数*每簇扇区数*每扇区字节数
//磁盘分区的空闲空间(字节)=空闲簇数*每簇扇区数*每扇区字节数
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. 取消layUI中日期选择控件默认填充日期

    input标签中使用日期选择控件填写,加载时默认填充当前日期, 标签设置了placeholder="请选择" autocomplete="off",但是并没有效 ...

  2. window.open 打开全屏窗口

    window.open新打开页面为全屏状态,各个浏览器情况不一致. window.open   弹出新窗口的命令:     'page.html'   弹出窗口的文件名:     'newwindow ...

  3. BZOJ.2616.SPOJ PERIODNI(笛卡尔树 树形DP)

    BZOJ SPOJ 直观的想法是构建笛卡尔树(每次取最小值位置划分到两边),在树上DP,这样两个儿子的子树是互不影响的. 令\(f[i][j]\)表示第\(i\)个节点,放了\(j\)个车的方案数. ...

  4. 2017-2018 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)

    A. Odd Palindrome 所有回文子串长度都是奇数等价于不存在长度为$2$的偶回文子串,即相邻两个字符都不同. #include<cstdio> #include<cstr ...

  5. python学习:删除空白

    删除空白   删除尾部空白 确保字符串尾部没有空白,使用rstrip(); 删除字符串开头的空白,使用lstrip(); 同时删除字符串两端的空白,使用strip() 代码: >>> ...

  6. 如何根据checkbox的值进行勾选!例:我要勾选value等于scanbuy,terminal的复选框!

    微商城 随手购 自助购 <div class="controls" id="client"> <input id="mall&quo ...

  7. Vue使用vue-echarts图表

    vue-echarts和echarts的区别: vue-echarts是封装后的vue插件, 基于 ECharts v4.0.1+ 开发,依赖 Vue.js v2.2.6+,功能一样的只是把它封装成v ...

  8. JavaScript Concurrency model and Event Loop 并发模型和事件循环机制

    原文地址:https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop JavaScript 有一个基于 event loop 的 ...

  9. python 读取文本文档中的数据

    import os dir = input('Please input the file dir:')#提示输入文件路径 while not os.path.exists(dir):#判断文件是否存在 ...

  10. 扫毒>>观后感

    观后感 中学时期,甚至在小学时期,那个很懵懂的年龄, 看了什么电影,去了哪里,都要写观后感. 那个时候觉得观后感很玄学,为啥看的电影都一样,去的地方都一样, 为啥人家的观后感貌似说的真的有那么点道理, ...