本文介绍了DLNA渲染器抛出COMException(0x80040501)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试设置DLNA控制器来控制 iPush Renderer设备. iPush Renderer设备变得非常流行iphone DLNA控制器甚至原生的Airplay都可以很好地与它配合使用.它支持几乎所有视频文件格式.我的DLNA控制器可与迄今为止在其上测试过的所有设备(WDTV,Intels Media Renderer,XBox360和许多其他iphone Renderer)一起使用,但 iPush渲染器设备.

I am trying to set up a DLNA Controller to Control an iPush Renderer device. The iPush Renderer device is becoming very popular as many iphone DLNA controllers and even the native Airplay works perfectly well with it. It supports almost all video file formats. My DLNA controller Works with all the devices I have tested it on so far(WDTV, Intels Media Renderer, XBox360, and many other iphone Renderers) except this The iPush Renderer device.

当我使用UPNPLid.dll [UPnP 1.0类型库(控制点)]时,我将获得包括iPush在内的所有渲染器

When I use UPNPLid.dll [UPnP 1.0 Type Library (Control Point)], I get all Renderers including the iPush

UPnPDeviceFinder finder = new UPnPDeviceFinder();
UPnPDevices devs = finder.FindByType(type, 0);

接下来,当我尝试遍历iPush的服务时,我收到"COMException(0x80040501)"

Next when I try to iterate through the services of the iPush I get "COMException (0x80040501)"

  foreach (var service in device.Services)  {//get the right service}

我尝试使用Intel的Device Spy和Intel的Media Controller推送到iPush.调用Play时,iPush只会永远显示加载屏幕.请注意,iPush可与我在其上测试过的所有iphone控制器完美配合.
在检查互联网上的此错误后,我看到了关于WMP和xBox的类似问题同样的例外,但是没有答案.

I tried using Intels Device Spy and Intels Media Controller to Push to the iPush. When Play is invoked, The iPush just shows a loading screen forever. Note that the iPush works perfectly fine with all the iphone Controllers I have tested on it.
After checking the Internet for this error, I saw similar question regarding WMP and xBox giving this same exception but there was no answer.

推荐答案

0x80040501是UPNP_E_EVENT_SUBSCRIPTION_FAILED,这表明渲染器不理解您控制器的请求.不幸的是,该特定Windows API的文档严重不足.我建议您使用Wireshark并从iWhatever捕获初始握手,并将其与实施中的相同流量进行比较.通过捕获实现,您还应该从iDevice看到更多描述性错误.毕竟是SOAP.我不会惊讶地发现那些iDevices做一些独家的事情.英特尔的UPnP套件是一个参考实现,因此,如果该协议不起作用,那就有些麻烦了.但是,如果我理解正确的话,英特尔在订阅和枚举方面没有问题,但在实际操作的后期却没有问题.但是无论如何,Wireshark现在是您的朋友.使DLNA与硬件设备一起工作是对数据包捕获的无尽追求.

0x80040501 is UPNP_E_EVENT_SUBSCRIPTION_FAILED which suggests that the renderer doesn't understand your controller's request. Unfortunately this particular Windows API is severely under-documented. I would suggest taking Wireshark and capturing the initial handshake from iWhatever and compare with the same traffic from your implementation. By capturing your implementation, you should see more descriptive error from the iDevice too. It's SOAP after all. I won't be surprised to find out that those iDevices do some exclusive stuff. Intel's UPnP suite is a reference implementation, so if THAT doesn't work, something's fishy. Though, if i understand right, Intel doesn't have a problem with subscription and enumeration, but later stages of actual operation. But in any case, Wireshark is your friend now. Making DLNA work with hardware devices is endless quest of packet capturing.

此链接也可能有帮助: http://www.archivum .info/microsoft.public.upnp/2007-08/00009/Device-gt-get_Service-failed.html

This link may be helpful too:http://www.archivum.info/microsoft.public.upnp/2007-08/00009/Device-gt-get_Service-failed.html

免责声明:对于Windows UPnP API,我不是特别的朋友,C#较少.我只是碰巧曾经在C ++中与UPnP一起工作过很多.

Disclaimer: i am no particular friend with Windows UPnP API, the less C#. I just happen to used to work a lot with UPnP in C++.

这篇关于DLNA渲染器抛出COMException(0x80040501)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-19 20:03