例如,我有这些分区(在 Windows 中):
Hard Disk 1 - Partition C, Partition D
Hard Disk 2 - Partition E
有没有一种程序语言可以知道分区 C 和分区 D 是否在一个物理硬盘中没有 WMI?
我不想使用 WMI,因为它很慢 - 对于本例,我花了 0.5 秒。我需要它快点。
谢谢。
我不知道有任何其他管理方式来获取磁盘分区信息。
您可以使用 C# 中的 P/Invoke 来使用 Win32 API。但是,除非绝对必要,否则您不应该这样做。
您需要的 Win32 函数称为 DeviceIoControl()。 API 文档可以在以下位置找到:http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx。使用控制代码 IOCTL_STORAGE_GET_DEVICE_NUMBER 调用 DeviceIoControl(),您将获得给定分区设备句柄的物理磁盘驱动器。可以使用 CreateFile() API 检索分区的设备句柄。
但是,使用 DeviceIoControl() 很麻烦,您很可能必须为 32 位和 64 位版本的 Windows 制作不同的版本。
要检索所有分区,您可以使用托管代码 System.IO.DriveInfo,如下所示:
var x = from di in DriveInfo.GetDrives()
where (di.DriveType == DriveType.Fixed)
select di;
foreach (DriveInfo di in x)
{
// Call DeviceIoControl() using the partition name from di.Name and the IOCTL_STORAGE_GET_DEVICE_NUMBER control code to retrieve the physical disk
}
pinvoke.net 好像有一些C# 的签名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)