- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在WMI技术介绍和应用——WMI概述中介绍了我们可以使用C
HYPERLINK /breaksoftware/article/details/8439975 WMI技术介绍和应用——VC开发WMI应用的基本步骤
? ? ? ? 在 HYPERLINK /breaksoftware/article/details/8424317 \t _blank 《WMI技术介绍和应用——WMI概述》中介绍了我们可以使用C++、.net或者支持ActiveX技术的脚本语言来使用WMI。但是各种语言对WMI的控制能力是不同的,比如脚本语言只能用来从WMI获取数据或者接收事件通知。而C++还可以编写WMI提供者和发送消息。和脚本语言相比,C++对WMI有强大的控制和定制性,当然也具有更大的复杂性。本文将主要讲述使用VC如何搭建一个使用WMI的框架。 HYPERLINK /breaksoftware/article/details/8439975 \t _self (转载请指明出于breaksoftware的csdn博客)
? ? ? ? 为了方便使用,我将该搭建步骤封转到了一个类中
[cpp] HYPERLINK /breaksoftware/article/details/8439975 \o view plain view plain HYPERLINK /breaksoftware/article/details/8439975 \o copy copy HYPERLINK /breaksoftware/article/details/8439975 \o print print HYPERLINK /breaksoftware/article/details/8439975 \o ? ?
class?CWMI??
{??
public:??
????CWMI();??
????~CWMI(void);??
public:??
????HRESULT?ExcuteFun();??
protected:??
????VOID?SetNamespace(wstring?wstrNamespace);??
private:??
????HRESULT?InitialCom();??
????HRESULT?SetComSecLevels();??
????HRESULT?ObtainLocator2WMI(CComPtrIWbemLocator?pLoc);??
????HRESULT?Connect2WMI(CComPtrIWbemLocator?pLoc,CComPtrIWbemServices?pSvc);??
????HRESULT?SetProxySecLevels(CComPtrIWbemServices?pSvc);??
????virtual?HRESULT?Excute(CComPtrIWbemServices?pSvc)?=?0;??
private:??
????wstring?m_wstrNamespace;??
};??
? ? ? ? SetNamespace用于设置命名空间。在 HYPERLINK /breaksoftware/article/details/8424317 \t _blank 《WMI技术介绍和应用——WMI概述》中我们提到,WMI中存在诸如root\default、root\cimv2等WMI命令空间。因为我们要使用的WMI功能和命名空间有很大的关联,所以该类将提供这个设置命令空间的函数。
[cpp] HYPERLINK /breaksoftware/article/details/8439975 \o view plain view plain HYPERLINK /breaksoftware/article/details/8439975 \o copy copy HYPERLINK /breaksoftware/article/details/8439975 \o print print HYPERLINK /breaksoftware/article/details/8439975 \o ? ?
VOID?CWMI::SetNamespace(wstring?wstrNamespace)??
{??
????m_wstrNamespace?=?wstrNamespace;??
}??
? ? ? ? 剩下的函数就承载着了使用WMI步骤的逻辑和流程。
? ? ? ? 初始化COM库
? ? ? ? 我们还要将之前的WMI框架图列出来
? ? ? ??
? ? ? ? WMI是基于COM技术的。在WMI Consumers层,我们发现,C++程序是直接和WMI COM API进行交互。所以我们要先初始化COM组件库。
[cpp] HYPERL
文档评论(0)