Windows API一日一练GetDiskFreeSpaceEx函数

简介:

Windows API一日一练(62)GetDiskFreeSpaceEx函数

2009-09-30 16:31:24  阅读(34)  发表评论
  有一次客户给我打来了投诉电话,说我的软件太不好用了,导致他们丢失了很多数据。后来我仔细地查看LOG,分析出来的原因,其实是很简单的,就是磁盘的空间不够了。我给客户说他们的电脑磁盘空间不够了导致出错的问题,但客户反问我为什么不提示磁盘空间不足。是啊,为什么不提示磁盘的空间不足呢?为了解决这个需求,就需要使用到这个函数GetDiskFreeSpaceEx。
  函数GetDiskFreeSpaceEx声明如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
WINBASEAPI
BOOL
WINAPI
GetDiskFreeSpaceExA(
    __in_opt LPCSTR lpDirectoryName,
    __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
    __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
    __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
    );
WINBASEAPI
BOOL
WINAPI
GetDiskFreeSpaceExW(
    __in_opt LPCWSTR lpDirectoryName,
    __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
    __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
    __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
    );
#ifdef UNICODE
#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW
#else
#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA
#endif // !UNICODE
  lpDirectoryName是驱动器的名称。
  lpFreeBytesAvailableToCaller是用户可用的磁盘空间。
  lpTotalNumberOfBytes是磁盘总共的空间。
  lpTotalNumberOfFreeBytes是磁盘空闲的空间。以上都是字节为单位。
  调用函数的例子如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#001  //获取磁盘剩余空间。
#002  //蔡军生 2007/11/01 QQ:9073204 深圳
#003  void DiskFree(void)
#004  {
#005         //
#006         ULARGE_INTEGER nFreeBytesAvailable;
#007         ULARGE_INTEGER nTotalNumberOfBytes;
#008         ULARGE_INTEGER nTotalNumberOfFreeBytes;
#009         //
#010         if (GetDiskFreeSpaceEx(_T("C:"),
#011               &nFreeBytesAvailable,
#012               &nTotalNumberOfBytes,
#013               &nTotalNumberOfFreeBytes))
#014         {
#015               TCHAR chBuf[256];
#016               wsprintf(chBuf,_T("Av=%I64d,Total=%I64d,Free=%I64drn"),
#017                    nFreeBytesAvailable,
#018                    nTotalNumberOfBytes,
#019                    nTotalNumberOfFreeBytes);
#020               OutputDebugString(chBuf);
#021         }
#022  }



本文转自 bilinyee博客,原文链接:     http://blog.51cto.com/215363/955734     如需转载请自行联系原作者      
相关文章
|
8月前
|
人工智能 算法 数据格式
DeepSeek 开源周第二弹!DeepEP:专为 MoE 训练和推理设计的并行通信库
DeepEP 是 DeepSeek 开源的首个专为混合专家模型(MoE)训练和推理设计的通信库,支持高吞吐量、低延迟通信,优化 NVLink 和 RDMA 网络性能。
634 3
|
存储 开发框架 Java
libgdx ashley框架的讲解
本文介绍了libgdx游戏开发框架中的Ashley实体系统,包括如何引入依赖、创建实体、添加组件和系统,并通过代码示例演示了如何使用PooledEngine、Component、EntitySystem等核心类来构建游戏逻辑。
191 1
|
11月前
|
Docker 容器
docker 容器重启
【10月更文挑战第30天】docker 容器重启
2923 0
|
JavaScript 前端开发 API
vue3的传送门teleport究竟有多神奇?suspense发起异步请求有多简约?
该文章介绍了Vue3中新特性Teleport和Suspense的使用方法,演示了如何使用Teleport进行DOM节点的非父子关系传送,以及Suspense在处理异步组件加载时的优雅展示和错误处理技巧。
|
Web App开发 缓存 JavaScript
构建高效后端服务:Node.js与Express框架的完美结合
【9月更文挑战第11天】本文将引导开发者探索如何利用Node.js和Express框架搭建一个高效的后端服务。文章不仅深入讲解了这两个工具的核心概念,还通过实际示例展示了它们的强大功能和易用性。读者将学会如何处理HTTP请求、设计RESTful API以及优化应用性能。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识,帮助你在后端开发领域更进一步。
|
存储 人工智能 算法
70倍极致压缩!大模型的检查点再多也不怕
【8月更文挑战第27天】ExCP是一种新提出的框架,旨在解决大型语言模型(LLM)训练过程中计算和存储方面的挑战。该框架通过高效地压缩训练检查点,在显著减少存储需求的同时保持几乎无损的性能。ExCP首先计算相邻检查点间的残差以提取关键信息,并采用权重-动量联合收缩方法进一步去除冗余参数。此外,它还运用非均匀量化技术进一步压缩检查点存储。在不同规模的模型上测试显示,ExCP能大幅降低存储需求,如对Pythia-410M模型实现了70倍的压缩比,且保持了原始模型的准确性。ExCP的优势包括几乎无损的性能、广泛的适用性和高效的压缩算法。
295 2
|
开发工具 数据安全/隐私保护 git
git密码忘记
git密码忘记
776 0
|
存储 消息中间件 NoSQL
Timestone: Netflix 的高吞吐、低延迟优先级队列系统
Timestone: Netflix 的高吞吐、低延迟优先级队列系统
508 0
Timestone: Netflix 的高吞吐、低延迟优先级队列系统