3

UPnP サービスを登録したい Windows Mobile 6 ARMV4I 用の Visual Studio 2008 C++ プロジェクトがあります。

UPnP サービスの実装として、Windows CE 6 SDK の Microsoft サンプルを使用しています。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;
}

Web 検索中に他の人がこのエラーを参照しているのを見たことがありますが、結果は見られませんでした。

  • upnpdevice.dll を登録しました
  • 「オプションの Windows Mobile サーバー コンポーネント」upnpctrl、upnphost、および httpd をインストールしました。
  • 実行可能ファイル、upnpdevice.dll、device.xml、および service.xml ファイルはすべて/windows/upnpディレクトリにあります。

誰か提案はありますか?

4

1 に答える 1

3

私はそれを解決しました。問題は、オプションの Windows Mobile サーバー コンポーネントが署名されていないことでした。device.exe が起動時にそれらをストリーム ドライバーとしてロードしようとすると、拒否されました。

-ポールH

于 2012-07-18T15:08:25.037 に答える