Я пытаюсь вызвать CoCreateInstanceEx, передав адрес ipv6, но он не работает с отказом доступа. Есть ли способ обойти это, или он не поддерживается? Вот ссылка:вызов CoCreateInstanceEx с ipv6
COSERVERINFO serverinfo;
ZeroMemory(&serverinfo, sizeof serverinfo);
serverinfo.pwszName = (OLECHAR *)sAddress.c_str();
MULTI_QI qi[2];
qi[0].pIID = &IID_IUnknown;
qi[0].pItf = NULL;
qi[0].hr = S_OK;
qi[1].pIID = &IID_IXSMyIniitialize;
qi[1].pItf = NULL;
qi[1].hr = S_OK;
HRESULT hr = CoCreateInstanceEx(
CLSID_CoSMyCOM,
0,
CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER,
&serverinfo,
2,
qi);
Если sAddress что-то вроде 10.7.10.10, он работает. Но если это что-то вроде fe90 :: a877: d1aa: 43f7: 5922, я получаю доступ. Оба адреса указывают на один и тот же сервер. Благодарю.
Является ли сервер, на который он указывает на тот же слой-2 LAN? –
Да, я на самом деле вызываю его с той же машины, где находится COM-сервер. – user1375218
ОК. Вы используете адрес в локальной сети «fe80 ::/10», и каждый интерфейс в хосте использует одну и ту же локальную сеть «fe80 ::/10», поэтому вы должны указать область действия в link- локальный адрес, чтобы определить конкретный интерфейс, который вы хотите использовать. Если вы используете порт с адресом IPv6, вам необходимо окружить адрес '' и '' 'перед добавлением': port', и некоторые приложения требуют скобок. –