Win32 API P-Invoke 使磁盘联机、脱机并设置唯一 ID
Posted
技术标签:
【中文标题】Win32 API P-Invoke 使磁盘联机、脱机并设置唯一 ID【英文标题】:Win32 API P-Invoke to bring a disk online, offline, and set unique ID 【发布时间】:2011-02-23 18:10:30 【问题描述】:我目前正在使用 Diskpart 来完成这些功能,但我希望能够使用 P-Invoke 而不必在我的 C# 应用程序中使用外部进程。
Diskpart 脚本示例如下:
//Online a disk
Select disk 7
disk online
// Reset GPT Identifier
select disk 7
UNIQUEID DISK ID=baf784e7-6bbd-4cfb-aaac-e86c96e166ee
我尝试搜索 pinvoke.net,但只能找到处理卷而不是磁盘的函数。关于如何使用 Pinvoke 完成这些 diskpart 命令的任何想法?
【问题讨论】:
你找到解决办法了吗? 【参考方案1】:我不确定 Dispart 到底做了什么,但我建议查看可能具有这种功能的 WMI。当您需要在 Windows 中执行一些不太常见的操作时,它通常是一个不错的选择。
Storage WMI Classes
可能有一些有用的东西:http://msdn.microsoft.com/en-us/library/ff567016%28VS.85%29.aspx
编辑:删除了关于卷的建议,因为我错过了你对此不感兴趣。
【讨论】:
我确实找到了 win32_diskdrive,但它没有任何有用的方法来完成我想要完成的工作。【参考方案2】:DeviceIOControl API 怎么样?
如果没有,我会考虑使用 WMI。特别是,请查看 WMI WIN32_DiskDrive 或 WIN32_LogicalDisk 类。
【讨论】:
看起来 CreateFile 和 DeviceOControl 可能是我需要开始的地方。任何例子都会很棒。我不是 Win32 程序员 :) 我可以写点东西,但需要一些时间。您可以在pinvoke.net/default.aspx/kernel32.deviceiocontrol 上使用 API 的示例。这篇文章也可能有用:blogs.msdn.com/b/jeffrey_wall/archive/2004/09/13/229137.aspx以上是关于Win32 API P-Invoke 使磁盘联机、脱机并设置唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章
(该硬盘处于脱机.因为他与另一个联机磁盘发生签名冲突)怎么解决呢?