こんにちは、スタック オーバーフローです。英語が母国語ではないレベルで申し訳ありません。
現在、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 から発生する可能性があるとは、私には奇妙に思えます。