硬盘管理器

头文件 HardDiskManager.h :

#if _MSC_VER > 1000
#pragma once
#endif #include <windows.h> class CHardDiskManager
{
public:
CHardDiskManager();
virtual ~CHardDiskManager(); bool CheckFreeSpace(LPCTSTR lpDirectoryName); DWORD64 GetFreeBytesAvailable(void);
DWORD64 GetTotalNumberOfBytes(void);
DWORD64 GetTotalNumberOfFreeBytes(void); double GetFreeGBytesAvailable(void);
double GetTotalNumberOfGBytes(void);
double GetTotalNumberOfFreeGBytes(void); private:
ULARGE_INTEGER m_uliFreeBytesAvailable;
ULARGE_INTEGER m_uliTotalNumberOfBytes;
ULARGE_INTEGER m_uliTotalNumberOfFreeBytes;
};
_MSC_VER: 用来定义当前微软公司自己的编译器的主版本
MS VC++ 14.0 _MSC_VER = 1900 (Visual Studio 2015)
MS VC++ 12.0 _MSC_VER = 1800 (VisualStudio 2013)
MS VC++ 11.0 _MSC_VER = 1700 (VisualStudio 2012)
MS VC++ 10.0 _MSC_VER = 1600(VisualStudio 2010)
MS VC++ 9.0 _MSC_VER = 1500(VisualStudio 2008)
MS VC++ 8.0 _MSC_VER = 1400(VisualStudio 2005)
MS VC++ 7.1 _MSC_VER = 1310(VisualStudio 2003)
MS VC++ 7.0 _MSC_VER = 1300(VisualStudio .NET)
MS VC++ 6.0 _MSC_VER = 1200(VisualStudio 98)
MS VC++ 5.0 _MSC_VER = 1100(VisualStudio 97)
ULARGE_INTEGER:一个64位的无符号整型值

源文件 HardDiskManager.cpp :

// HardDiskManager.cpp

#include <afxwin.h>
#include "HardDiskManager.h" CHardDiskManager::CHardDiskManager()
{
m_uliFreeBytesAvailable.QuadPart = 0L;
m_uliTotalNumberOfBytes.QuadPart = 0L;
m_uliTotalNumberOfFreeBytes.QuadPart = 0L;
} CHardDiskManager::~CHardDiskManager()
{
} bool CHardDiskManager::CheckFreeSpace(LPCTSTR lpDirectoryName)
{
if( !GetDiskFreeSpaceEx(
lpDirectoryName,
&m_uliFreeBytesAvailable,
&m_uliTotalNumberOfBytes,
&m_uliTotalNumberOfFreeBytes) )
return false; return true;
} DWORD64 CHardDiskManager::GetFreeBytesAvailable(void)
{
return m_uliFreeBytesAvailable.QuadPart;
} DWORD64 CHardDiskManager::GetTotalNumberOfBytes(void)
{
return m_uliTotalNumberOfBytes.QuadPart;
} DWORD64 CHardDiskManager::GetTotalNumberOfFreeBytes(void)
{
return m_uliTotalNumberOfFreeBytes.QuadPart;
} double CHardDiskManager::GetFreeGBytesAvailable(void)
{
return (double)( (signed __int64)(m_uliFreeBytesAvailable.QuadPart)/ );
} double CHardDiskManager::GetTotalNumberOfGBytes(void)
{
return (double)( (signed __int64)(m_uliTotalNumberOfBytes.QuadPart)/ );
} double CHardDiskManager::GetTotalNumberOfFreeGBytes(void)
{
return (double)( (signed __int64)(m_uliTotalNumberOfFreeBytes.QuadPart)/ );
}

LPCTSTR用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。

DWORD全称Double Word,是指注册表的键值,每个word为2个字节的长度,DWORD 双字即为4个字节,每个字节是8位,共32位。

DWORD64 无符号整型值。

调用:

// HardDisk.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include <iostream>
#include "HardDiskManager.h"
#include <tchar.h> using namespace std; int main(int argc, char* argv[])
{
CHardDiskManager manager; manager.CheckFreeSpace(_T("c:"));
cout << "Drive C:\\" << endl;
cout << "FreeBytesAvailable: " << manager.GetFreeGBytesAvailable() << " GBytes. " << endl;
cout << "TotalNumberOfBytes: " << manager.GetTotalNumberOfGBytes() << " GBytes. " << endl;
cout << "TotalNumberOfFreeBytes: " << manager.GetTotalNumberOfFreeGBytes() << " GBytes. " << endl; manager.CheckFreeSpace(_T("d:"));
cout << "Drive D:\\" << endl;
cout << "FreeBytesAvailable: " << manager.GetFreeGBytesAvailable() << " GBytes. " << endl;
cout << "TotalNumberOfBytes: " << manager.GetTotalNumberOfGBytes() << " GBytes. " << endl;
cout << "TotalNumberOfFreeBytes: " << manager.GetTotalNumberOfFreeGBytes() << " GBytes. " << endl; return ;
}
基本翻译
abbr. 双字值(Double Word)
网络释义
DWORD: 双字节值

