我正在测试uPNP API。有一种方法: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”。为了检索方法中的第三个值,我应该传递给第一个和第二个参数什么值?
答案 0 :(得分:0)
GetUniqueDeviceName 只是Win32 C API调用 UpnpGetUDN 的包装器。那个明确地说 pszTemplateUDN ( GetUniqueDeviceName 中的 bstrTemplateUDN )可能是NULL,在这种情况下你会回到根设备的UDN。我一个人不明白微软的意思是“设备描述模板”。更好的说,我知道UPnP中的设备描述模板意味着什么,但是它不包含任何特定的UDN。这是一个模板,对吧?所以也许只是一个令人困惑的 UPNPDEVICEINFO 结构的名称,您希望在系统重启时保留该名称。这是UPnP所要求的,但Windows upnphost不适合你。
所以回答你的问题:
免责声明:我不知道upnphost既不是iupnpregistrar,我也碰巧在UPnP和Win32 API中有一些背景,所以知道在哪里挖掘信息。