问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 获取磁盘可用空间

发布网友 发布时间:2022-04-23 13:18

我来回答

5个回答

热心网友 时间:2023-08-17 22:03

给,在VC6上已经编译运行确认:

/*
* 获取硬盘分区序列号
* chen.brick@gmail.com 2007.5.28
*/
#include <string.h>
#include <stdio.h>
#include <windows.h>
int main() {
_ULARGE_INTEGER lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes;
DWORD serialNumber, maxComponentLength, fsFlags;
TCHAR szFileSystem[12];
TCHAR szVolumeName[24];
TCHAR szRoot[4] = "c:\\";//这里写上你需要获取的磁盘的分区

if (!GetVolumeInformation(
szRoot,
szVolumeName,
sizeof(szVolumeName),
&serialNumber,
&maxComponentLength,
&fsFlags,
szFileSystem,
sizeof(szFileSystem))) {
printf("Failed to retrieve drive information\n");
}
GetDiskFreeSpaceEx(szRoot, &lpFreeBytesAvailableToCaller, &lpTotalNumberOfBytes, &lpTotalNumberOfFreeBytes);
//根据MSDN的说明,如果分区大于2G一定要用GetDiskFreeSpaceEx

printf("卷标: %s$ %s\n分区类型: %s\n卷序列号: %04X-%04X\n",
szRoot,
szVolumeName,
szFileSystem,
serialNumber >> 16,
serialNumber & 0xFFFF
);
printf("分区总空间大小: %d MB\n",lpTotalNumberOfBytes.QuadPart / (1024 *1024));
printf("分区剩余空间大小: %d MB\n",lpTotalNumberOfFreeBytes.QuadPart / (1024 *1024));
printf("调用者可用的空间大小: %d MB\n",lpFreeBytesAvailableToCaller.QuadPart / (1024 *1024));
return(0);
}

热心网友 时间:2023-08-17 22:04

给,在VC6上已经编译运行确认:

/*
* 获取硬盘分区序列号
* chen.brick@gmail.com 2007.5.28
*/
#include <string.h>
#include <stdio.h>
#include <windows.h>
int main() {
_ULARGE_INTEGER lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes;
DWORD serialNumber, maxComponentLength, fsFlags;
TCHAR szFileSystem[12];
TCHAR szVolumeName[24];
TCHAR szRoot[4] = "c:\\";//这里写上你需要获取的磁盘的分区

if (!GetVolumeInformation(
szRoot,
szVolumeName,
sizeof(szVolumeName),
&serialNumber,
&maxComponentLength,
&fsFlags,
szFileSystem,
sizeof(szFileSystem))) {
printf("Failed to retrieve drive information\n");
}
GetDiskFreeSpaceEx(szRoot, &lpFreeBytesAvailableToCaller, &lpTotalNumberOfBytes, &lpTotalNumberOfFreeBytes);
//根据MSDN的说明,如果分区大于2G一定要用GetDiskFreeSpaceEx

printf("卷标: %s$ %s\n分区类型: %s\n卷序列号: %04X-%04X\n",szRoot,szVolumeName,szFileSystem,serialNumber >> 16,serialNumber & 0xFFFF );
printf("分区总空间大小: %d MB\n",lpTotalNumberOfBytes.QuadPart / (1024 *1024));
printf("分区剩余空间大小: %d MB\n",lpTotalNumberOfFreeBytes.QuadPart / (1024 *1024));
printf("调用者可用的空间大小: %d MB\n",lpFreeBytesAvailableToCaller.QuadPart / (1024 *1024));
return(0);
}

热心网友 时间:2023-08-17 22:04

核心代码片断:

ULARGE_INTEGER FreeBytesAvailable,TotalNumberOfBytes,TotalNumberOfFreeBytes;
GetDiskFreeSpaceEx(_T("E:"),&FreeBytesAvailable,&TotalNumberOfBytes,&TotalNumberOfFreeBytes);

热心网友 时间:2023-08-17 22:05

#include <dos.h>
#include <stdio.h>

int main(void)
{
struct dfree dfree;
getdfree(2, &dfree);

printf("%ld", (long)df_avail * df_bsec * df_sclus);
}

热心网友 时间:2023-08-17 22:05

用 GetDiskFreeSpace 函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
NBA下赛季常规赛MVP和总决赛MVP会是谁 吴前当选CBA常规赛MVP,他是实至名归吗? 如何申请安电表 如何申请独立电表 用电量大可以增加电表吗 出租他人铺面,原先房东已经安装过电表,因为用电量大,我想自己装电表可以... 梦见有个老人送佛画给我、让我在家供佛 ...分之一米还剩多少米如果截去四分之一还剩几分之几还剩多少米?_百度... 一根竹竿长四米,截去它的四分之三后,这根竹竿还剩全长的几分之几? ...这根绳子的几分之几后还剩下他的3/1,用去了( )m,还剩下( )_百度知... 如何在父页面上调用iframe子页面的js方法 批处理如何获取本机磁盘 用iframe嵌套一个网站,如何获取这个网站请求的数据并打印到控制台。_百... c++获取本地磁盘 layer的iframe层模式怎么实现子父通讯 获取磁盘文件系统和设备? 如何获取iframe标签中的内容 重装系统显示:“获取硬盘信息失败,请谨慎操作”是什么意思? 管理系统一般都是使用iframe吗,用它的优势和劣势在那里 一个页面上面很多iframe会有什么影响? “飞白”是白色的书体吗? 同一freamset中两个fream页面间怎样相互通信?其中一个fream页面需对另一个fream页面的DOM内容进行操作? 两个iframe之间怎么传值 飞白书的晏殊 如何获取iframe里面的数据 宋仁宗擅长的飞白书是什么?为什么后世很少提及? 一个iframe中嵌一个iframe之间如何通信 飞白的引证解释 飞白句。双关句 飞白的引申 iframe框架是如何传值 获取硬盘分区失败,可能缺少硬盘驱动是怎么回事? Google和百度哪个能抓取Iframe里的内容 弹出层遇到iframe怎么办 VB6中如何获取磁盘信息? jQuery如何在两个窗口间互谅通信? 获取硬盘分区失败,可能缺少硬盘驱动 javascript怎么获取iframe中的地址 vc++如何获取磁盘信息? JavaScript 怎么跨域获取 iframe 中的内容 为什么会获取硬盘信息失败的? HttpClient怎么获取到iframe中的内容 如何用C#获取磁盘名称? Java中如何获得某个磁盘(根目录)?比如C盘 iframe框架页面中弹出窗口如何使用JS回调? jquery,iframe父窗口怎么去拿子窗口的元素 Java如何获得硬盘剩余空间? 怎么在非管理员权限下获取磁盘分区所在物理硬盘号 请教:如何获得磁盘ID VC如何得到磁盘的剩余空间