Подскажите получаю системную инфу при помощи классов WMI.
В дебаг режиме всё красиво в релиз глючит причём глючит через раз то глючит то не глючит.
Вот кусок кода
BOOL CGetCom::GetInfoFromWMI() // ýòà ô-ÿ ïîëó÷àåò èíôó î ñèñòåìå è æåëåçå èç WMI è
// çàïîëíÿåò ñîîòâåòñâóþùèå êëàññû
{//GetInfoFromWMI
BOOL bInfoWMI=TRUE;
_bstr_t bstrNamespace;
HRESULT hres;
IWbemLocator *pLoc = NULL;
ULONG ulCount;
CString rString="";
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
CoInitializeSecurity(NULL, -1, NULL, NULL,
RPC_C_AUTHN_LEVEL_CONNECT,
RPC_C_IMP_LEVEL_IMPERSONATE,
NULL, EOAC_NONE, 0);
hres = CoCreateInstance(CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER,
IID_IWbemLocator,(void**) &pLoc);
if (FAILED(hres))
{//if FAILED
AfxMessageBox("Failed to create IWbemLocator object. Err code = 0x"+hres);
::CoUninitialize();
bInfoWMI=FALSE;
return bInfoWMI;
}//if FAILED
IWbemServices *pSvc = NULL;
// Connect to the root\default namespace with the current user.
bstrNamespace = L"root\\cimv2";
hres = pLoc->ConnectServer(bstrNamespace, NULL, NULL, NULL,0, NULL, NULL, &pSvc);
if (FAILED(hres))
{//if FAILED
AfxMessageBox("Could not connect. Error code = 0x" +hres);
::CoUninitialize();
bInfoWMI=FALSE;
return bInfoWMI;
}//if FAILED
pLoc->Release();
IWbemClassObject * spObject=NULL;
IEnumWbemClassObject* spEnum=NULL;
/////////////////////////////////////////////////////////////////////////////
BSTR bstrClass = SysAllocString(L"Win32_Keyboard");// êëàâèàòóðà
hres = pSvc->CreateInstanceEnum(bstrClass,
WBEM_FLAG_SHALLOW|WBEM_FLAG_FORWARD_ONLY,
NULL, &spEnum);
if(FAILED(hres))
{//if FAILED(hres)
keyb.m_bAvail=FALSE;
char buff[100];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0,hres,0,buff,sizeof(buff),0);
CString rString=buff;
AfxMessageBox(rString);
}//if FAILED(hres)
Вот здесь и глючи т hres получается не 0 в релизе почему-то. Подскажите может что не так делаю.
12.05.03 16:40: Перенесено модератором из 'C/C++' — ПК