这是从我关于IMAPI2的另一个问题提出的,是否有可能识别DVD/CD驱动器是虚拟的还是非物理的?如何识别驱动器是虚拟的还是物理的
回答
虚拟驱动器的目的是完全作为其物理对应物,而不需要物理介质。这两种驱动器都以与设备驱动程序相同的方式与操作系统一起工作。我非常怀疑它们之间的区别在Win32 API中是可见的。这对虚拟驱动器的目的来说是违反直觉的。
我查看了WMI提供的信息(可通过C#访问),并找到了感兴趣的内容。我的虚拟驱动器的设备ID以'SCSI'开头,而我的物理SATA驱动器的设备ID以'IDE'开头。我相信大部分(全部?)虚拟驱动器软件模拟SCSI驱动器;我不确定。通常情况下,用户可能会有IDE或SATA光驱,它们都会以'IDE'开头。
Virtual Drive Device: "SCSI\CDROM&VEN_ELBY&PROD_CLONEDRIVE&REV_1.4\1&00000000&0&000000"
Real Drive Device: "IDE\CDROMASUS_DRW-24B1ST_________________________1.03____\5&295AF142&0&5.0.0"
请注意,在虚拟驱动器被明确确定为克隆驱动软件我的例子设备ID。您可以根据已知的虚拟驱动器软件列表检查制造商和产品名称。这可能会产生很多错误的否定,并且很难维护。
无论哪种方式,我不确定搜索设备ID中的功能是否是一种高度可靠的解决方案。可能会有虚拟驱动器以不同的方式标识自己。我只测试克隆驱动器和守护进程工具来研究你的问题。
如果您使用这种方法进行版权保护(您还会使用这种方法?),那么您必须考虑假冒虚拟驱动器确定的可能性是否值得激怒您的客户。
这是用于检查使用WMI的驱动器并访问设备ID的C#代码。您将需要引用System.Management程序集。
string driveLetter = "F";
ManagementObjectSearcher diskQuery = new ManagementObjectSearcher(String.Format("SELECT * FROM Win32_CDROMDrive WHERE Drive='{0}:'", driveLetter));
ManagementObject diskResult = diskQuery.Get().OfType<ManagementObject>().SingleOrDefault();
string deviceID = null;
if (diskResult != null)
deviceID = (string)diskResult["DeviceID"];
一种方法是导航到您的计算机目录,该目录使用c:/ drive和可移动硬盘。使用物理硬盘时,如果右键单击并弹出媒体,cd/dvd托盘将滑出;但是,虚拟驱动器只会清除存储在驱动器中的数据,但不会在笔记本电脑/计算机上滑出托盘。
-1该OP正在寻找一个可行的解决方案,通过C# – 2011-12-15 19:51:40
查看“DriveInfo”...查看它的DriveType属性。
System.IO.DriveInfo di = new System.IO.DriveInfo(“X:\”);
- 1. malloc的返回值是虚拟地址还是物理地址?
- 2. C指针是指物理地址还是虚拟地址
- 3. 物理驱动程序和虚拟驱动程序有什么区别?
- 4. 确定Linux上的MAC地址是物理的还是虚拟的
- 5. AWS EC2实例 - 它是单个虚拟映像还是单个物理机器?
- 6. 在linux的sk_buff中,skb-> data是物理地址还是虚拟地址?
- 7. 缓存是由物理地址还是虚拟地址索引的?
- 8. 如何创建虚拟Windows驱动器
- 9. 如何开发虚拟驱动器
- 10. 缓存查找决定是基于虚拟地址还是物理地址
- 11. 如何识别webp图像是静态还是动画?
- 12. 什么是物理地址和虚拟地址?他们是如何工作的?
- 13. 识别Google驱动器网址的最佳方法是什么?
- 14. USB闪存驱动器模拟(如CD/DVD rom虚拟驱动器) - 是否有可能
- 15. 如何检测USB驱动器是NTFS还是FAT32 in objective-c
- 16. 虚拟包含未识别
- 17. 识别是否插入了可移动驱动器
- 18. 虚拟与物理地址
- 19. 如何识别来自服务器的回应是pdf还是url或图片?
- 20. 如何识别服务器的输入是InputStream还是输出流
- 21. Caspol,虚拟机,映射驱动器,VS2010
- 22. 创建虚拟硬盘驱动器
- 23. 2个类别的虚拟变量。它应该是单列还是多列?
- 24. 如何识别网络接口是LAN还是Wifi还是外部
- 25. 如何确定驱动器是否是外置驱动器
- 26. 将物理SVN服务器移动到虚拟服务器
- 27. 清单的物理驱动器
- 28. 虚拟函数还是虚拟方法,哪一个合适?
- 29. 什么是虚拟代理?
- 30. IIS7上的无限网站?那是localhost还是虚拟的?
@ L.B该OP指出,DVD/CD驱动器是虚拟的还是物理的;即......它是通过类似MagicISO的方式安装的,还是它是设备的物理组件。 – 2011-12-15 19:55:38