0

uPNPAPIでテストしています。メソッドがあります:IUPnPRegistrar::GetUniqueDeviceName。これを使用して一意のデバイス名を取得するにはどうすればよいですか。メソッドのパラメーターは次のとおりです。

HRESULT GetUniqueDeviceName(
  [in]   BSTR bstrDeviceIdentifier,
  [in]   BSTR bstrTemplateUDN,
  [out]  BSTR *pbstrUDN
);

私のホストには、メディアプレーヤーデバイスがあります。

IsRootDevice=-1
UniqueDeviceName=uuid:a0a07e13-cc50-4db0-97b3-2a4b93ef0736
FriendlyName=VISITOR
type_=urn:schemas-upnp-org:device:MediaRenderer:1
PresentationURL=
ManufacturerName=Microsoft Corporation
ManufacturerURL=http://www.microsoft.com/
ModelName=Windows Media Player
ModelNumber=12
Description=Windows Media Player Renderer
ModelURL=http://go.microsoft.com/fwlink/?LinkId=105927
UPC=
SerialNumber={DCD14EBE-CEAE-421F-87DE-2C10780E99E2}
Service=urn:upnp-org:serviceId:RenderingControl
ServiceTypeIdentifier=urn:schemas-upnp-org:service:RenderingControl:1

デバイスのUniqueDeviceNameは「uuid:a0a07e13-cc50-4db0-97b3-2a4b93ef0736」だと思います。メソッドの3番目の値を取得するには、1番目と2番目のパラメーターにどの値を渡す必要がありますか?

4

1 に答える 1

0

GetUniqueDeviceNameは、Win32 C API 呼び出しUpnpGetUDNの単なるラッパーです。これは、pszTemplateUDN ( GetUniqueDeviceNamebstrTemplateUDN ) が NULL である可能性があることを明示的に示しています。その場合、ルート デバイスの UDN が返されます。私は、マイクロソフトが「デバイス記述テンプレート」で何を意味するのか理解していません。UPnP のデバイス記述テンプレートが何を意味するかは知っていますが、それは特定の UDN を保持していません。テンプレですよね?したがって、おそらく、システムの再起動時に保持することが期待されるUPNPDEVICEINFO構造体の紛らわしい名前です。これは UPnP で必要ですが、Windows の upnphost では必要ありません。

だからあなたの質問に答えるために:

  • RegisterDevice から取得する必要があるstrDeviceIdentifier
  • bstrTemplateUDNテストデバイスに組み込みデバイスがない限り、NULL で安全です (私はまだそのようなデバイスを確認する必要があります)
  • pbstrUDNは、指定されたデバイスに対して返された UDN です。

免責事項: 私は upnphost も iupnpregistrar も知りません。私はたまたま UPnP と Win32 API のバックグラウンドを持っているので、情報を探す場所を知っています。

于 2012-06-07T11:27:15.683 に答える