QueryInterface возвращает E_ACCESSDANIED общую ошибку отказа в доступе после успешного завершения CoCreateInstanceEx

Я делаю простой клиент для подключения к OPC-серверу через DCOM на виртуальной машине. Я тестировал тот же код на компьютере с Windows 7, и он работал правильно, но после перемещения кода на Windows 10 он перестал работать (виртуальная машина, содержащая сервер DCOM, остается той же). Дело в том, что я могу создать экземпляр COM-объекта, но не могу вызвать ни один из его методов, потому что получаю результат E_ACCESSDENIED. Вот эти шаги:

tagMULTI_QI res;
res.pIID = &__uuidof(IOPCServer);
res.pItf = NULL;

hr = CoCreateInstanceEx(
    clsid,
    NULL,
    CLSCTX_INPROC_SERVER,
    &sin,
    1,
    &res);

Это возвращает hr = S_OK, и res.hr также имеет значение S_OK. Но после этого любой вызов получает результат E_ACCESSDENIED. Это:

hr = server->GetStatus(&status);

IOPCItemProperties* ItemProperties;

hr = server->QueryInterface(
            __uuidof(IOPCItemProperties),
            (void**)&ItemProperties);

Есть идеи, что может быть причиной проблемы? Может быть что-то связано с ОС Windows 10?

0 ответов

Другие вопросы по тегам