[WinAPI] API 8 [获取磁盘空间信息]

简介:


 

 

获取磁盘分区的总容量和空闲空间的容量可以使用GetDiskFreeSpace函数或GetDiskFree SpaceEx函数。GetDiskFreeSpace使用DWORD类型作为输出参数,由于DWOR长度为32位,最大只能表示4GB,而一般的磁盘分区大小都大于4GB,所以,GetDiskFreeSpace并不直接返回磁盘的总容量和空闲空间的容量,而是使用总簇数、空闲的簇数、每簇的扇区数、每扇区的字节数来表示。用户在编程时,可以使用它们的乘积来获得最终结果。而GetDiskFreeSpaceEx使用ULARGE_INTEGER (DWORD64)类型的数据来存储磁盘空间总空间和剩余空间,所以可以直接获得结果。DWORD64可以表示约16777216TB的数据量(DWORD64最大可表示2^64Byte,lTB=2^40Byte)

 

(1)GetDiskFreeSpace

获取驱动器根路径作为输入,获取磁盘空间信息,包括每簇的扇区数,每扇区的字节数,簇数量,空闲的簇数量

参数:

lpRootPathName:输入参数

lpSectorsPerCluster:输出参数,指针,指向存储每簇扇区数的DWORD类型变量.

lpBytesPerSector:输出参数,指针,指向存储每扇区字节数的DWORD类型变量.

lpNumberOfFreeClusters:输出参数,指针,指向存储空闲簇的DWORD类型变量.

lpTotalNumberOfClusters:输出参数,指针,指向存储总簇数的DWORD类型变量.

返回值:

返回BOOL值,表示信息获取是否成功. 总簇数乘以每簇扇区数乘以每扇区字节数就是磁盘分区的总容量,空闲簇数乘以每簇扇区数,乘以每扇区字节数就是磁盘 分区的空闲空间容量.

 

GetDiskFreeSpaceEx

获取驱动器根路径作为输入,获取用户可用的空闲空间的字节数,磁盘总容量的字节数. 

参数:

lpDirectoryName:输入参数,指向所要获取磁盘空间信息的磁盘分区根路径字符串.

lpFreeBytesAvailable:输出参数,指针,指向用于存储可获得的总字节数量的变量.

lpTotalNumberOfBytes:输出参数,指针,指向存储磁盘空间总字节数据的变量.

lpTotalNumberOfFreeBytes:输出参数,指针,指向存储磁盘空闲空间总字节的变量.

返回值:

返回BOOL,表示信息获取是否成功 ULARGE_INTEGER类型数据可以直接强制转换为DWORD64类型变量.

 

关键数据结构:

GetDiskFreeSpaceEx函数使用了数据结构ULARGE_INTEGER,数据类型PULARGE_INTEGER是指向它的指针.

typedef union _ULARGE_INTEGER{

  struct{   

    DWORD LowPart;   

    DWORD HighPart;

  };

  struct{   

    DWORD LowPart;   

    DWORD HighPart;

  }U;

  ULONGLONG QuadPart;

}ULARGE_INTEGER,*PULARGE_INTEGER;

 

 

复制代码
 1 #include <windows.h>
 2 #include <stdio.h>
 3 
 4 /* ************************************
 5 * BOOL GetDiskSpaceInfo(LPCSTR pszDrive
 6 * 功能 根据输入的驱动器,获取磁盘总容量
 7 *    空闲空间、簇数量等磁盘信息
 8 * 参数 驱动器根路径,比如“D:\”。
 9 **************************************/
