1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| #pragma comment(lib, "wbemuuid.lib")
#pragma comment(lib, "comsuppw.lib")
#ifndef _WIN32_DCOM
#define _WIN32_DCOM
#endif
#include <windows.h>
#include <objbase.h>
#include <atlbase.h>
#include <iostream>
#include <wbemidl.h>
#include <comutil.h>
int main()
{
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (FAILED(hr)) return -1;
hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT,
RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
if (FAILED(hr)) return -1;
int result = 0;
{
CComPtr<IWbemLocator> locator;
hr = CoCreateInstance(CLSID_WbemAdministrativeLocator, NULL,
CLSCTX_INPROC_SERVER, IID_IWbemLocator,
reinterpret_cast< void** >(&locator));
if (FAILED(hr)) return -1;
CComPtr<IWbemServices> service;
hr = locator->ConnectServer(L"root\\cimv2", NULL, NULL, NULL,
WBEM_FLAG_CONNECT_USE_MAX_WAIT,
NULL, NULL, &service);
if (SUCCEEDED(hr))
{
CComPtr<IEnumWbemClassObject> enumerator;
hr = service->ExecQuery(L"WQL", L"SELECT * FROM Win32_Processor",
WBEM_FLAG_FORWARD_ONLY, NULL, &enumerator);
if (SUCCEEDED(hr))
{
CComPtr<IWbemClassObject> processor = NULL;
ULONG retcnt;
hr = enumerator->Next(WBEM_INFINITE, 1L, reinterpret_cast<IWbemClassObject**>(&processor), &retcnt);
if (SUCCEEDED(hr))
{
for (ULONG i = 1; i <= retcnt; i++)
//if (retcnt > 0)
{
_variant_t var_val;
hr = processor->Get(L"NumberOfCores", 0, &var_val, NULL, NULL);
if (SUCCEEDED(hr))
{
_bstr_t str = var_val;
std::cout << "Nb cores : " << str << std::endl;
}
else result = -1;
hr = processor->Get(L"NumberOfLogicalProcessors", 0, &var_val, NULL, NULL);
if (SUCCEEDED(hr))
{
_bstr_t str = var_val;
std::cout << "Nb processeur logique : " << str << std::endl;
}
else result = -1;
}
}
else result = -1;
}
else result = -1;
}
else result = -1;
}
CoUninitialize();
return result;
} |
Partager