c++通过wmi获得Win32_DiskDrive里面的CapabilityDescriptions等参数
//查询硬盘
//char b[]=“Here is the DiskDrive information:”;
char b[]=“硬盘的信息如下:”;
printf("\n\n %s",b);
pEnumerator->Release();
pEnumerator=NULL;hres = pSvc->ExecQuery(bstr_t("WQL"), bstr_t("SELECT * FROM Win32_DiskDrive where SCSILogicalUnit = 0"),WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL,&pEnumerator); //查询有效的电池信息
if (FAILED(hres))
{cout << ";;Query failed. "<< "Error code = 0x" << hex << hres << endl;pSvc->Release();pLoc->Release(); CoUninitialize();return 1; // Program has failed.查询失败
}
while (pEnumerator)
{hres = pEnumerator->Next(WBEM_INFINITE, 1, &pclsObj, &uReturn); //Next函数if((0 == uReturn)||(0 == pclsObj))// if(0 == uReturn){break;}//获取字段的值VARIANT DisID;VARIANT DisDp;VARIANT DisCap;VARIANT DisMo;VARIANT DisMan;VARIANT DisSN;VARIANT DisD;VARIANT DisCD;VARIANT DisMBS;VARIANT DisMiBS;VARIANT DisSPT;VARIANT DisTC;VARIANT DisTH;VARIANT DisTS;VARIANT DisTT;VARIANT DisTPC;VARIANT DisFR;VARIANT DisIT;VARIANT Disize;//DisCD.bstrVal=0; DisD.bstrVal=0;DisID.bstrVal=0;DisMBS.bstrVal=0;DisMiBS.bstrVal=0;DisSPT.bstrVal=0;DisTC.bstrVal=0;DisTH.bstrVal=0;DisTS.bstrVal=0;pclsObj->Get(L"DeviceID",0,&DisID,0,0); printf("\n DeviceID:%ls",DisID.bstrVal); // 设备名称 string,值为\\.\PHYSICALDRIVEDpclsObj->Get(L"Description",0,&DisDp,0,0); printf("\n Description:%ls",DisDp.bstrVal); //设备描述 stringpclsObj->Get(L"Caption",0,&DisCap,0,0); printf("\n Caption:%ls",DisCap.bstrVal); //设备说明 stringpclsObj->Get(L"Model",0,&DisMo,0,0); printf("\n Model:%ls",DisMo.bstrVal); //硬盘名称 stringpclsObj->Get(L"Manufacturer",0,&DisMan,0,0); printf("\n Manufacturer:%ls",DisMan.bstrVal); //生产厂家 stringpclsObj->Get(L"SerialNumber",0,&DisSN,0,0); printf("\n SerialNumber:%ls",DisSN.bstrVal); //硬盘序列号 stringpclsObj->Get(L"CapabilityDescriptions",0,&DisCD,0,0); //因为CapabilityDescriptions是二维的指针safearray,所以不能用printf直接输出,要通过缓冲区把字符串存储下来再输出BSTR (*buf)[2]=NULL; if(FAILED(SafeArrayAccessData(DisCD.parray, (void **)&buf)))::MessageBoxA(NULL,"出毛病了。","提示",MB_OK | MB_ICONWARNING); /*string str = _com_util::ConvertBSTRToString((*buf)[0]); string str1 = _com_util::ConvertBSTRToString((*buf)[1]); printf("\n CapabilityDescriptions:"); */_tprintf(_T("\n********** CapabilityDescriptions:%ls"),*buf[0]); _tprintf(_T("\n********** CapabilityDescriptions:%ls"),(*buf)[1]);
/* printf("\n %s",str.c_str());printf("\n %s",str1.c_str());*/ SafeArrayUnaccessData(DisCD.parray); /*pclsObj->Get(L"Capabilities",0,&DisCD,0,0); printf("\n CapabilityDescriptions:%d",DisCD.bVal);*/pclsObj->Get(L"DefaultBlockSize",0,&DisD,0,0);printf("\n DefaultBlockSize:%ls",DisD.bstrVal); //硬盘默认分块大小 uint64pclsObj->Get(L"MaxBlockSize",0,&DisMBS,0,0); printf("\n MaxBlockSize:%ls",DisMBS.bstrVal); //硬盘最大分块大小 pclsObj->Get(L"MinBlockSize",0,&DisMiBS,0,0); printf("\n MinBlockSize:%ls",DisMiBS.bstrVal); //硬盘最小分块大小pclsObj->Get(L"SectorsPerTrack",0,&DisSPT,0,0); printf("\n SectorsPerTrack:%d",DisSPT.bstrVal); //硬盘扇区数 UInt32 pclsObj->Get(L"TotalCylinders",0,&DisTC,0,0); printf("\n TotalCylinders:%ls",DisTC.bstrVal); //硬盘柱面数 uinit64pclsObj->Get(L"TotalHeads",0,&DisTH,0,0); printf("\n TotalHeads:%d",DisTH.bstrVal); //磁盘总头数 UInt32pclsObj->Get(L"TotalSectors",0,&DisTS,0,0); printf("\n TotalSectors:%ls",DisTS.bstrVal); //磁盘扇区数 uinit64pclsObj->Get(L"TotalTracks",0,&DisTT,0,0);//DisTT.bstrVal=0;printf("\n TotalTracks:%ls",DisTT.bstrVal); //磁盘总道数 uinit64/*pclsObj->Get(L"TracksPerCylinder",0,&DisID,0,0);DisID.bstrVal=0;printf("\n TracksPerCylinder:%ls",DisID.bstrVal); */pclsObj->Get(L"TracksPerCylinder",0,&DisTPC,0,0);//DisTPC.bstrVal=0;printf("\n TracksPerCylinder:%d",DisTPC.intVal); //每柱磁道数 uinit32pclsObj->Get(L"FirmwareRevision",0,&DisFR,0,0); //DisFR.bstrVal=0;printf("\n FirmwareRevision:%ls",DisFR.bstrVal); //固件版本 stringpclsObj->Get(L"InterfaceType",0,&DisIT,0,0); printf("\n InterfaceType:%ls",DisIT.bstrVal); //接口类型 stringpclsObj->Get(L"Size",0,&Disize,0,0); printf("\n Size:%ls",Disize.bstrVal); //硬盘容量 uint 64//VariantClear(&DisID);VariantClear (&DisDp);VariantClear (&DisCap);VariantClear (&DisMo);VariantClear (&DisMan);VariantClear (&DisSN);VariantClear (&DisD);VariantClear (&DisCD);VariantClear (&DisMBS);VariantClear (&DisMiBS);VariantClear (&DisSPT);VariantClear (&DisTC);VariantClear (&DisTH);VariantClear (&DisTS);VariantClear (&DisTT);VariantClear (&DisTPC);VariantClear (&DisFR);VariantClear (&DisIT);VariantClear (&Disize);pclsObj->Release();
}
c++通过wmi获得Win32_DiskDrive里面的CapabilityDescriptions等参数相关推荐
- Android通过读取AndroidManifest里面的meta-data获取参数
如题,在AndroidManifest里面的meta-data里面配置: <application><meta-dataandroid:name="TTAPPID" ...
- PyTorch里面的torch.nn.Parameter()
在刷官方Tutorial的时候发现了一个用法self.v = torch.nn.Parameter(torch.FloatTensor(hidden_size)),看了官方教程里面的解释也是云里雾里, ...
- servlet里面的context,定义属性值的事情!
servlet里面的context,定义属性值. 在尚未指定属性值的时候.不管谁调用,都是NULL. 但是,一旦指定了属性值.那么,再次调用就是之间指定的数值啦! 而且,是象mapping一样存储对象 ...
- jQuery里面的datepicker日期控件默认是显示英文的,如何显示中文或其他语言呢?...
jQuery里面的datepicker日期控件默认是显示英文的,如何让他显示中文或其他呢? [官方的写法]: (1)引入JS文件: <script type="text/javascr ...
- Angularjs $scope 里面的$apply 方法 和 $watch 方法
Angularjs $scope 里面的$apply 方法 和 $watch 方法 学习要点: 1. Angularjs $scope 里面的$apply 方法 2. Angularjs $scope ...
- Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别
第一段 buildscript 里面的 repositories 表示只有编译工具才会用这个仓库. 比如 buildscript 里面的 dependencies classpath 'com.and ...
- JAVA里面的int类型 和Integer类型,有什么不一样
JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...
- 对于C#里面的this与base
如果说你父类里面有一个成员比如int a;那么你子类里面也可以再定义一个int a,这个时候base.a和this.a表示的就不是一个变量了,如果说子类里面没有,那么base.a和this.a表示的都 ...
- 开启Windows8里面的Hyper-V虚拟机功能
首先了解下什么是Hyper-V?也就是虚拟化技术,允许终端用户在同一台机器上运行多个操作系统,支持32位和64位系统,可以直接在Windows 8上创建自己的虚拟机.开启Hyper-V虚拟机需要更多的 ...
最新文章
- C++: 不可拷贝(noncopyable)类
- Java 程序员都该懂的 HashMap
- 脑与神经类开放数据库汇总
- kafka 启动_Kafka的安装与启动
- 深入java虚拟机学习 -- 类的加载机制(续)
- Linux下ntpdate时间同步
- Android 第三方库RxLifecycle使用
- mcem r语言代码_R语言阈值自回归模型(TAR)代码示例
- 9.Linux 高性能服务器编程 --- IO 复用
- js 调用百度地图,并且定位用户地址,显示省市区街,经纬度
- Linux基础知识总结一
- 计算机用word做海报,如何使用word文档制作精美海报
- 帆软报表设置的参数不显示_FineReport报表工具显示格式和显示值的设置
- 怎样把纸质试卷扫描成电子版?纸质转电子版教程
- 电压源和电流源的区别
- 网络基础 select模型
- count distinct
- 女程序员放弃大厂年薪20万,回老家当实习老师,工作难找,后悔哭了
- Django分页+增删改查
- FCFS、SJF、RR、SRT进程调度算法的代码实现
热门文章
- Kerberos报错:kinit: Password incorrect while getting initial credentials
- 多元函数第四:欧式几何(1)柯西不等式(Cauchy不等式),三角不等式
- Fiel Test in Perl
- ps真实辉光插件:Oniric Glow Generator汉化版
- Symbian进程间通信
- 细节决定成败!华为面试题库刷题整理(三)
- 中国自动UV固化机行业市场供需与战略研究报告
- android预警信息:是在AndroidStudio的控制台里的信息Invalid ID 0x00000001.解决参考
- ARM机器码的操作码汇总
- 未间断向提供商品粮 国稻种芯·中国水稻节:江西筑江南粮仓