获取磁盘容量—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';
使用Windows API获取磁盘容量
本文介绍了如何通过Windows API的GetDiskFreeSpace和GetDiskFreeSpaceEx函数获取磁盘的总容量和空闲空间。提供了相关的参数解释及示例代码。
682

被折叠的 条评论
为什么被折叠?



