我尝试在程序中使用来自http://msdn.microsoft.com/en-us/library/aa392107%28v=vs.85%29.aspx的ExecQuery(),但我遇到了错误问题。具体来说,如果WQL查询是好的,那么一切正常。结果很好,我可以和他们一起工作。但是,如果查询不好像
"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPENab8f"
从ExecQuery返回的HRESULT仍然是成功的。但是访问枚举器会使程序崩溃。文档指出存在指示不同错误的返回值。以下内容无法理解:
IEnumWbemClassObject * wmienumerator = NULL;
//
HRESULT hres;
hres = pWMI->ExecQuery(
bstr_t("WQL"),
bstr_t("SELECT * FROM Win32_Networkiguration WHERE IntderfaceIndex=4"),
WBEM_FLAG_RETURN_IMMEDIATELY | WBEM_FLAG_FORWARD_ONLY,
NULL,
&wmienumerator);
if(hres != WBEM_S_NO_ERROR)
{
cerr << "error";
exit(1);
}
else if(hres != 0)
{
cerr << "error";
exit(1);
}
else if(hres == WBEM_E_FAILED)
{
cerr << "error";
exit(1);
}
else if(FAILED(hres))
{
cerr << "error";
exit(1);
}
我尝试了很多其他的If语句,检查不同的值,以及检查枚举器指针是否仍为NULL(它不是)。
此时,我想知道是是否是有效查询,并且返回的结果只是空的。我不知道如何检查是否是这种情况......
我觉得我错过了一些对经验丰富的程序员来说显而易见的事情,我刚刚从我的新生C ++课程中崭露头角......