gpt4 book ai didi

c++ - GetLogicalDrives 加上附加信息 C++

转载 作者:行者123 更新时间:2023-11-30 04:21:48 25 4
gpt4 key购买 nike

我的一个程序需要帮助,该程序可以提取系统上的可用驱动器并打印有关驱动器的各种信息。我正在使用 VC++,对 C++ 还很陌生,需要一些高级输入或来自经验丰富的程序员的示例代码。

这是我当前的源代码:

#include "stdafx.h"
#include Windows.h
#include stdio.h
#include iostream

using namespace std;

int main()
{
// Initial Dummy drive
WCHAR myDrives[] = L" A";

// Get the logical drive bitmask (1st drive at bit position 0, 2nd drive at bit position 1... so on)
DWORD myDrivesBitMask = GetLogicalDrives();

// Verifying the returned drive mask
if(myDrivesBitMask == 0)
wprintf(L"GetLogicalDrives() failed with error code: %d\n", GetLastError());
else {
wprintf(L"This machine has the following logical drives:\n");
while(myDrivesBitMask) {
// Use the bitwise AND with 1 to identify
// whether there is a drive present or not.
if(myDrivesBitMask & 1) {
// Printing out the available drives
wprintf(L"drive %s\n", myDrives);
}
// increment counter for the next available drive.
myDrives[1]++;
// shift the bitmask binary right
myDrivesBitMask >>= 1;
}
wprintf(L"\n");
}
system("pause");
}

`-这是输出-

This machine has the following logical drives:
drive C
drive D
drive E
drive F
drive G
drive H
drive I

我需要输出关于每个驱动器的额外信息(也许一个例子会在更短的时间内讲述这个故事):

驱动器 – C:\驱动类型:固定驱动就绪状态:True卷标:引导驱动器文件系统类型:NTFS免费空间:30021926912总驱动器大小:240055742464

驱动器 - D:\驱动类型:固定驱动就绪状态:True卷标:应用程序数据文件系统类型:NTFS可用空间:42462507008总驱动器大小:240054693888

我可以使用哪些方法、libs api 等来提取驱动器类型、驱动器状态、卷标、文件系统类型、可用空间和总驱动器大小?

*旁注,我注意到我的预处理器指令存在缺陷,特别是在标准 I/O 头文件中。我知道这不是使用 printf 的推荐方式,cout 是类型安全的并且是正确的路径,但我无法弄清楚如何在 cout 中格式化输出,就像在 wprintf(L"drive %s\n", myDrives);....那么你将如何使用 cout 来做到这一点??

提前致谢。

最佳答案

您想查看 GetVolumeInformation 等函数检索文件系统信息,例如可用空间和卷名。

GetDriveType将为您提供有关驱动器类型的一些基本信息,但 USB 拇指棒和闪存读取器可以提供令人惊讶的结果。

我不确定您所说的“就绪状态”是什么意思。如果您的意思是驱动器中是否有有效的卷,那么您可以尝试使用路径“\\.\C:”的 CreateFile 来尝试打开该卷。如果失败,则不存在卷(磁盘)。这将对 SD 卡读卡器有用。要在不出现错误对话框的情况下执行此操作,您需要先调用 SetErrorMode(SEM_NOOPENFILEERRORBOX)

关于c++ - GetLogicalDrives 加上附加信息 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com