1 // GetFreeDisk.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include <atlstr.h> 6 #include <iostream> 7 8 9 using namespace std; 10 bool CheckDiskSpeech() 11 { 12 ULARGE_INTEGER ulTotalSize; 13 ULARGE_INTEGER ulFreeSize; 14 ULARGE_INTEGER ulAvailLableSize; 15 16 CString csStr,strAvailableToCaller, strTotalSize, strFreeSize; 17 //csStr = g_strMediaPhoto.Left(3); 18 csStr = _T("D:\\"); 19 ::GetDiskFreeSpaceEx(csStr,&ulAvailLableSize,&ulTotalSize,&ulFreeSize); 20 strAvailableToCaller.Format(_T("%ldM"),ulFreeSize.QuadPart/1024/1024); //调用者可用的字节数量 21 strTotalSize.Format(_T("%ldM"),ulTotalSize.QuadPart/1024/1024); //用于容纳磁盘上的总字节数 22 strFreeSize.Format(_T("%ldM"),ulAvailLableSize.QuadPart/1024/1024); //用于容纳磁盘上可用的字节数 23 24 wcout << strAvailableToCaller << endl; 25 wcout << strTotalSize << endl; 26 wcout << strFreeSize << endl; 27 28 if (ulTotalSize.QuadPart / 1024 /1024 < 3000)//少于3000M 29 { 30 ::MessageBox(NULL, _T("磁盘空间不足"), _T("提示"), NULL); 31 return false; 32 } 33 return true; 34 } 35 36 int _tmain(int argc, _TCHAR* argv[]) 37 { 38 CheckDiskSpeech(); 39 system("pause"); 40 return 0; 41 }
以下来自百度
GetDiskFreeSpaceEx
VB声明
Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As LARGE_INTEGER, lpTotalNumberOfBytes As LARGE_INTEGER, lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long
说明
获取与一个磁盘的组织以及剩余空间容量有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRootPathName String,不包括卷名的磁盘根路径名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量
lpTotalNumberOfBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上的总字节数
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数
Windows 95 OSR2,Windows NT 4.0
注解
LARGE_INTEGER结构与FILETIME结构在内部完全一致。正式调用前,用GetVersionEx判断函数是否得到了支持。在Windows 95 OSR2环境中,OSVERSIONINFO结构的dwBuildNumbe字段会大于1000