在C ++中使用WMI来获取适配器的InterfaceIndex

概述在C ++中使用WMI来获取适配器的InterfaceIndex

我已经写了一些代码来初始化COM并通过使用WMI查询Win32_NetworkAdapter类来枚举连接到PC的networking适配器。 我需要使用WMI的原因是我需要枚举的适配器在此时被禁用,但我仍然需要find它的InterfaceIndex,并使用GetInterfaceInfo只检测启用的适配器。 这一切都编译和运行,但在线:

hr = pEnumerator->Next(WBEM_INFINITE,1,&pClassObj,&ulReturnVal);

这意味着检索第一个适配器,它不返回任何设备和垃圾HRESulT。 我用这个页面上的例子作为我的指导。

CoInitialize(NulL); // Initialize COM HRESulT hr = NulL; hr = CoInitializeSecurity( NulL,// security descriptor -1,// use this simple setting NulL,// reserved RPC_C_AUTHN_LEVEL_DEFAulT,// authentication level RPC_C_IMP_LEVEL_IMPERSONATE,// impersonation level NulL,// use this simple setting EOAC_NONE,// no special capabilitIEs NulL); // reserved if (Failed(hr)) { CoUninitialize(); return -1; } IWbemLocator *pLoc = 0; hr = CoCreateInstance(CLSID_WbemLocator,CLSCTX_INPROC_SERVER,IID_IWbemLocator,(LPVOID *) &pLoc); if (Failed(hr)) { CoUninitialize(); return -1; // Program has Failed. } IWbemServices *pSvc = 0; // Connect to the rootdefault namespace with the current user. hr = pLoc->ConnectServer( _bstr_t(L"ROOT\CIMV2"),NulL,&pSvc); if (Failed(hr)) { pLoc->Release(); CoUninitialize(); return -1; // Program has Failed. } hr = CoSetProxyBlanket(pSvc,RPC_C_AUTHN_WINNT,RPC_C_AUTHZ_NONE,RPC_C_AUTHN_LEVEL_CALL,RPC_C_IMP_LEVEL_IMPERSONATE,EOAC_NONE); if (Failed(hr)) { pSvc->Release(); pLoc->Release(); CoUninitialize(); return -1; // Program has Failed. } IEnumWbemClassObject* pEnumerator = NulL; hr = pSvc->Execquery(bstr_t("WQL"),bstr_t("SELECT * FROM Win32_NetworkAdapter"),WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,&pEnumerator); if (Failed(hr)) { pSvc->Release(); pLoc->Release(); CoUninitialize(); return -1; } IWbemClassObject *pClassObj; ulONG ulReturnVal; while ( pEnumerator ) { hr = pEnumerator->Next(WBEM_INFINITE,&ulReturnVal); // code would go here to obtain the adapter propertIEs. pClassObj->Release(); } return -1;

无法findBoost标头版本

如何杀死一个正在运行的程序,以及如何去捕捉它们?

用win32打开一个没有标题栏的窗口

在linux上使用python编写DOS行结尾的文本文件

C编译器/ IDE的windows 7?

winAPI – SetlayeredWindowAttributes与LWA_colorKEY只设置像素完全不透明或完全透明?

在IE中使用JavaScript的窗口中可以使用任何方法来检测URI模式

当c的控制台使用c或c ++运行时禁用键盘按键

刷新窗体,即使不是活动窗口

在.NET代码中使用windows资源pipe理器?

解决方案是使用RPC_C_IMP_LEVEL_DELEGATE参数与CoInitializeSecurity和CoSexProxyBlanket而不是RPC_C_IMP_LEVEL_IMPERSONATE。

总结

以上是内存溢出为你收集整理的在C ++中使用WMI来获取适配器的InterfaceIndex全部内容,希望文章能够帮你解决在C ++中使用WMI来获取适配器的InterfaceIndex所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1235363.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存