IUPnPDescriptionDocument::LoadAsync 方法 (upnp.h)

LoadAsync 方法以异步方式加载文档。 此方法立即将控制权返回给调用方,并使用指定的回调在操作完成时通知调用方。

语法

HRESULT LoadAsync(
  [in] BSTR     bstrUrl,
  [in] IUnknown *punkCallback
);

参数

[in] bstrUrl

指定要加载的文档的 URL。 如果指定的 URL 是相对 URL,则服务器名称将追加到 bstrUrl 的值前面。

[in] punkCallback

IUnknown 的引用,指定 UPnP 框架在操作完成时用于通知调用方的回调。 如果加载操作没有立即失败,则此回调指示加载操作是成功还是失败。 pUnkCallback 引用的对象必须支持 IUPnPDescriptionDocumentCallback 接口或 IDispatch 接口。

返回值

如果该方法成功,则返回值S_OK。 否则,该方法返回 WinError.h 中定义的 COM 错误代码之一或以下 UPnP 返回值之一。

返回代码 说明
UPNP_E_DEVICE_ELEMENT_EXPECTED
XML 文档没有设备元素 它从根元素或 DeviceList 元素中缺失。
UPNP_E_DEVICE_NODE_INCOMPLETE
XML 文档缺少 Device 元素中的一个必需元素。
UPNP_E_ICON_ELEMENT_EXPECTED
XML 文档没有图标元素。 IconList 元素中缺少它,或者 DeviceList 元素不包含 IconList 元素。
UPNP_E_ICON_NODE_INCOMPLETE
XML 文档缺少 Icon 元素中必需的元素之一。
UPNP_E_ROOT_ELEMENT_EXPECTED
XML 文档在文档的顶层没有根元素。
UPNP_E_SERVICE_ELEMENT_EXPECTED
XML 文档没有 service 元素。 ServiceList 元素中缺少它,或者 DeviceList 元素不包含 ServiceList 元素。
UPNP_E_SERVICE_NODE_INCOMPLETE
XML 文档缺少 Service 元素中的必需元素之一。

注解

不应从用户界面线程调用此方法,因为此方法可能需要很长时间才能返回。

如果在上一次调用后立即为同一对象调用此方法,则会中止 LoadAsync 的第一次调用。 若要避免此问题,请等待 IUPnPDescriptionDocumentCallback::LoadComplete 回调,然后使用 LoadResult 查看状态信息。

如果 LoadAsync 方法由网页中的脚本调用, 则 bstrUrl 可能是相对 URL。 当前网页的地址用作基 URL。

如果从网页调用此方法,则调用方指定的 URL 必须引用从中加载网页的同一服务器。

pUnkCallback 引用的对象必须支持 IUPnPDescriptionDocumentCallback 接口或 IDispatch 接口。 LoadAsync 方法首先查询 pUnkCallback 以获取 IUPnPDescriptionDocumentCallback 接口。 如果不支持此接口, LoadAsync 方法将查询 pUnkCallback 以获取 IDispatch 接口。 如果 不支持 IDispatch 接口,则这两个检查都失败, 并且 LoadAsync 方法返回E_FAIL。

基于 LoadAsync 方法的 IDispatch 的回调充当采用一个参数的脚本函数。 此参数是加载操作的结果。 如果 参数为零,则加载成功,用户可以从文档中检索设备对象。 如果参数为非零,则描述错误。 该值与 IUPnPDescriptionDocument::Load 方法返回的错误代码相同。

在 Visual Basic Scripting Edition (VBScript) 开发软件中,第二个参数必须是 GetRef (funcname) ,其中 funcname 是回调子例程的名称。

如果此函数返回S_OK,则 UPnP 框架将调用 IUPnPDescriptionDocumentCallback::LoadComplete

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 无受支持的版本
目标平台 Windows
标头 upnp.h
DLL Upnp.dll

另请参阅

IUPnPDescriptionDocument

IUPnPDescriptionDocument::Load