如何在没有 WMI 的情况下知道两个分区是否在一个物理硬盘上?

2023-12-01

例如,我有这些分区(在 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(使用前将#替换为@)

如何在没有 WMI 的情况下知道两个分区是否在一个物理硬盘上? 的相关文章

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • C#8 接口及其中定义的属性/方法 - 显然不起作用

    这是我使用的界面 public interface IPresentism public abstract bool isPresent get public virtual bool isAbsent gt isPresent isPre
  • Oracle 中的 OVER 子句

    Oracle中的OVER子句是什么意思 The OVER子句指定分析函数运行的 分区 排序和窗口 示例 1 计算移动平均线 AVG amt OVER ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1
  • 如何通过解析 TTF 字体文件获取字形宽度?

    用于捕获 a 的字形宽度TrueType字体 我转换对应的TTF归档依据fontforge into AFM 它是文本格式 不是二进制 然后 解析文本文件以捕获字形宽度 应该有更简单的方法来直接解析二进制文件TTF文件来捕获字形宽度 我很欣
  • C# 索引属性?

    我使用 Visual Basic 已经有一段时间了 最 近决定开始学习 C 作为学习更复杂语言的一个步骤 作为这次跳跃的一部分 我决定将一些旧的 VB 项目手动转换为 C 我遇到的问题是转换一个具有使用带有参数 索引的属性的类的库 在 VB
  • 如何调试IE11 APPCACHE

    我有一个适用于 CHROME 和 SAFARI 的 HTML5 页面 但使用 Internet Explorer 11 不起作用 我的缓存清单根据http manifest validator com 我很沮丧 这是 AppCache 清单
  • 将 XHTML 转换为 Word ML

    将 Word HTML 转换为 Word XML 的最佳方法是什么 我无法购买工具 因此需要最好是 XSLT 它是免费的 并且适用于段落 列表 粗体和斜体等基本格式 斯蒂芬 布永写了一篇blog关于这一点 请参阅 MSDN 她提供了一个非常
  • Firebase Cloud 代码(后端逻辑)

    我正在考虑使用 Firebase 而不是 Parse 因为它即将关闭 来满足我未来的移动后端需求 我真的很喜欢它的实时数据库方面 但它没有像 Parse 与 Cloud Code 那样轻松集成后端逻辑 有没有简单的方法可以实现此功能 或者很
  • 无效的正则表达式错误

    我正在尝试检索该字符串的类别部分 property id 516 category featured properties 所以结果应该是 featured properties 我想出了一个正则表达式并在这个网站上进行了测试http gs
  • 将 Ado.net DataReader 转换为 IDataRecord 给出奇怪的结果

    我有一个针对数据库运行的查询 我可以看到有一条 2013 年 5 月 31 日的记录 当我使用 ADO NET 从 C 运行此查询 然后使用以下代码时 我丢失了 2013 年 5 月 31 日的记录 var timeSeriesList n
  • fileReader.readAsBinaryString 上传文件

    尝试使用 fileReader readAsBinaryString 通过 AJAX 将 PNG 文件上传到服务器 精简代码 fileObject 是包含我的文件信息的对象 var fileReader new FileReader fil
  • Google Sheets:具有动态变化的自定义函数

    我正在使用一个自定义功能跟踪什么为单元格着色是 但是这个函数有一个问题不更新自身如果细胞颜色改变 细胞颜色 function GetCellColorCode input var ss SpreadsheetApp getActiveSpr
  • 气流 Schedule_interval 和 start_date 使其始终触发下一个间隔

    如何配置气流 mwaa 以便它在部署 dag 时每天同一时间 太平洋标准时间上午 6 点 触发 我尝试过对我来说有意义的事情 将schedule interval设置为0 6 将开始日期设置为 now datetime utcnow now
  • javascript 中 isNaN 和 Number.isNaN 之间的混淆

    我对 NaN 的工作原理感到困惑 我已经执行了isNaN undefined 它回来了true 但如果我会使用Number isNaN undefined 它正在返回false 那么我应该使用哪一个 还有为什么结果有这么大的差异 引用一个p
  • 类型类 MonadPlus、Alternative 和 Monoid 之间的区别?

    标准库 Haskell 类型类MonadPlus Alternative and Monoid每个方法都提供了两种语义基本相同的方法 空值 mzero empty or mempty 操作员a gt a gt a将类型类中的值连接在一起 m
  • 如何在Python中从子类调用父类的方法?

    在 Python 中创建简单的对象层次结构时 我希望能够从派生类调用父类的方法 在 Perl 和 Java 中 有一个关键字 super 在 Perl 中 我可能会这样做 package Foo sub frotz return Bamf
  • Spring 会话范围 bean 与 AOP 的问题

    我想在 HomeController 类中注入 currentUser 实例 因此对于每个请求 HomeController 都会有 currentUser 对象 我的配置
  • 如何在 Spring MVC 中实现 HTTP 字节范围请求

    我的网站上出现视频倒带问题 我发现了 http 标头的问题 我当前返回视频的控制器方法 RequestMapping method RequestMethod GET value testVideo ResponseBody public
  • 更新 USB 设备列表

    我想要创建自动更新 USB 设备列表的模块 不仅仅是大容量存储 现在它的工作方式非常粗鲁 它有额外的线程 1 秒后更新设备列表 但也许您知道如何处理一些生成操作系统 例如 Windows XP 及更高版本 的插入事件或如何简化此过程的另一种
  • 将 einsum 计算转换为点积以在 Theano 中使用

    我最近才了解到np einsum并很快就上瘾了 但似乎theano没有等效的功能 所以我需要转换我的numpy以某种方式向 theano 编码 如何在 theano 中编写以下计算 IX np einsum ijk lj gt ilk p1
  • 如何在没有 WMI 的情况下知道两个分区是否在一个物理硬盘上?

    例如 我有这些分区 在 Windows 中 Hard Disk 1 Partition C Partition D Hard Disk 2 Partition E 有没有一种程序语言可以知道分区 C 和分区 D 是否在一个物理硬盘中没有 W