2013-03-10 144 views
0

如何在Windows上使用C++/Qt框架获取当前计算机上所有硬盘的物理大小?要明确一点,如果我有640 GB硬盘,我希望应用程序显示640 GB,而不是596 GB的可用空间。C++ Qt - 获取物理磁盘大小(Win32)

我知道Qt可能没有我可以使用的函数,因为它必须是特定于平台的,所以我猜在这种情况下是来自Win32 API的东西。不幸的是我不能使用GetDiskFreeSpaceEx(),因为我只会得到空闲/可用的磁盘空间。我已阅读关于使用WMI,但我似乎无法找到任何可用的代码示例用于此目的。

回答

3

我认为这个问题主要是由于操作系统和硬盘驱动器制造商使用的测量结果不一致造成的。请检查this wikipedia page了解更多信息。也许找到一种方法来做数学,同时对待1千字节为1000字节(而不是1024),1兆字节为1000 * 1000等 - 而不是1千字节,如1024字节等。

+0

看来我没有明白你想说什么。这怎么能帮助我想出一个我可以用来获取物理磁盘大小的函数?请记住,我是C++编程的初学者,我相信为此目的必须有一些东西。 – marko 2013-03-10 10:32:00

+0

忘掉我的最后一条评论,你实际上给了我一个想法,即如何从用户可用的空间计算声明的HDD容量。我用GetDiskFreeSpaceEx()获取totalNumberOfBytes,然后简单地用GB计算hddPhysicalSize(totalNumberOfBytes * 1073741824)/ 1000000000. – marko 2013-03-10 18:16:56

+0

@Marko正是我想说的:)我很高兴它为你工作。 – 2013-03-10 23:12:58