嗨 Stack Overflow,对不起我的非母语英语水平
目前在 Visual Studio 2010 上使用 .NET 4.0 为 C# 项目编写 UPnP 发现服务。
我正在使用官方的 Microsoft UPnP COM API,这是我第一次使用 UPnP。我的问题是我正在尝试迭代库发现的设备的服务,并且抛出了 COM HRESUT:0X80040500 异常。
这是我的代码示例:
IList<UpnpDevice> result = new List<UpnpDevice>();
UPnPDevices upnpDiscoveryResult = m_UPnPFinder.FindByType(upnpType, 0);
var upnpDiscoveryResultEnumerator = upnpDiscoveryResult.GetEnumerator();
while (upnpDiscoveryResultEnumerator.MoveNext())
{
var upnpDiscoveryDevice = (IUPnPDevice)upnpDiscoveryResultEnumerator.Current;
UPnPServices services = upnpDiscoveryDevice.Services;
var allServices = services.GetEnumerator();
// ------ Exception is thrown just below
while (allServices.MoveNext())
{
UPnPService service = allServices.Current as UPnPService;
if (service.Id == "urn:schemas-upnp-org:service:WANIPConnection:1")
{
}
else if (service.Id == "urn:schemas-upnp-org:service:WANPPPConnection:1")
{
}
}
我不知道该怎么做。
根据这些人的说法,我认为我可能有同样的错误......
- 如何访问 UPnP 设备的服务?
- http://social.msdn.microsoft.com/Forums/en-US/b16a1e3b-9e85-480a-8240-82a2af73b924/could-not-iterate-upnp-services-of-a-device-using-microsoft-upnpdll)
...问题可能来自官方DLL,我想我应该最好使用一个新的,但我想先在这里问。对我来说,这样一个明显的错误确实可能来自 API,这似乎很奇怪。