Создаю я сервер в полном согласии с SDK:
CoCreateInstance CLSID_DirectPlay8Server
сервер->Initialize();
CoCreateInstance CLSID_DirectPlay8Address
адрес->SetSP(&CLSID_DP8SP_TCPIP);
адрес->AddComponent(порт 27543);
сервер->Host(структура с параметрами, адрес);
адрес->GetURLa();
И получаю от последнего метода:
x-directplay:/provider=%7BEBFE7BA0-628D-11D2-AE0F-006097B01411%7D;port=27543
Два вопроса:
1) Почему эта строка не несёт в себе информации об моём IP адресе (числа в процентах -- GUID провайдера, в данном случае TCP/IP)?Нафиг нужен этот адрес, если клиент и так знает и порт, и провайдера (TCP/IP)?
2) В разных местах пробую делать сервер->SetServerInfo, но при любых параметрах выдаётся ошибка DPNERR_INVALIDFLAGS, хотя флаг стоит единственно допустимый -- DPNSETSERVERINFO_SYNC. Он, очевидно, может быть как-то связан с другим параметром функции -- phAsyncHandle, хотя ошибка случается и при передаче в качестве этого параметра NULL, и при передаче в качестве него требуемого определением функции указателя на DWORD (для возвращения значения хэндла асинхронного выполнения). Что делать? Почему в SDK написано, что без вызова SetServerInfo ничего работать не будет (Clients cannot сonnect to a server until this method has been called), а в их samples им и не пахнет?
Без DPNSETSERVERINFO_SYNC очень не приемлимо, я не пробовал.
12.01.03 06:18: Перенесено модератором из 'Мультимедиа, графика, звук' — H_D