获取与一个磁盘的组织以及剩余空间容量有关的信息以及代码测试

 
 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 }
View Code
 
以下来自百度
 
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
原文地址:https://www.cnblogs.com/lisuyun/p/3627097.html