MCPcopy Create free account
hub / github.com/LegacyUpdate/LegacyUpdate / QueryWMIProperty

Function QueryWMIProperty

shared/WMI.c:21–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19#endif
20
21HRESULT QueryWMIProperty(LPCWSTR query, LPCWSTR property, LPVARIANT value) {
22 IWbemLocator *locator = NULL;
23 IWbemServices *services = NULL;
24 IEnumWbemClassObject *enumerator = NULL;
25 IWbemClassObject *object = NULL;
26 BSTR server, wql, queryBstr, propBstr;
27 ULONG uReturn = 0;
28
29 HRESULT hr = CoCreateInstance(our_CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, our_IID_IWbemLocator, (void **)&locator);
30 CHECK_HR_OR_GOTO_END(L"CoCreateInstance");
31
32 server = SysAllocString(L"ROOT\\CIMV2");
33 hr = IWbemLocator_ConnectServer(locator, server, NULL, NULL, NULL, 0, NULL, NULL, &services);
34 SysFreeString(server);
35 CHECK_HR_OR_GOTO_END(L"ConnectServer");
36
37 hr = CoSetProxyBlanket((IUnknown *)services, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE);
38 CHECK_HR_OR_GOTO_END(L"CoSetProxyBlanket");
39
40 wql = SysAllocString(L"WQL");
41 queryBstr = SysAllocString(query);
42 hr = IWbemServices_ExecQuery(services, wql, queryBstr, WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &enumerator);
43 SysFreeString(wql);
44 SysFreeString(queryBstr);
45 CHECK_HR_OR_GOTO_END(L"ExecQuery");
46
47 uReturn = 0;
48 hr = IEnumWbemClassObject_Next(enumerator, (LONG)WBEM_INFINITE, 1, &object, &uReturn);
49 CHECK_HR_OR_GOTO_END(L"Next");
50
51 propBstr = SysAllocString(property);
52 hr = IWbemClassObject_Get(object, propBstr, 0, value, NULL, NULL);
53 SysFreeString(propBstr);
54 CHECK_HR_OR_GOTO_END(L"Get");
55
56end:
57 if (object) {
58 IWbemClassObject_Release(object);
59 }
60 if (enumerator) {
61 IEnumWbemClassObject_Release(enumerator);
62 }
63 if (services) {
64 IWbemServices_Release(services);
65 }
66 if (locator) {
67 IWbemLocator_Release(locator);
68 }
69
70 return hr;
71}

Callers 1

GetOSProductNameFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected