C++ 实现磁盘联机_乔春城的博客-程序员信息网

技术标签: Windows开发  

磁盘联机有两种方法,一种是使用diskpart工具的online disk命令,一种是使用WMI的Online方法,后者仅对Server 2012及以上系统可用。

1. C++ 调用diskpart的方法,可参阅 我的博客:C++ 修改磁盘san策略 

在磁盘联机模块核心的地方 差不多就是:

string s = "select disk ";
s += pIndex;
ret = WriteFile(hChildStdinWr, s.c_str(),s.size()+1, &dwWritten, NULL);
ret = WriteFile(hChildStdinWr, "online disk",sizeof("online disk"), &dwWritten, NULL);

2. WMI的方法,如何利用C++写WMI的方法不再赘述, 可参阅我的博客:WMI 获取操作系统版本号 
关于获取磁盘唯一标识ID的方法,连接ROOT\Microsoft\Windows\Storage 命名空间,输入WQL语句SELECT * FROM MSFT_Disk,然后会出来一个磁盘的list,可以根据磁盘的Number属性跟需要联机磁盘index做比较,一致的即为我们需要的磁盘,而我们需要的id是磁盘的ObjectId属性。


附上磁盘联机部分的核心代码:

wchar_t msftDiskObjectID[256];
GetWMIMSFTDiskObjectId(msftDiskObjectID, index);

BSTR MethodName = SysAllocString(L"Online");
CComPtr< IWbemClassObject > pOutParams = NULL;
hr = service->ExecMethod(msftDiskObjectID, MethodName, 0, NULL, NULL, &pOutParams, NULL);
if (FAILED(hr))
{
	SysFreeString(MethodName);
	return -1;
}
SysFreeString(MethodName);

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010281829/article/details/80500278

智能推荐

SVG相关知识与应用_跑快点的博客-程序员信息网

SVG,即Scalable Vector Graphics 可伸缩矢量图形,这种图像格式在前端中已经使用的非常广泛了。首先要解释下什么是矢量图像,什么是位图图像?1、矢量图像:SVG是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的、专门为网络而设计的图像格式,SVG是一种采用XML来描述二维图形的语言,所以它可以直接打开xml文件来修改和编辑。2、位图图像:位图图像的存...

PHP图片加水印,然后将加水印的图片上传到七牛云_临沂码农王老七的博客-程序员信息网

今天项目有这么一个需求,简单实现了一下,当然用起来是没有任何问题的,现在把实现代码分享给小伙伴们public function uploadImgToQiniu($picture_id){ $waterImg = './upload/picture/water/**.png';//这个是水印图片,直接放到服务器即可 $img = './upload/picture/'.$pictureInfo['path'];//原图 $waterImg = $thi

stm32 带通滤波器_带通滤波 - 基于STM32芯片和TFT-LCD的便携式心电图仪设计_weixin_39959569的博客-程序员信息网

相关推荐3月10日,纽约州州长安德鲁-库默(Andrew Cuomo)曾在上月宣布,纽约大都市圈的公共交通系...发表于 2018-04-16 08:50•88次阅读 LCD驱动我们只需要写硬件这一块的代码就可以了,下面有三个函数内核已经帮我们写好了,我们只需要调用就...发表于 2018-04-16 08:43•12次阅读 ...

ARM的片上总线规范AMBA (AHB, APB)_何以解忧唯有写!的博客-程序员信息网_amba总线规范

AMBA(Advanced Micro-Controller Bus Architecture)是由ARM Limited公司推出的On-Chip Bus片上总线规范,一开始AMBA 1.0只有ASB和APB,为了节省面积,这时候的总线协定都是采用3态的总线。后来的AMBA 2.0版本,新增了AHB总线,共定义了3组总线:高性能总线(AdvancedHigh Performance Bus,AHB)、系统总线(AdvancedSystem Bus,ASB)和外设总线(Advanced Periphe

随便推点

计算机phd学校怎么选,科学网—关系一生的选择:申请北美phd应该如何比较学校、导师优劣(一) - 钱辰的博文..._吃三盆糖的猫的博客-程序员信息网

博主是一位在美国高校即将毕业的博士生,专业是计算机科学经过多年混迹于学术圈,对于读博的学校、导师选择颇有心得,想写一篇短文来总结一下个人以为,作为一个新时代的大学生,对于自己的职业应该略有规划。大致来说,到北美读博的人在心中的规划分为两类:A: 如果你意向博士毕业以后从事学术工作(高校教授、研究所研究员等)博主对于选择phd offer的优先程度排序为:A1, 导师和研究小组的历史成绩读博士,找到...

python缺失值插补_时间序列数据如何插补缺失值?_weixin_39894233的博客-程序员信息网

在多元时间序列中,数据缺失的情况十分普遍。最近我在做这方面的literature review,在这里回顾总结一下 。时间序列缺失值处理方法主要分为三大类:第一类是直接删除法,该方法可能会舍弃数据中的一些重要信息;第二类是基于统计学的填充方法,如均值填充,中值填充,常用值填充,但这类方法忽略了数据的时序信息;第三类是基于机器学习的填充方法,常见的方法有基于KNN(K-Nearest Neighbo...

成功解决TypeError: a bytes-like object is required, not ‘str‘_张亚楠·的博客-程序员信息网

出现问题:在文件写操作时出现TypeError: a bytes-like object is required, not ‘str’意思是函数write需要的参数类型是字节对象不是字符串解决办法:把str转换成bytes类型bytes(data,‘utf-8’) 或者 str.encode(data,‘utf-8’)第二个参数是编码,根据需求选择。...

Centos下apache启动时httpd: apr_sockaddr_info_get() failed for 报错_明夕何夕帅的博客-程序员信息网

今天安装Apache httpd web服务器时,从官方网站上http://www.apache.org/dyn/closer.cgi下载httpd,然后在centos下解压,安装过程分为三部分:      (1)./configure      (2)make      (3)make install (需要root权限)默认安装在/usr/sbin/下,执行ap

作业五:总结Linux常用命令使用格式,并用实例说明。例如echo、screen、date、ifconfig、export等命令_浅( ⊙ o白色的博客-程序员信息网

echo:等待标准输入,后面可以接字符串,也支持正则表达式[email protected]:~# man echoSYNOPSIS echo [SHORT-OPTION]... [STRING]... echo LONG-OPTION实例:[email protected]:~# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/

接口对接 Newtonsoft.Json_xiexuzhao的博客-程序员信息网

zygfengyuwuzu对接 Newtonsoft.Jsonhttps://blog.csdn.net/weixin_34244102/article/details/86031017技巧1 java 定义了一个operator c#怎么使用 解决方案:给C#序列化类字段定义别名技巧2 Newtonsoft.Json 中 json数据中的 null如何转换成 ""?个人只看到一...

推荐文章

热门文章

相关标签