WSDCreateDeviceProxyAdvanced function

Creates a device proxy and returns a pointer to the IWSDDeviceProxy interface.

Syntax


HRESULT WSDCreateDeviceProxyAdvanced(
  _In_   const WCHAR *pszDeviceId,
  IWSDAddress *pDeviceAddress,
  _In_   const WCHAR *pszLocalId,
  _In_   IWSDXMLContext *pContext,
  _Out_  IWSDDeviceProxy **ppDeviceProxy
);

Parameters

pszDeviceId [in]

The logical or physical address of the device. A logical address is of the form urn:uuid:{guid}. A physical address is a URI prefixed by http or https. If this address is a URI prefixed by https, then the proxy will use the SSL/TLS protocol.

If either pszDeviceId or the pszLocalId is an URL prefixed by https, then both URLs must be identical. If this is not the case, WSDCreateDeviceProxyAdvanced will return E_INVALIDARG.

The device address may be prefixed with the @ character. When pszDeviceId begins with @, this function does not retrieve the device metadata when creating the device proxy.

pDeviceAddress

An IWSDAddress interface that defines the device transport address. When pDeviceAddress is specified, a device proxy can be created without requiring the resolution of a logical address passed to pszDeviceId. This parameter may be NULL.

pszLocalId [in]

The logical or physical address of the client, which is used to identify the proxy and to act as an event sink endpoint. A logical address is of the form urn:uuid:{guid}.

If the client uses a secure channel to receive events, then the address is a URI prefixed by https. This URI should specify port 5358, as this port is reserved for secure connections with WSDAPI. The port must be configured with an SSL server certificate before calling WSDCreateDeviceProxyAdvanced. For more information about port configuration, see HttpSetServiceConfiguration.

pContext [in]

An IWSDXMLContext interface that defines custom message types or namespaces.

If NULL, a default context representing the built-in message types and namespaces is used.

ppDeviceProxy [out]

Pointer to the IWSDDeviceProxy interface that you use to represent a remote WSD device for client applications and middleware.

Return value

Possible return values include, but are not limited to, the following:

Return codeDescription
S_OK

Method completed successfully.

E_INVALIDARG

pszDeviceId is NULL, pszLocalId is NULL, the length in characters of pszDeviceId exceeds WSD_MAX_TEXT_LENGTH (8192), the length in characters of pszLocalId exceeds WSD_MAX_TEXT_LENGTH (8192), or pszDeviceId points to a URI prefixed by https and that URL does not match the URI passed to pszLocalId.

E_POINTER

ppDeviceProxy is NULL.

E_OUTOFMEMORY

Insufficient memory to complete the operation.

 

Remarks

The WSDCreateDeviceProxyAdvanced function calls the IWSDDeviceProxy::Init method, which initializes an instance of an IWSDDeviceProxy object.

This function will also retrieve the device metadata, unless the pszDeviceId parameter begins with the @ character. To retrieve device metadata after the device proxy has been created, call IWSDDeviceProxy::BeginGetMetadata and IWSDDeviceProxy::EndGetMetadata on the returned IWSDDeviceProxy object.

For information about troubleshooting WSDCreateDeviceProxyAdvanced function calls, see Troubleshooting WSDAPI Applications.

Requirements

Minimum supported client

Windows Vista [desktop apps only]

Minimum supported server

Windows Server 2008 [desktop apps only]

Header

WsdClient.h (include Wsdapi.h)

Library

Wsdapi.lib

DLL

Wsdapi.dll

See also

Troubleshooting WSDAPI Applications

 

 

Community Additions

ADD
Show:
© 2014 Microsoft