Windows API一日一练(62)GetDiskFreeSpaceEx函数
来源:互联网 发布:彩虹六号网络要求 编辑:程序博客网 时间:2024/04/30 11:51
有一次客户给我打来了投诉电话,说我的软件太不好用了,导致他们丢失了很多数据。后来我仔细地查看LOG,分析出来的原因,其实是很简单的,就是磁盘的空间不够了。我给客户说他们的电脑磁盘空间不够了导致出错的问题,但客户反问我为什么不提示磁盘空间不足。是啊,为什么不提示磁盘的空间不足呢?为了解决这个需求,就需要使用到这个函数GetDiskFreeSpaceEx。
函数GetDiskFreeSpaceEx声明如下:
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是磁盘空闲的空间。以上都是字节为单位。
调用函数的例子如下:
#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=%I64d/r/n"),
#017 nFreeBytesAvailable,
#018 nTotalNumberOfBytes,
#019 nTotalNumberOfFreeBytes);
#020 OutputDebugString(chBuf);
#021 }
#022 }
- Windows API一日一练(62)GetDiskFreeSpaceEx函数
- Windows API一日一练
- Windows API一日一练
- Windows API一日一练(69)GetTickCount函数 计时函数
- Windows API一日一练(4)MessageBox函数
- Windows API一日一练(5)RegisterClass和RegisterClassEx函数
- Windows API一日一练(6)CreateWindow函数
- Windows API一日一练(7)ShowWindow函数
- Windows API一日一练(8)UpdateWindow函数
- Windows API一日一练(9)WindowProc和DefWindowProc函数
- Windows API一日一练(4)MessageBox函数
- Windows API一日一练(10)LoadAccelerators函数
- Windows API一日一练(11)GetMessage函数
- Windows API一日一练(12)TranslateAccelerator函数
- Windows API一日一练(13)TranslateMessage函数
- Windows API一日一练(14)DispatchMessage函数
- Windows API一日一练(15)PostQuitMessage函数
- Windows API一日一练(16)BeginPaint和EndPaint函数
- 十条快乐的理由
- 奥运金银鸟巢全国巡展
- 做IT的到底是白领还是蓝领?
- 如何更换及自制QQ皮肤?
- 裁员后的一封offer(三)
- Windows API一日一练(62)GetDiskFreeSpaceEx函数
- C#WinForm利用Web Service API查询数据库并显示到客户端
- 【转】CListCtrl 使用技巧(VC++)
- 走进Linux 操作系统(之一)
- 用协议分析工具学习TCP/IP
- 四年后最赚钱十大行业 网络编辑3G工程师入选
- 为GridView 加按钮列之后,(ButtonField)
- SQL Server中行转列问题
- javascript小技巧