Получение IP-адреса с помощью UPnP InvokeAction ничего не возвращает, помогите?
По сути, когда я использую vb.net или c # .net для этого, он работает отлично, но когда я использую vb6, он не работает, в моем цикле for, где захватывается соответствующая служба в соответствующем устройстве, вот код, который не дает результата ...
' serv is properly declared and instantiated by the for loop.
Dim xins(0)
Dim xouts(0)
MsgBox ("Starting..." & serv.ServiceTypeIdentifier & vbCrLf & serv.id & vbCrLf & serv.LastTransportStatus) ' all this shows correctly.
serv.InvokeAction "GetExternalIPAddress", xins, xouts
MsgBox (xouts(0)) ' this should print the ExternalIP, but prints an empty string.
По сути, xouts (0) должен содержать IP-адрес, но это не так (вместо этого - пустая строка, не выдается ошибка или исключение).
все остальные связанные с upnp.dll вещи работают, например: получение списка устройств и получение сервисов на каждом устройстве и т. д. ... никаких проблем, просто InvokeAction, похоже, не работает с сервисом, на котором я пытаюсь его использовать (который имеет тип"WANIPConnection:1"
в устройстве типа"WANConnectionDevice:1"
) ...
вот подробности интерфейса для справки:http://msdn.microsoft.com/en-us/library/aa382237(VS.85).aspx
я попытался получить возвращаемое значение от InvokeAction (который показан как последний аргумент в объявлении интерфейса по ссылке, которую я только что предоставил, это в основном для пользователей C / C ++, в .NET и VB6, последний аргумент является возвращаемым значением) и даже не смог заставить это работать, может предоставить код о том, как я это сделал, если это необходимо, но я рад просто запустить его прямо, не ища возвращаемого значения, как это определено здесь следующим списком:http://msdn.microsoft.com/en-us/library/aa381160(v=VS.85).aspx и реальные данные, которые я ищу, должны быть в массиве xouts, в частности, xouts (0), есть ли у кого-нибудь указания на то, что это может быть?
проблема с брандмауэром может быть? Я работаю в повышенном режиме, и UPNP включен на устройстве (маршрутизаторе).
Обновление: vie заметил, что действие фактически выполняется / выполняется, но массив аргументов out (или аргумент ByRef в VB) не обновляется данными, что говорит о том, что комментарии markj о проблемах взаимодействия являются хорошим примером.