C语言 获取磁盘可用空间
推荐于2017-09-14
展开全部
给,在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);
}
/*
* 获取硬盘分区序列号
* 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);
}
展开全部
给,在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);
}
/*
* 获取硬盘分区序列号
* 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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-12-08 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
核心代码片断:
ULARGE_INTEGER FreeBytesAvailable,TotalNumberOfBytes,TotalNumberOfFreeBytes;
GetDiskFreeSpaceEx(_T("E:"),&FreeBytesAvailable,&TotalNumberOfBytes,&TotalNumberOfFreeBytes);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-08-26
展开全部
#include <dos.h>
#include <stdio.h>
int main(void)
{
struct dfree dfree;
getdfree(2, &dfree);
printf("%ld", (long)df_avail * df_bsec * df_sclus);
}
#include <stdio.h>
int main(void)
{
struct dfree dfree;
getdfree(2, &dfree);
printf("%ld", (long)df_avail * df_bsec * df_sclus);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 GetDiskFreeSpace 函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询