阅读:3111回复:2
请教关于WMI执行Win32_NetworkAdapter方法的问题
要通过Win32_NetworkAdapter控制网卡。
已经通过WQL取得了具体网卡类实例Instance到 CComPtr<IWbemClassObject> m_InstancePtr; 执行方法好像只有这个函数 IWbemServices::ExecMethod: HRESULT ExecMethod( [in] const BSTR strObjectPath, [in] const BSTR strMethodName, [in] long lFlags, [in] IWbemContext* pCtx, [in] IWbemClassObject* pInParams, [out, in, unique] IWbemClassObject** ppOutParams, [out, in, unique] IWbemCallResult** ppCallResult ); 这个函数没有传instance句柄的地方,是不是已经取得的实例m_InstancePtr用不上了?是不是只能通过这个函数的strObjectPath语句限定到实例?限定到具体instance的语法什么样的,例子只有到类的。 谢谢。 |
|
沙发#
发布于:2009-12-28 21:22
Win32_NetworkAdapter只有4个方法:Reset, SetPowerState, Enable, Disable。
关于WMI instance方法调用,参考MSDN: http://msdn.microsoft.com/en-us/library/aa390421(VS.85).aspx |
|
板凳#
发布于:2010-01-05 09:34
// set up to call the Win32_Process::Create method
BSTR MethodName = SysAllocString(L"Create"); BSTR ClassName = SysAllocString(L"Win32_Process"); IWbemClassObject* pClass = NULL; hres = pSvc->GetObject(ClassName, 0, NULL, &pClass, NULL); //这里取得的是CLASS, 通过打印对象可以证实。 IWbemClassObject* pInParamsDefinition = NULL; hres = pClass->GetMethod(MethodName, 0, &pInParamsDefinition, NULL); IWbemClassObject* pClassInstance = NULL; hres = pInParamsDefinition->SpawnInstance(0, &pClassInstance); // Create the values for the in parameters VARIANT varCommand; varCommand.vt = VT_BSTR; varCommand.bstrVal = L"notepad.exe"; // Store the value for the in parameters hres = pClassInstance->Put(L"CommandLine", 0, &varCommand, 0); wprintf(L"The command is: %s\n", V_BSTR(&varCommand)); // Execute Method IWbemClassObject* pOutParams = NULL; hres = pSvc->ExecMethod(ClassName, MethodName, 0, NULL, pClassInstance, &pOutParams, NULL); //这里的pClassInstance并不是我要执行的类的对象,而是输入参数实例。 找不到ClassName所对应的类实例在哪里。感觉Win32_Process象一个静态类。而Win32_NetworkAdapter会有很多对象。 |
|