//查询硬盘
//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等参数相关推荐

  1. Android通过读取AndroidManifest里面的meta-data获取参数

    如题,在AndroidManifest里面的meta-data里面配置: <application><meta-dataandroid:name="TTAPPID" ...

  2. PyTorch里面的torch.nn.Parameter()

    在刷官方Tutorial的时候发现了一个用法self.v = torch.nn.Parameter(torch.FloatTensor(hidden_size)),看了官方教程里面的解释也是云里雾里, ...

  3. servlet里面的context,定义属性值的事情!

    servlet里面的context,定义属性值. 在尚未指定属性值的时候.不管谁调用,都是NULL. 但是,一旦指定了属性值.那么,再次调用就是之间指定的数值啦! 而且,是象mapping一样存储对象 ...

  4. jQuery里面的datepicker日期控件默认是显示英文的,如何显示中文或其他语言呢?...

    jQuery里面的datepicker日期控件默认是显示英文的,如何让他显示中文或其他呢? [官方的写法]: (1)引入JS文件: <script type="text/javascr ...

  5. Angularjs $scope 里面的$apply 方法 和 $watch 方法

    Angularjs $scope 里面的$apply 方法 和 $watch 方法 学习要点: 1. Angularjs $scope 里面的$apply 方法 2. Angularjs $scope ...

  6. Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别

    第一段 buildscript 里面的 repositories 表示只有编译工具才会用这个仓库. 比如 buildscript 里面的 dependencies classpath 'com.and ...

  7. JAVA里面的int类型 和Integer类型,有什么不一样

    JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...

  8. 对于C#里面的this与base

    如果说你父类里面有一个成员比如int a;那么你子类里面也可以再定义一个int a,这个时候base.a和this.a表示的就不是一个变量了,如果说子类里面没有,那么base.a和this.a表示的都 ...

  9. 开启Windows8里面的Hyper-V虚拟机功能

    首先了解下什么是Hyper-V?也就是虚拟化技术,允许终端用户在同一台机器上运行多个操作系统,支持32位和64位系统,可以直接在Windows 8上创建自己的虚拟机.开启Hyper-V虚拟机需要更多的 ...

最新文章

  1. C++: 不可拷贝(noncopyable)类
  2. Java 程序员都该懂的 HashMap
  3. 脑与神经类开放数据库汇总
  4. kafka 启动_Kafka的安装与启动
  5. 深入java虚拟机学习 -- 类的加载机制(续)
  6. Linux下ntpdate时间同步
  7. Android 第三方库RxLifecycle使用
  8. mcem r语言代码_R语言阈值自回归模型(TAR)代码示例
  9. 9.Linux 高性能服务器编程 --- IO 复用
  10. js 调用百度地图,并且定位用户地址,显示省市区街,经纬度
  11. Linux基础知识总结一
  12. 计算机用word做海报,如何使用word文档制作精美海报
  13. 帆软报表设置的参数不显示_FineReport报表工具显示格式和显示值的设置
  14. 怎样把纸质试卷扫描成电子版?纸质转电子版教程
  15. 电压源和电流源的区别
  16. 网络基础 select模型
  17. count distinct
  18. 女程序员放弃大厂年薪20万,回老家当实习老师,工作难找,后悔哭了
  19. Django分页+增删改查
  20. FCFS、SJF、RR、SRT进程调度算法的代码实现

热门文章

  1. Kerberos报错:kinit: Password incorrect while getting initial credentials
  2. 多元函数第四:欧式几何(1)柯西不等式(Cauchy不等式),三角不等式
  3. Fiel Test in Perl
  4. ps真实辉光插件:Oniric Glow Generator汉化版
  5. Symbian进程间通信
  6. 细节决定成败!华为面试题库刷题整理(三)
  7. 中国自动UV固化机行业市场供需与战略研究报告
  8. android预警信息:是在AndroidStudio的控制台里的信息Invalid ID 0x00000001.解决参考
  9. ARM机器码的操作码汇总
  10. 未间断向提供商品粮 国稻种芯·中国水稻节:江西筑江南粮仓