基于visual c++之windows核心编程代码分析(13)获取磁盘可用空间信息

本文介绍了如何通过Windows核心编程获取磁盘可用空间信息的代码实现,包括使用GetDiskFreeSpaceEx和GetDiskFreeSpace函数,并提供了详细的注释解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在进行Windows核心编程,经常要用到获取磁盘可用空间信息。我们来亲自编程实践获取磁盘可用空间信息,请见代码实现与注释讲解

 

/* 头文件 */
#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;
	
	//使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
	bResult = GetDiskFreeSpaceEx (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 = GetDiskFreeSpace (pszDrive, 
		&dwSectPerClust, 
		&dwBytesPerSect,
		&dwFreeClusters, 
		&dwTotalClusters);

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

/* ************************************
 * int main( int argc, PCHAR argv[] )
 * 功能	应用程序主函数,根据输入参数
 *			调用GetDiskSpaceInfo函数获取
 *			磁盘空间信息
 * 参数	驱动器根路径,比如“D:\”。
 **************************************/
int main(int argc, PCHAR argv[])
{
	GetDiskSpaceInfo (argv[1]);
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值