OPC 服务器始终为 NULL

问题描述

当我使用 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。问题的原因很可能就在那里。