我有一个适用于 Windows Mobile 6 ARMV4I 的 Visual Studio 2008 C++ 项目,我想在其中注册一个 UPnP 服务。
我正在使用 Windows CE 6 SDK 中的 Microsoft 示例作为 UPnP 服务的实现。WINCE600\PUBLIC\SERVERS\SDK\SAMPLES\UPNP\DEVICE
不幸的是,RegisterRunningDevice
调用失败并出现错误 E_HANDLE。
#include "upnpdevice_i.c"
#import "upnpdevice.dll" named_guids
int main()
{
::CoInitializeEx( NULL, COINIT_MULTITHREADED );
using namespace UPnPHostLib;
IUPnPDeviceControlPtr device_ctrl( CLSID_Device );
IUPnPRegistrarPtr registrar( CLSID_UPnPRegistrar );
bstr_t device_descr = /* contents of the device.xml file from the sample */
// throws a _com_error exception where hr = E_HANDLE
bstr_t device_id = registrar->RegisterRunningDevice( device_descr,
device_ctrl,
L"foo",
L"/windows/upnp",
0 );
/* ... */
::CoUninitialize();
return 0;
}
我看到其他人在我的网络搜索过程中提到了这个错误,但我没有看到任何结果。
- 我已经注册了 upnpdevice.dll
- 我已经安装了“可选的 Windows Mobile 服务器组件”upnpctrl、upnphost 和 httpd。
- 可执行文件、upnpdevice.dll、device.xml 和 service.xml 文件都在
/windows/upnp
目录中。
有人有什么建议吗?