2016-01-22 5 views
0

Я пытаюсь вызвать 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, я получаю доступ. Оба адреса указывают на один и тот же сервер. Благодарю.

+0

Является ли сервер, на который он указывает на тот же слой-2 LAN? –

+0

Да, я на самом деле вызываю его с той же машины, где находится COM-сервер. – user1375218

+1

ОК. Вы используете адрес в локальной сети «fe80 ::/10», и каждый интерфейс в хосте использует одну и ту же локальную сеть «fe80 ::/10», поэтому вы должны указать область действия в link- локальный адрес, чтобы определить конкретный интерфейс, который вы хотите использовать. Если вы используете порт с адресом IPv6, вам необходимо окружить адрес '' и '' 'перед добавлением': port', и некоторые приложения требуют скобок. –

ответ

-1

См. Мой комментарий выше, это был индекс зоны, который я отсутствовал.

+0

Хотя это может быть ценным советом для решения проблемы, ответ действительно должен продемонстрировать решение. Пожалуйста, [править], чтобы предоставить пример кода, чтобы показать, что вы имеете в виду. В качестве альтернативы подумайте о том, чтобы вместо этого писать это как комментарий. –

Смежные вопросы