C++使用Windows SDK获取系统分区大小以及使用情况,代码如下:
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdint.h>
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
void TestDrive()
{
cout << "TestDrive" << endl;
char* lpDrives = (char *)malloc(MAX_PATH * sizeof(char ));
memset(lpDrives, 0, MAX_PATH * sizeof (char));
DWORD dwLen = ::GetLogicalDriveStringsA(MAX_PATH, lpDrives);
cout << "dwLen: " << dwLen << endl;
DWORD driver_number = dwLen / 4;
cout << "driver_number: " << driver_number << endl;
string driver;
LPTSTR start;
for (DWORD nIndex = 0; nIndex < driver_number; nIndex++)
{
start = lpDrives + nIndex * 4;
cout << "........................................." << endl;
driver.append(start);
cout << "lpDrives + nIndex * 4: " << lpDrives + nIndex * 4 << endl;
cout << "DRIVE_REMOVABLE: " << DRIVE_REMOVABLE << endl;
cout << "::GetDriveType(lpDrives + nIndex * 4): " << :: GetDriveType(lpDrives + nIndex * 4) << endl;
if (::GetDriveType (start) == DRIVE_REMOVABLE)
{
driver.append(start);
if (GetVolumeInformation (start, 0, 0, 0, 0, 0, 0, 0)) //判断驱动是否准备就绪
{
cout << "驱动准备就绪 " << endl;
}
}
uint64_t lpFreeBytesAvailable = 0;
uint64_t lpTotalNumberOfBytes = 0;
uint64_t lpTotalNumberOfFreeBytes = 0;
GetDiskFreeSpaceExA(lpDrives + nIndex * 4,
(PULARGE_INTEGER)&lpFreeBytesAvailable,
(PULARGE_INTEGER)&lpTotalNumberOfBytes,
(PULARGE_INTEGER)&lpTotalNumberOfFreeBytes);
cout << "lpFreeBytesAvailable: " << lpFreeBytesAvailable << endl;
cout << "lpTotalNumberOfBytes: " << lpTotalNumberOfBytes << endl;
cout << "lpTotalNumberOfFreeBytes: " << lpTotalNumberOfFreeBytes << endl;
}
std::cout << "driver: " << driver << endl;
}
int main(int argc, char *argv[])
{
TestDrive();
return 0;
}
本文为“技术点滴”的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。