Coding for WMI
Greetings,
I am trying to use WMI to interact with network configuration for
Windows XP. My challenge is constructing C/C++ code. I have part of
the solution but I am getting an error message. Below is my initial
attempt at code in C++:
// set up to call the Win32_NetworkAdapterConfiguration::EnableDHCP
method
//EnableDHCP takes no parameters or arguments.
BSTR MethodName = SysAllocString(L"EnableDHCP");
BSTR ClassName =
SysAllocString(L"Win32_NetworkAdapterConfiguration");
IWbemClassObject* pClass = NULL;
hres = pWbemServices->GetObject(ClassName, 0, NULL, &pClass,NULL);
IWbemClassObject* pInParamsDefinition = NULL;
hres = pClass->GetMethod(MethodName, 0,
NULL, NULL);
// I don't understand why these two lines of code are needed?
IWbemClassObject* pClassInstance = NULL;
hres = pInParamsDefinition->SpawnInstance(0, &pClassInstance);
// Execute Method
hres = pWbemServices->ExecMethod(ClassName, MethodName, 0,
NULL, NULL, NULL, NULL);
if (FAILED(hres))
{
switch (hres){
case WBEM_E_FAILED:
AfxMessageBox("1");
break;
case WBEM_E_INVALID_CLASS:
AfxMessageBox("2");
break;
case WBEM_E_INVALID_PARAMETER:
AfxMessageBox("3");
break;
case WBEM_E_METHOD_DISABLED:
AfxMessageBox("4");
break;
case WBEM_E_METHOD_NOT_IMPLEMENTED:
AfxMessageBox("5");
break;
case WBEM_E_NOT_FOUND:
AfxMessageBox("6");
break;
case WBEM_E_PROVIDER_NOT_CAPABLE:
AfxMessageBox("7");
break;
case WBEM_E_INVALID_METHOD:
AfxMessageBox("8");
break;
case WBEM_E_INVALID_METHOD_PARAMETERS:
AfxMessageBox("9"); << This Error Message
pops up.
break;
case WBEM_E_TRANSPORT_FAILURE:
AfxMessageBox("10");
break;
case WBEM_E_ACCESS_DENIED:
AfxMessageBox("11");
break;
}
}
This is part of code and my defined error message number that pops up
is 9. At MSDN it states,
This error results from one of two causes:
The supplied pInParams object was determined by the provider to be
invalid.
The strObjPath parameter specifies a class without the [static]
qualifier on the method.
Since "EnableDHCP" method takes no parameters-why is this message
popping up? Furthermore, I do not know how to tell my code to select
an adapter-that is, for which adapter is it issuing "EnableDHCP"
for? I suspect my code is missing pieces within above piece of
code. Need help.