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     如需转载请自行联系原作者      
相关文章
|
23天前
|
监控 安全 Linux
Linux如何部署服务并设置为开机自启
系统ctl命令用于管理Linux服务,包括启动、停止、重启和重载配置等操作。journalctl命令可查看特定服务日志。编写服务文件时需定义[Unit]、[Service]和[Install]部分,通过systemctl管理新服务并设置开机自启。
192 14
|
7月前
|
XML 边缘计算 Cloud Native
Excelize 开源基础库发布 2.9.1 版本更新
Excelize 开源基础库发布 2.9.1 版本更新
158 4
|
9月前
|
前端开发 JavaScript API
如何快速学习React?
如何快速学习React?
244 1
|
8月前
Multisim14.0中文下载安装步骤教程
Multisim14.0是由美国NI公司开发的EDA工具,适用于电路设计与仿真。本文提供详细中文安装步骤:下载安装包后解压,运行安装程序并设置路径,填写用户信息,选择安装位置,接受协议完成安装。随后安装NILicense激活器及中文语言包,最终实现软件汉化与正常运行。附带网盘下载链接,方便国内用户获取资源。
3542 15
|
9月前
|
人工智能 自然语言处理 IDE
通义灵码 Visual Studio 终于支持模型切换
如需使用灵码模型选择,需要开发者将灵码 IDE 插件更新到最新版,前往下载安装包安装
678 0
通义灵码 Visual Studio 终于支持模型切换
|
运维 Prometheus 监控
特定用途的日志分析工具
【10月更文挑战第20天】
594 5
|
存储 网络协议 网络虚拟化
【计算机网络】简答题_考试必备
这份自学指南涵盖了计算机网络基础的重要概念,包括电路交换、分组交换、报文交换的特点,计算机网络分类及OSI七层模型等。第一章介绍了不同交换方式的特点及网络分类;第二章涉及奈失准则、香农公式及信道复用技术;第三章探讨数据链路层的问题及网络类型;第四章讲解虚电路与数据报服务及路由协议;第五章对比TCP与UDP协议特点,并介绍URL。此外,还详细分析了电路交换、报文交换和分组交换的优缺点,以及互联网发展的几个关键阶段和标准制定流程。通过这些章节的学习,读者可以全面了解计算机网络的基本原理和技术细节。
268 10
|
10月前
|
人工智能 算法 数据格式
DeepSeek 开源周第二弹!DeepEP:专为 MoE 训练和推理设计的并行通信库
DeepEP 是 DeepSeek 开源的首个专为混合专家模型(MoE)训练和推理设计的通信库,支持高吞吐量、低延迟通信,优化 NVLink 和 RDMA 网络性能。
861 3
|
存储 开发框架 Java
libgdx ashley框架的讲解
本文介绍了libgdx游戏开发框架中的Ashley实体系统,包括如何引入依赖、创建实体、添加组件和系统,并通过代码示例演示了如何使用PooledEngine、Component、EntitySystem等核心类来构建游戏逻辑。
247 1
|
运维 监控 安全
在Linux中,如何进行故障排查?
在Linux中,如何进行故障排查?