I would like to change the performance and behaviour of my C++ application, according to whether the system drive is an SSD or not. Example:
I've seen http://msdn.microsoft.com/en-gb/library/windows/desktop/aa364939(v=vs.85).aspx, which is a way of determining if a …
继这个问题和这一次,我问最近,但没有正确的细节......,最后这一次,我在自由帕斯卡论坛问具体....
任何人都可以向我提供指导,示例或某个地方的链接,解释如何使用Free Pascal调用物理连接的硬盘列表,或者,无论如何,Delphi,无论磁盘是否已由操作系统安装或不?我想要实现的屏幕截图中显示了一个示例(此屏幕截图中显示的是另一个软件产品).因此,拉出逻辑卷列表(C:\,E:\ etc)并不是我想要做的.如果磁盘有一个操作系统无法挂载的文件系统,我仍然希望看到列出的物理磁盘.
我强调C\C++\C夏普的例子很丰富,但不是我追求的.我主要需要Free Pascal示例,或者说,失败了,Delphi.

我正在将文件系统移植到Windows,并且正在为mounter可执行文件编写更像Windows的界面.此过程的一部分是让用户找到分区并选择驱动器号.最终分区的选择已经导致一些我可以使用打开CreateFile(),open(),fopen()或类似的.
Windows似乎围绕卷的概念展开,这似乎与磁盘不太相似,并且仅适用于已安装的文件系统.
我所拥有的有前途的潜在客户包括:
然而,这些都以卷或其偏移结束,而不是/dev/sda1我所追求的特定于分区的句柄.
这个问题是在一个非常类似的事情之后,我认为是赏金,直到我发现OP是在物理磁盘名称之后,而不是分区.这个答案包含一个强制分区名称的方法,我想避免这种情况(或者查看包含可能路径边界的文档).
我想要:
虽然主要目的仍然是打开原始分区,它出现在溶液可以包括第一获取的句柄每个磁盘驱动器,然后使用,反过来,以获得各分区.如何枚举所有磁盘驱动器(即使那些已经没有安装卷的磁盘驱动器)也是必需的.
这已经得到了回答,但它是一个C#解决方案.如何在C或C++中执行此操作?
当我在diskpart中列出虚拟磁盘时:
DISKPART> list vdisk
VDisk ### Disk ### State Type File
--------- -------- -------------------- --------- ----
VDisk 0 Disk 2 Attached not open Fixed C:\Disk.vhd
Run Code Online (Sandbox Code Playgroud)
对我来说有趣的部分是文件名.如果我知道磁盘号,我试图找到相应的函数,它会给我文件名(在File列下).
理想情况下,我会给" \\?\ PhysicalDrive2 ",我会得到" C:\ Disk.vhd "作为结果.
我已经尝试过:
知道哪个功能可能是什么?
想象一下带有SSD和HDD的PC。
SSD分为2个分区:C和D。
HDD分为2个分区:E和F。
我需要创建一个方法:
boolean isOnSamePhysicalDrive(String drive1, String drive2);
Run Code Online (Sandbox Code Playgroud)
isOnSamePhysicalDrive(“ C”,“ D”)-> true
isOnSamePhysicalDrive(“ E”,“ F”)-> true
isOnSamePhysicalDrive( “C”, “E”) - > 假
我有一个纯C应用程序发出IOCTL调用我的适配器驱动程序并显示信息,然而这是使用Visual Developer Studio 5(非托管代码)编译...我需要从我的适配器使用WMI获取一些信息.. ..我的谷歌搜索努力表明,我需要使用COM编写一个C++应用程序来实现与wMI或C#与.NET应用程序的任何形式的通信a)情况确实如此吗?我的C应用程序无法解决问题?b)如果以上是真的,那么我需要进行项目/ wp /工作区设置的最小级别更改是什么?
谢谢索姆
如何使用C/C++在Windows计算机上获取所有物理驱动器路径(\\.\ PhysicalDriveX)?
此问题的答案建议获取逻辑驱动器号,然后获取与该已安装驱动器对应的物理驱动器.问题是,我想让所有 物理驱动器连接到计算机,包括未安装的驱动器.
其他答案建议从0-15增加一个值并检查是否存在驱动器(\\.\ PhysicalDrive0,\\.\ PhysicalDrive1,...)或调用WMIC列出所有驱动器.[
由于它们似乎可以起作用,因此它们似乎不是最好的方法.有没有一个简单的函数,例如GetPhysicalDrives只返回std::string包含所有物理驱动器路径的向量?
可能重复:
如何列出物理磁盘?
什么是列出我计算机上安装的物理驱动器的"最佳方式"(最快)C++方式?有没有一个升级库可以做到这一点?
给定驱动器号,如何在不使用注册表的情况下获取OSImage InstallTo分区ID和磁盘ID?
c++ ×5
c ×4
windows ×4
hard-drive ×3
winapi ×3
boost ×1
c# ×1
delphi ×1
drive-letter ×1
drives ×1
freepascal ×1
java ×1
lazarus ×1
pinvoke ×1
virtual-disk ×1
wmi ×1