问题描述
当我使用 CoCreateInstanceEx
时,我总是得到 NULL 结果。
我的代码是这样的:
bool Connect(Str a_sServerName,COSERVERINFO* CoServerInfo)
{
CLSID CLSID_OPCServer;
HRESULT hr;
hr = CLSIDFromString(a_sServerName,&CLSID_OPCServer);
if( hr == S_FALSE )
{
// Log string "Wrong CLSID of OPC server"
return false;
}
LONG cmq = 1; // nbr of class instance to create.
MULTI_QI queue[] = { { &IID_IOPCServer,nullptr,0 } };
// HERE IS SOMETHING WRONG WITH THE queue VARIABLE
hr = CoCreateInstanceEx(CLSID_OPCServer,NULL,CLSCTX_ALL,CoServerInfo,cmq,queue);
if( hr == S_FALSE )
{
// Log string "Error creating OPC server instance"
return false;
}
else
{
// Log string "Successful connection to the OPC server"
}
pIOPCServer = (IOPCServer*) queue[0].pItf;
//AND HERE pIOPCServer IS NULL
}
我没有收到任何错误,似乎一切正常。但不幸的是 pIOPCServer
是 NULL。
你不怀疑这里有什么问题吗?
对于任何帮助,非常感谢。 最好的问候,
解决方法
您不仅需要检查 CoCreateInstanceEx 中的 HRESULT,还需要检查 queue[0].hr 中的 HRESULT。问题的原因很可能就在那里。