C++ 监测磁盘空间的更多相关文章

  1. Linux Shell之监测磁盘空间

    Linux Shell之监测磁盘空间 系统管理员的另一个重要任务就是监测系统磁盘的使用情况.不管运行的是简单Linux台式机还是大型的Linux服务器,我们都要知道还有多少空间可以留给应用程序.事实上 ...

  2. Linux系统下如何监测磁盘的使用空间

    不管是我们在安装软件还是监测软件的使用性能,我们都要随时掌握系统磁盘的使用情况. 使用df命令 df df命令用于显示磁盘分区上的可使用的磁盘空间.默认显示单位为KB.可以利用该命令来获取硬盘被占用了 ...

  3. zabbix监控windows磁盘空间

    监控windows磁盘空间,不是百分比. 当windows系统添加相应的windows模板后,会自动生成检测系统空间的监控项,在应用集(Filessystem)里面,Free disk space o ...

  4. 查看mac中磁盘空间占用情况

    今天发现磁盘空间不够了,首先要找到那些文件夹占用了磁盘空间. du命令很好使 du -c -d 1 -m | sort -n -c 显示当前文件夹总计占用空间 -d 1 层级为1,即只显示当前目录下一 ...

  5. Linux磁盘空间监控告警

    Linux系统中需要监控磁盘各分区的使用情况,避免由于各种突发情况,造成磁盘空间被消耗殆尽的情况,例如某个分区被Oracle的归档日志耗尽,导致后续的日志文件无法归档,这时ORACLE数据库就会出现错 ...

  6. SVN上传文件提示磁盘空间不足的问题

    SVN上传文件大于100M,提示:Commit failed (details follow):While preparing 'E:\AFCData\tjsc20db_table.sql' for ...

  7. 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)

    1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...

  8. 如何使用vmware-vdiskmanager增加磁盘空间

    VMware Virtual Disk Manager Usage: vmware-vdiskmanager.exe OPTIONS <disk-name> | <mount-poi ...

  9. tokudb引擎磁盘空间不足导致写入失败的调查

    故障现象 2016.1.1号早上4点左右,zabbi数据库服务器报警,写入数据失败.登陆机器后检查发现磁盘空间使用95%没有用满,进去zabbix数据库,执行insert命令提示错误“errir 10 ...

随机推荐

  1. su鉴定故障

    su切换用户鉴定故障 [yolo1@izqfsfqp8ejn9zz ~]$ su root密码:su: 鉴定故障[yolo1@izqfsfqp8ejn9zz ~]$ sudo root 我们信任您已经 ...

  2. wampserver 的Apache启动错误提示:The requested URL / was not found on this server.

    打开localhost显示以下错误 原因:之前我配置了虚拟主机,所以服务器是从虚拟环境访问的,localhost也就访问不到 解决方法:打开httpd.conf配置文件,将Include conf/e ...

  3. 提取位于<title>...</title>内的文本标题内容

    #vim title.txt <title>nhlinkin</title> # cat title.txt  | sed 's:.*<title>\([^< ...

  4. 监控 Linux 性能的 18 个命令行工具[转]

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...

  5. Spring Boot-JPA

    前文我们使用SPRING INITIALIZR快速构建了一个空的Spring Boot项目,并增加web模块实现了HTTP请求. 这一篇继续在该demo的基础上,增加JPA的功能. JPA全称Java ...

  6. Axure的中继器如何实现两个列表之间的交互

    Axure RP 8安装包+注册码+中文语言包下载地址如下: 链接: https://pan.baidu.com/s/1nwRnCUl 密码: yy36 将中文语言包下的lang文件夹直接放在安装Ax ...

  7. ABP官方文档翻译 3.5 规约

    规约 介绍 示例 创建规范类 使用仓储规约 组合规约 讨论 什么时候使用? 什么时候不使用? 介绍 规约模式是一种特别的软件设计模式,通过使用布尔逻辑将业务规则链接起来重新调配业务规则.(维基百科). ...

  8. 《Thinking in Java》学习笔记(一)

    服务器端的编程可以参考另一本书<企业Java编程>(Thinking in Enterprise Java). 1.基本类型 基本型别 大小 最小值 最大值  默认值 boolean -- ...

  9. 发送邮件的小功能(.net core 版)

    前言: 使用.net core 开发有一段时间了,期间从.net core 2.0 preview1 到 preview2 又到core 1.1 现在2.0正式版出来了.又把项目升级至2.0了.目前正 ...

  10. [LeetCode] 679. 24 Game(回溯法)

    传送门 Description You have 4 cards each containing a number from 1 to 9. You need to judge whether the ...