IWSDDeviceHost::AddDynamicService 方法 (wsdhost.h)

为传入请求注册服务对象,但不将该服务添加到设备主机元数据。 这用于暂时性 (动态) 服务。

语法

HRESULT AddDynamicService(
  [in]           LPCWSTR              pszServiceId,
  [in, optional] LPCWSTR              pszEndpointAddress,
  [in, optional] const WSD_PORT_TYPE  *pPortType,
  [in, optional] const WSDXML_NAME    *pPortName,
  [in, optional] const WSDXML_ELEMENT *pAny,
  [in, optional] IUnknown             *pService
);

参数

[in] pszServiceId

动态服务的 ID。 服务 ID 必须与服务主机元数据中的所有服务 ID 以及任何其他已注册的动态服务不同。 pszServiceId 必须是 URI。

[in, optional] pszEndpointAddress

用作此服务的终结点地址的可选 URI。 如果未指定任何内容,则设备主机将假定该服务应在所有本地传输地址上可用。

[in, optional] pPortType

对指定端口类型的 WSD_PORT_TYPE 结构的引用。 可能为 NULL。 仅指定 pPortTypepPortName 中的一个。

[in, optional] pPortName

引用 WSDXML_NAME 结构,该结构指定服务的类型,并将服务与指定的端口相关联。 仅指定 pPortTypepPortName 中的一个。

[in, optional] pAny

对要包含在动态服务元数据中的可扩展节的可选引用。

[in, optional] pService

对要注册的主机服务对象的可选引用。

返回值

可能的返回值包括但不限于以下内容:

返回代码 说明
S_OK
方法已成功完成。
E_POINTER
pszServiceIdNULL
E_INVALIDARG
pszServiceIdpszEndpointAddress 的字符长度超过 WSD_MAX_TEXT_LENGTH (8192) ,或者同时指定 pPortTypepPortName
E_FAIL
方法失败。 它可能已失败,因为主机尚未初始化,或者找不到 pszServiceId 指定的服务。 调用 Init 以初始化设备主机。
E_OUTOFMEMORY
内存不足,无法完成操作。

注解

调用此方法时,设备会添加对服务对象的引用,并调用其方法以响应发送到服务的请求消息。 在设备主机上调用 RemoveDynamicService 方法以释放其对服务的引用,并停止对服务调用方法。

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wsdhost.h (包括 Wsdapi.h)
DLL Wsdapi.dll

另请参阅

IWSDDeviceHost