#include #include #include #include int main(int argc, char *argv) { LPTSTR lpszCommandLine = GetCommandLine(); LPWSTR * lppszCommandArgs = CommandLineToArgvW(lpszCommandLine, &argc); lppszCommandArgs[++i]; HRESULT result; if(SUCCEEDED(result = CoInitialize(NULL))) { IWbemLocator *pLocator = NULL; if(SUCCEEDED(result = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID *) &pLocator))) { IWbemServices *pServices = NULL; // Connect to the Root\Default namespace with current user BSTR strNamespace = SysAllocString(pszNamespace); if(SUCCEEDED(result = pLocator->ConnectServer(strNamespace, NULL, NULL, 0, NULL, 0, 0, &pServices))) { SysFreeString(strNamespace); switch(op) { case GET_CLASS: { BSTR strClass = SysAllocString(pszClass); IWbemClassObject *pClass = NULL; for(DWORD j=0; jGetObject(strClass, 0, NULL, &pClass, NULL))) { _tprintf(__TEXT("GetClass succeeded for iteration (%d,%d) \n"), j, i); pClass->Release(); pClass = NULL; } else _tprintf(__TEXT("GetClass FAILED for iteration (%d, %d) with %x\n"), j, i, result); } _tprintf(__TEXT("Sleeping for %d seconds ...\n"), dwSleepSeconds); Sleep(1000*dwSleepSeconds); } SysFreeString(strClass); break; } case ENUM_CLASS: { BSTR strClass = SysAllocString(pszClass); IEnumWbemClassObject *pClassEnum = NULL; IWbemClassObject *pClass = NULL; ULONG lCount; ULONG lRetreivedCount; for(DWORD j=0; jCreateClassEnum(strClass, lEnumerationType, NULL, &pClassEnum))) { lRetreivedCount = 0; _tprintf(__TEXT("Enumerate Classes succeeded for iteration (%d, %d) \n"), j, i); while(SUCCEEDED(pClassEnum->Next(WBEM_INFINITE, 1, &pClass, &lCount)) && lCount == 1) { lRetreivedCount ++; pClass->Release(); pClass = NULL; } _tprintf(__TEXT("Enumerate Classes Retreived %d classes for iteration (%d, %d) \n"), lRetreivedCount, j, i); pClassEnum->Release(); pClassEnum = NULL; } else _tprintf(__TEXT("Enumerate Classes FAILED for iteration (%d, %d) with %x\n"), j, i, result); } _tprintf(__TEXT("Sleeping for %d seconds ...\n"), dwSleepSeconds); Sleep(1000*dwSleepSeconds); } SysFreeString(strClass); break; } case GET_INSTANCE: case ENUM_INSTANCE: _tprintf(__TEXT("These operations not implemented yet\n")); break; } pServices->Release(); } else _tprintf(__TEXT("ConnectServer on locator failed %x\n"), result); } else _tprintf(__TEXT("CoCreate on locator failed %x\n"), result); } else _tprintf(__TEXT("CoIntialize failed %x\n"), result); if(SUCCEEDED(result)) return 0; else return 1; }