10 BOOL GetDiskSpaceInfo(LPCSTR pszDrive)
11 {
12     DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes;
13     DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters;
14     BOOL bResult;
15 
16     //使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
17     bResult = GetDiskFreeSpaceExA (pszDrive,
18         (PULARGE_INTEGER)&qwFreeBytesToCaller,
19         (PULARGE_INTEGER)&qwTotalBytes,
20         (PULARGE_INTEGER)&qwFreeBytes);
21 
22     if(bResult) 
23     {
24         printf("使用GetDiskFreeSpaceEx获取磁盘空间信息\n");
25         printf("可获得的空闲空间(字节): \t%I64d\n", qwFreeBytesToCaller);
26         printf("空闲空间(字节): \t\t%I64d\n", qwFreeBytes);
27         printf("磁盘总容量(字节): \t\t%I64d\n", qwTotalBytes);
28     }
29 
30     //使用GetDiskFreeSpace获取磁盘信息并打印结果
31     bResult = GetDiskFreeSpaceA (pszDrive, 
32         &dwSectPerClust, 
33         &dwBytesPerSect,
34         &dwFreeClusters, 
35         &dwTotalClusters);
36 
37     if(bResult) 
38     {
39         printf("\n使用GetDiskFreeSpace获取磁盘空间信息\n");
40         printf("空闲的簇数量 : \t\t\t%d\n",dwFreeClusters);
41         printf("总簇数量 : \t\t\t%d\n",dwTotalClusters);
42         printf("每簇的扇区数量 : \t\t%d\n",dwSectPerClust);
43         printf("每扇区的容量(字节): \t\t%d\n",dwBytesPerSect);
44         printf("空闲空间(字节): \t\t%I64d\n", 
45             (DWORD64)dwFreeClusters*
46             (DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);
47         printf("磁盘总容量(字节): \t\t%I64d",
48             (DWORD64)dwTotalClusters*
49             (DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);
50     }
51     return bResult;
52 }
53 
54 /* ************************************
55 * int main( int argc, PCHAR argv[] )
56 * 功能 应用程序主函数,根据输入参数
57 *    调用GetDiskSpaceInfo函数获取
58 *    磁盘空间信息
59 * 参数 驱动器根路径,比如“D:\”。
60 **************************************/
61 int main(int argc, PCHAR argv[])
62 {
63     GetDiskSpaceInfo (argv[1]);
64 }
复制代码

 



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3585605.html,如需转载请自行联系原作者

相关文章
|
3月前
|
JSON 搜索推荐 API
抖音商品详情API接口:获取商品信息的指南
抖音商品详情API接口由抖音开放平台提供,允许第三方应用访问抖音小店的商品数据,包括基本信息、价格、库存及用户评价等。其优势在于数据实时性、自动化处理、市场分析及个性化推荐。通过注册账号、获取API密钥、阅读文档和构建请求,用户可高效获取商品信息,提升运营效率。未来,该接口将在电商领域发挥更大作用。
|
4月前
|
JSON API 开发工具
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
|
2天前
|
缓存 算法 API
查询域名WHOIS信息免费API接口教程
该API用于查询顶级域名的WHOIS信息,不支持国别域名和中文域名。通过POST或GET请求,需提供用户ID、KEY及待查询域名。返回信息包括域名状态、注册商、时间等详细数据。示例与文档见官网。
|
4月前
|
API Python
【Azure Developer】AAD API如何获取用户“Block sign in”信息(accountEnabled)
【Azure Developer】AAD API如何获取用户“Block sign in”信息(accountEnabled)
|
21天前
|
JSON 数据挖掘 API
电商信息指南:API接口淘宝关键词、店铺所有商品获取
要获取淘宝关键词商品数据和店铺所有商品的API接口,需先注册淘宝开放平台账号并创建应用,获取API密钥。接着,使用密钥获取访问令牌,详细阅读API文档,构造并发送API请求,解析响应数据。特别地,使用`item_search_shop`接口可获取店铺内所有商品信息。
|
2月前
|
JSON 安全 API
抖音店铺商品信息的 API
抖音店铺商品信息的 API 主要用于获取商品的详细信息,包括基本信息、属性、库存、评价、推广信息等。开发者需注册账号、申请权限、阅读文档、发送请求并处理响应。此外,还提供商品搜索和管理接口,帮助商家优化商品展示和管理订单,提高运营效率。使用时需遵守平台规则,确保数据安全和合法性。
|
2月前
|
Prometheus 监控 Cloud Native
调用淘宝 API 时如何处理错误信息?
调用淘宝API时,需熟悉其错误码体系,处理客户端(如参数错误、权限不足)和服务器(如内部错误、网络问题)错误,编写错误处理逻辑,并进行充分测试与监控,确保API调用稳定可靠。
|
22天前
|
编解码 API 数据库
商品详情 API 接口的返回结果通常包含哪些信息?
商品详情API接口返回的信息涵盖多个方面,主要包括商品基本信息(ID、标题、图片、价格、库存、SKU)、详细描述与规格参数、销售与评价信息(销量、好评率、评价内容、促销活动)、物流与售后信息(发货地、运费模板、退换货政策、保修期限)及店铺信息(ID、名称、评分)和关联推荐信息(相似商品、搭配商品)。这些信息有助于用户全面了解商品并做出购买决策。
|
25天前
|
Java 测试技术 API
如何利用 1688 API 接口获取商品信息?
利用 1688 API 获取商品信息的步骤包括:注册开发者账号并创建应用,申请 API 权限,获取 API 密钥,了解 API 文档,编写代码调用 API,并进行测试与调试。最终在生产环境中上线应用,确保合法合规使用。
|
2月前
|
监控 供应链 搜索推荐
获取店铺商品信息的 API 接口有哪些?
本文介绍了五个常用的电商平台获取店铺商品信息的 API 接口:淘宝、京东、1688、拼多多和慢慢买。每个接口的功能、使用方式及优势各不相同,涵盖商品详情、价格、销量、库存等信息,适用于商品分析、竞品分析、价格监控等场景,帮助商家提升业务效率和市场竞争力。