C++ 监测磁盘空间
硬盘管理器
头文件 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: 用来定义当前微软公司自己的编译器的主版本
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 ;
}
C++ 监测磁盘空间的更多相关文章
- Linux Shell之监测磁盘空间
Linux Shell之监测磁盘空间 系统管理员的另一个重要任务就是监测系统磁盘的使用情况.不管运行的是简单Linux台式机还是大型的Linux服务器,我们都要知道还有多少空间可以留给应用程序.事实上 ...
- Linux系统下如何监测磁盘的使用空间
不管是我们在安装软件还是监测软件的使用性能,我们都要随时掌握系统磁盘的使用情况. 使用df命令 df df命令用于显示磁盘分区上的可使用的磁盘空间.默认显示单位为KB.可以利用该命令来获取硬盘被占用了 ...
- zabbix监控windows磁盘空间
监控windows磁盘空间,不是百分比. 当windows系统添加相应的windows模板后,会自动生成检测系统空间的监控项,在应用集(Filessystem)里面,Free disk space o ...
- 查看mac中磁盘空间占用情况
今天发现磁盘空间不够了,首先要找到那些文件夹占用了磁盘空间. du命令很好使 du -c -d 1 -m | sort -n -c 显示当前文件夹总计占用空间 -d 1 层级为1,即只显示当前目录下一 ...
- Linux磁盘空间监控告警
Linux系统中需要监控磁盘各分区的使用情况,避免由于各种突发情况,造成磁盘空间被消耗殆尽的情况,例如某个分区被Oracle的归档日志耗尽,导致后续的日志文件无法归档,这时ORACLE数据库就会出现错 ...
- SVN上传文件提示磁盘空间不足的问题
SVN上传文件大于100M,提示:Commit failed (details follow):While preparing 'E:\AFCData\tjsc20db_table.sql' for ...
- 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)
1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...
- 如何使用vmware-vdiskmanager增加磁盘空间
VMware Virtual Disk Manager Usage: vmware-vdiskmanager.exe OPTIONS <disk-name> | <mount-poi ...
- tokudb引擎磁盘空间不足导致写入失败的调查
故障现象 2016.1.1号早上4点左右,zabbi数据库服务器报警,写入数据失败.登陆机器后检查发现磁盘空间使用95%没有用满,进去zabbix数据库,执行insert命令提示错误“errir 10 ...
随机推荐
- su鉴定故障
su切换用户鉴定故障 [yolo1@izqfsfqp8ejn9zz ~]$ su root密码:su: 鉴定故障[yolo1@izqfsfqp8ejn9zz ~]$ sudo root 我们信任您已经 ...
- wampserver 的Apache启动错误提示:The requested URL / was not found on this server.
打开localhost显示以下错误 原因:之前我配置了虚拟主机,所以服务器是从虚拟环境访问的,localhost也就访问不到 解决方法:打开httpd.conf配置文件,将Include conf/e ...
- 提取位于<title>...</title>内的文本标题内容
#vim title.txt <title>nhlinkin</title> # cat title.txt | sed 's:.*<title>\([^< ...
- 监控 Linux 性能的 18 个命令行工具[转]
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...
- Spring Boot-JPA
前文我们使用SPRING INITIALIZR快速构建了一个空的Spring Boot项目,并增加web模块实现了HTTP请求. 这一篇继续在该demo的基础上,增加JPA的功能. JPA全称Java ...
- Axure的中继器如何实现两个列表之间的交互
Axure RP 8安装包+注册码+中文语言包下载地址如下: 链接: https://pan.baidu.com/s/1nwRnCUl 密码: yy36 将中文语言包下的lang文件夹直接放在安装Ax ...
- ABP官方文档翻译 3.5 规约
规约 介绍 示例 创建规范类 使用仓储规约 组合规约 讨论 什么时候使用? 什么时候不使用? 介绍 规约模式是一种特别的软件设计模式,通过使用布尔逻辑将业务规则链接起来重新调配业务规则.(维基百科). ...
- 《Thinking in Java》学习笔记(一)
服务器端的编程可以参考另一本书<企业Java编程>(Thinking in Enterprise Java). 1.基本类型 基本型别 大小 最小值 最大值 默认值 boolean -- ...
- 发送邮件的小功能(.net core 版)
前言: 使用.net core 开发有一段时间了,期间从.net core 2.0 preview1 到 preview2 又到core 1.1 现在2.0正式版出来了.又把项目升级至2.0了.目前正 ...
- [LeetCode] 679. 24 Game(回溯法)
传送门 Description You have 4 cards each containing a number from 1 to 9. You need to judge whether the ...