В основном, когда я использую 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 о проблемах взаимодействия являются хорошим лидером.