[c++] 获取磁盘信息(磁盘驱号和内存使用情况) 您所在的位置:网站首页 硬盘驱动器怎么用 [c++] 获取磁盘信息(磁盘驱号和内存使用情况)

[c++] 获取磁盘信息(磁盘驱号和内存使用情况)

2024-02-28 00:24| 来源: 网络整理| 查看: 265

VS2017 使用Unicode 字符集写的一个例子---获取磁盘标号,大小,使用情况。

GetDriveType

头文件在“winbase.h"

判断一个磁盘驱动器的类型,返回值long,如果不能识别,则返回0.若是指定目录不存在,则返回1,如执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM 或 DRIVE_RAMDISK

函数原型如下:

UINT GetDriveType(

LPCTSTR lpRootPathName // root directory

);

参数说明: lpRootPathName 包含了根目录路径的字符串指针

返回值

DRIVE_UNKNOWN 未知的磁盘类型

DRIVE_NO_ROOT_DIR 说明lpRootPathName是无效的

DRIVE_REMOVABLE 可移动磁盘

DRIVE_FIXED 固定磁盘

DRIVE_REMOTE 网络磁盘

DRIVE_CDROM 光驱

DRIVE_RAMDISK 为RAM

GetLogicalDriveStrings,获取一个字串,其中包含了当前所有逻辑驱动器的根驱动器路径。

函数原型如下: DWORD GetLogicalDriveStrings( DWORD nBufferLength, LPTSTR lpBuffer); 参数: nBufferLength: 指向的内存空间的大小,以字节为单位。 lpBuffer: 指向存储返回结果字符串的内存空间 返回值: 函数的返回值指明了函数调用是否成功,如果成功则返回缓冲区中返回结果的总长度;如果返回值大于nBufferLength,说明给定的缓冲区大小不够,返回值是实际需要的大小;如果返回0,则说明函数运行出错。 说明: 函数调用成功后,将在缓冲区中依次填入本机所具有的驱动器根路径字符串,假如系统中有4个逻辑驱动器“C:\”、“D:\”、“E:\”,“F:\”。执行后在缓冲区中的结果如下: 0x43 0x3a 0x5c 0x00 0x44 0x3a 0x5c 0x000x45 0x3a 0x5c 0x00 0x46 0x3a 0x5c 0x00 0x00

即连续存放了“C:\”、“D:\”、“E:\”,“F:\”这4个字符串。

注意:会在每个字符串后加一个‘\0’结束符,在所有卷标字符串的最后在加一个结束符)。

GetDiskFreeSpaceEx

#ifdef UNICODE---GetDiskFreeSpaceExW

#else---GetDiskFreeSpaceExA

在vs中函数原型如下:

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     );

lpDirectoryName是驱动器的名称。

lpFreeBytesAvailableToCaller是用户可用的磁盘空间。

lpTotalNumberOfBytes是磁盘总共的空间。

lpTotalNumberOfFreeBytes是磁盘空闲的空间。以上都是字节为单位。

. cpp

#include #include #include #define GB(x) (x.HighPart > 20) / 1024.0 using namespace std; int main() { ULARGE_INTEGER freeBytesAvailableToCaller; ULARGE_INTEGER totalNumberOfBytes; ULARGE_INTEGER totalNumberOfFreeBytes; int totalOfGB, freeOfGB, useOfGB; string drive_cout, drive_index, total_size, free_size; DWORD drive_info = GetLogicalDrives(); //获取主机中所有的逻辑驱动器字母,以BitMap的形式返回 char driver_info_buf[MAX_PATH] = { 0 }; _itoa_s(drive_info, driver_info_buf, 2); int m_driverCount = 0; while (drive_info) { if (drive_info & 1) { m_driverCount++; } drive_info >>= 1; } cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有