WindowsAPI 获取磁盘容量

使用Windows API获取磁盘容量
本文介绍了如何通过Windows API的GetDiskFreeSpace和GetDiskFreeSpaceEx函数获取磁盘的总容量和空闲空间。提供了相关的参数解释及示例代码。

获取磁盘容量—WindowsAPI

//磁盘分区的总容量(字节)=总簇数每簇扇区数每扇区字节数
//磁盘分区的空闲空间(字节)=空闲簇数每簇扇区数每扇区字节

GetDiskFreeSpace

API链接: link.

BOOL GetDiskFreeSpace(
LPCTSTR lpRootPathName,
//指向所要获取磁盘空间信息的磁盘分区根路径字符串
LPDWORD lpSectorsPerCluster,
//指向存储每簇扇区数的DWORD类型变量
LPDWORD lpBytesPerSector,
//指向存储每扇区字节数的DWORD类型变量
LPDWORD lpNumberOfFreeClusters,
//指向存储空闲簇的DWORD类型变量
LPDWORD lpTotalNumberOfClusters
//指向存储总簇数的DWORD类型变量
);

GetDiskFreeSpaceEx

API链接: link.
BOOL GetDiskFreeSpaceEx(
LPCTSTR lpDirectoryName,
//指向所要获取磁盘空闲信息的磁盘分区根路径字符串
PULARGE_INTEGER lpFreeBytesAvailable,
//指向用于存储可获得的总字节数量的变量
PULARGE_INTEGER lpTotalNumberOfBytes,
//指向存储磁盘空间总字节数据的变量
PULARGE_INTEGER lpTotalNUmberOfFreeBytes
//指向存储磁盘空闲空间总字节的变量
);

示例代码

#include <Windows.h>
#include <stdio.h>

int main()
{
	BOOL bResult;
	//           簇
	DWORD dwTotalClusters;
	DWORD dwFreeClusters;
	//      扇区
	DWORD dwSectPerClust;
	DWORD dwBytesPerSect;

	bResult = GetDiskFreeSpace(TEXT("C:"),&dwSectPerClust,&dwBytesPerSect,&dwFreeClusters,&dwTotalClusters);
	if(bResult)
	{
		printf("\n使用GetDiskFreeSpace获取磁盘空间信息\n");
		printf("总簇数量: \t\t\t%d\n", dwTotalClusters);
		printf("空闲的簇数量: \t\t\t%d\n", dwFreeClusters);
		printf("每簇的扇区数量: \t\t%d\n", dwSectPerClust);
		printf("每扇区字节数: \t\t\t%d\n", dwBytesPerSect);
		printf("磁盘总容量:\t\t\t%I64d\n", (DWORD64)dwTotalClusters * (DWORD64)dwSectPerClust * (DWORD64)dwBytesPerSect);
		printf("磁盘空闲容量:\t\t\t%I64d\n", (DWORD64)dwFreeClusters * (DWORD64)dwSectPerClust * (DWORD64)dwBytesPerSect);
	}

	printf("\n\n");
	
	DWORD64 qwFreeBytes, qwFreeBytesToCaller, qwTotalBytes;
	bResult = GetDiskFreeSpaceEx(TEXT("C:"),
		(PULARGE_INTEGER)&qwFreeBytesToCaller,
		(PULARGE_INTEGER)&qwTotalBytes,
		(PULARGE_INTEGER)&qwFreeBytes);
	if(bResult)
	{
		printf("\n使用GetDiskFreeSpaceEx获取磁盘空间信息\n");
		printf("磁盘总容量:\t\t\t%I64d\n", qwTotalBytes);
		printf("可用的磁盘空闲容量:\t\t%I64d\n", qwFreeBytes);
		printf("磁盘空闲容量:\t\t\t%I64d\n", qwFreeBytesToCaller);
	}

	system("pause");
	return 0;
}
var foo = 'bar';
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值