

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0555 */
/* Compiler settings for wsdclient.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __wsdclient_h__
#define __wsdclient_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IWSDEndpointProxy_FWD_DEFINED__
#define __IWSDEndpointProxy_FWD_DEFINED__
typedef interface IWSDEndpointProxy IWSDEndpointProxy;
#endif 	/* __IWSDEndpointProxy_FWD_DEFINED__ */


#ifndef __IWSDMetadataExchange_FWD_DEFINED__
#define __IWSDMetadataExchange_FWD_DEFINED__
typedef interface IWSDMetadataExchange IWSDMetadataExchange;
#endif 	/* __IWSDMetadataExchange_FWD_DEFINED__ */


#ifndef __IWSDServiceProxy_FWD_DEFINED__
#define __IWSDServiceProxy_FWD_DEFINED__
typedef interface IWSDServiceProxy IWSDServiceProxy;
#endif 	/* __IWSDServiceProxy_FWD_DEFINED__ */


#ifndef __IWSDServiceProxyEventing_FWD_DEFINED__
#define __IWSDServiceProxyEventing_FWD_DEFINED__
typedef interface IWSDServiceProxyEventing IWSDServiceProxyEventing;
#endif 	/* __IWSDServiceProxyEventing_FWD_DEFINED__ */


#ifndef __IWSDDeviceProxy_FWD_DEFINED__
#define __IWSDDeviceProxy_FWD_DEFINED__
typedef interface IWSDDeviceProxy IWSDDeviceProxy;
#endif 	/* __IWSDDeviceProxy_FWD_DEFINED__ */


#ifndef __IWSDAsyncResult_FWD_DEFINED__
#define __IWSDAsyncResult_FWD_DEFINED__
typedef interface IWSDAsyncResult IWSDAsyncResult;
#endif 	/* __IWSDAsyncResult_FWD_DEFINED__ */


#ifndef __IWSDAsyncCallback_FWD_DEFINED__
#define __IWSDAsyncCallback_FWD_DEFINED__
typedef interface IWSDAsyncCallback IWSDAsyncCallback;
#endif 	/* __IWSDAsyncCallback_FWD_DEFINED__ */


#ifndef __IWSDEventingStatus_FWD_DEFINED__
#define __IWSDEventingStatus_FWD_DEFINED__
typedef interface IWSDEventingStatus IWSDEventingStatus;
#endif 	/* __IWSDEventingStatus_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"
#include "wsdxmldom.h"
#include "wsdtypes.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_wsdclient_0000_0000 */
/* [local] */ 











HRESULT WINAPI
WSDCreateDeviceProxy(
    __in LPCWSTR pszDeviceId,
    __in LPCWSTR pszLocalId,
    IWSDXMLContext* pContext,
    __deref_out IWSDDeviceProxy** ppDeviceProxy);
HRESULT WINAPI
WSDCreateDeviceProxyAdvanced(
    __in LPCWSTR pszDeviceId,
    IWSDAddress* pDeviceAddress,
    __in LPCWSTR pszLocalId,
    IWSDXMLContext* pContext,
    __deref_out IWSDDeviceProxy** ppDeviceProxy);
#if (WINVER >= _WIN32_WINNT_WIN7)
HRESULT WINAPI
WSDCreateDeviceProxy2(
    __in LPCWSTR pszDeviceId,
    __in LPCWSTR pszLocalId,
    IWSDXMLContext* pContext,
    __in_ecount_opt(dwConfigParamCount) WSD_CONFIG_PARAM* pConfigParams,
    DWORD dwConfigParamCount,
    __deref_out IWSDDeviceProxy** ppDeviceProxy);
#endif


extern RPC_IF_HANDLE __MIDL_itf_wsdclient_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_wsdclient_0000_0000_v0_0_s_ifspec;

#ifndef __IWSDEndpointProxy_INTERFACE_DEFINED__
#define __IWSDEndpointProxy_INTERFACE_DEFINED__

/* interface IWSDEndpointProxy */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDEndpointProxy;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("1860d430-b24c-4975-9f90-dbb39baa24ec")
    IWSDEndpointProxy : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SendOneWayRequest( 
            /* [in] */ const void *pBody,
            /* [in] */ const WSD_OPERATION *pOperation) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SendTwoWayRequest( 
            /* [in] */ const void *pBody,
            /* [in] */ const WSD_OPERATION *pOperation,
            /* [optional][in] */ const WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SendTwoWayRequestAsync( 
            /* [in] */ const void *pBody,
            /* [in] */ const WSD_OPERATION *pOperation,
            /* [in] */ IUnknown *pAsyncState,
            /* [in] */ IWSDAsyncCallback *pCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **pResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE AbortAsyncOperation( 
            /* [in] */ IWSDAsyncResult *pAsyncResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ProcessFault( 
            /* [in] */ const WSD_SOAP_FAULT *pFault) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetErrorInfo( 
            /* [annotation][out] */ 
            __deref_out  LPCWSTR *ppszErrorInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFaultInfo( 
            /* [annotation][out] */ 
            __deref_out  WSD_SOAP_FAULT **ppFault) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDEndpointProxyVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDEndpointProxy * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDEndpointProxy * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDEndpointProxy * This);
        
        HRESULT ( STDMETHODCALLTYPE *SendOneWayRequest )( 
            IWSDEndpointProxy * This,
            /* [in] */ const void *pBody,
            /* [in] */ const WSD_OPERATION *pOperation);
        
        HRESULT ( STDMETHODCALLTYPE *SendTwoWayRequest )( 
            IWSDEndpointProxy * This,
            /* [in] */ const void *pBody,
            /* [in] */ const WSD_OPERATION *pOperation,
            /* [optional][in] */ const WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext);
        
        HRESULT ( STDMETHODCALLTYPE *SendTwoWayRequestAsync )( 
            IWSDEndpointProxy * This,
            /* [in] */ const void *pBody,
            /* [in] */ const WSD_OPERATION *pOperation,
            /* [in] */ IUnknown *pAsyncState,
            /* [in] */ IWSDAsyncCallback *pCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **pResult);
        
        HRESULT ( STDMETHODCALLTYPE *AbortAsyncOperation )( 
            IWSDEndpointProxy * This,
            /* [in] */ IWSDAsyncResult *pAsyncResult);
        
        HRESULT ( STDMETHODCALLTYPE *ProcessFault )( 
            IWSDEndpointProxy * This,
            /* [in] */ const WSD_SOAP_FAULT *pFault);
        
        HRESULT ( STDMETHODCALLTYPE *GetErrorInfo )( 
            IWSDEndpointProxy * This,
            /* [annotation][out] */ 
            __deref_out  LPCWSTR *ppszErrorInfo);
        
        HRESULT ( STDMETHODCALLTYPE *GetFaultInfo )( 
            IWSDEndpointProxy * This,
            /* [annotation][out] */ 
            __deref_out  WSD_SOAP_FAULT **ppFault);
        
        END_INTERFACE
    } IWSDEndpointProxyVtbl;

    interface IWSDEndpointProxy
    {
        CONST_VTBL struct IWSDEndpointProxyVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDEndpointProxy_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDEndpointProxy_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDEndpointProxy_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDEndpointProxy_SendOneWayRequest(This,pBody,pOperation)	\
    ( (This)->lpVtbl -> SendOneWayRequest(This,pBody,pOperation) ) 

#define IWSDEndpointProxy_SendTwoWayRequest(This,pBody,pOperation,pResponseContext)	\
    ( (This)->lpVtbl -> SendTwoWayRequest(This,pBody,pOperation,pResponseContext) ) 

#define IWSDEndpointProxy_SendTwoWayRequestAsync(This,pBody,pOperation,pAsyncState,pCallback,pResult)	\
    ( (This)->lpVtbl -> SendTwoWayRequestAsync(This,pBody,pOperation,pAsyncState,pCallback,pResult) ) 

#define IWSDEndpointProxy_AbortAsyncOperation(This,pAsyncResult)	\
    ( (This)->lpVtbl -> AbortAsyncOperation(This,pAsyncResult) ) 

#define IWSDEndpointProxy_ProcessFault(This,pFault)	\
    ( (This)->lpVtbl -> ProcessFault(This,pFault) ) 

#define IWSDEndpointProxy_GetErrorInfo(This,ppszErrorInfo)	\
    ( (This)->lpVtbl -> GetErrorInfo(This,ppszErrorInfo) ) 

#define IWSDEndpointProxy_GetFaultInfo(This,ppFault)	\
    ( (This)->lpVtbl -> GetFaultInfo(This,ppFault) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDEndpointProxy_INTERFACE_DEFINED__ */


#ifndef __IWSDMetadataExchange_INTERFACE_DEFINED__
#define __IWSDMetadataExchange_INTERFACE_DEFINED__

/* interface IWSDMetadataExchange */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDMetadataExchange;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("06996d57-1d67-4928-9307-3d7833fdb846")
    IWSDMetadataExchange : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetMetadata( 
            /* [out] */ WSD_METADATA_SECTION_LIST **MetadataOut) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDMetadataExchangeVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDMetadataExchange * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDMetadataExchange * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDMetadataExchange * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetMetadata )( 
            IWSDMetadataExchange * This,
            /* [out] */ WSD_METADATA_SECTION_LIST **MetadataOut);
        
        END_INTERFACE
    } IWSDMetadataExchangeVtbl;

    interface IWSDMetadataExchange
    {
        CONST_VTBL struct IWSDMetadataExchangeVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDMetadataExchange_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDMetadataExchange_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDMetadataExchange_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDMetadataExchange_GetMetadata(This,MetadataOut)	\
    ( (This)->lpVtbl -> GetMetadata(This,MetadataOut) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDMetadataExchange_INTERFACE_DEFINED__ */


#ifndef __IWSDServiceProxy_INTERFACE_DEFINED__
#define __IWSDServiceProxy_INTERFACE_DEFINED__

/* interface IWSDServiceProxy */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDServiceProxy;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("d4c7fb9c-03ab-4175-9d67-094fafebf487")
    IWSDServiceProxy : public IWSDMetadataExchange
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE BeginGetMetadata( 
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndGetMetadata( 
            /* [in] */ IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_out  WSD_METADATA_SECTION_LIST **ppMetadata) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetServiceMetadata( 
            /* [annotation][out] */ 
            __deref_out  WSD_SERVICE_METADATA **ppServiceMetadata) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SubscribeToOperation( 
            /* [in] */ const WSD_OPERATION *pOperation,
            /* [in] */ IUnknown *pUnknown,
            /* [in] */ const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnsubscribeToOperation( 
            /* [in] */ const WSD_OPERATION *pOperation) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetEventingStatusCallback( 
            /* [optional][in] */ IWSDEventingStatus *pStatus) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetEndpointProxy( 
            /* [annotation][out] */ 
            __deref_out  IWSDEndpointProxy **ppProxy) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDServiceProxyVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDServiceProxy * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDServiceProxy * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDServiceProxy * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetMetadata )( 
            IWSDServiceProxy * This,
            /* [out] */ WSD_METADATA_SECTION_LIST **MetadataOut);
        
        HRESULT ( STDMETHODCALLTYPE *BeginGetMetadata )( 
            IWSDServiceProxy * This,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult);
        
        HRESULT ( STDMETHODCALLTYPE *EndGetMetadata )( 
            IWSDServiceProxy * This,
            /* [in] */ IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_out  WSD_METADATA_SECTION_LIST **ppMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *GetServiceMetadata )( 
            IWSDServiceProxy * This,
            /* [annotation][out] */ 
            __deref_out  WSD_SERVICE_METADATA **ppServiceMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *SubscribeToOperation )( 
            IWSDServiceProxy * This,
            /* [in] */ const WSD_OPERATION *pOperation,
            /* [in] */ IUnknown *pUnknown,
            /* [in] */ const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        HRESULT ( STDMETHODCALLTYPE *UnsubscribeToOperation )( 
            IWSDServiceProxy * This,
            /* [in] */ const WSD_OPERATION *pOperation);
        
        HRESULT ( STDMETHODCALLTYPE *SetEventingStatusCallback )( 
            IWSDServiceProxy * This,
            /* [optional][in] */ IWSDEventingStatus *pStatus);
        
        HRESULT ( STDMETHODCALLTYPE *GetEndpointProxy )( 
            IWSDServiceProxy * This,
            /* [annotation][out] */ 
            __deref_out  IWSDEndpointProxy **ppProxy);
        
        END_INTERFACE
    } IWSDServiceProxyVtbl;

    interface IWSDServiceProxy
    {
        CONST_VTBL struct IWSDServiceProxyVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDServiceProxy_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDServiceProxy_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDServiceProxy_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDServiceProxy_GetMetadata(This,MetadataOut)	\
    ( (This)->lpVtbl -> GetMetadata(This,MetadataOut) ) 


#define IWSDServiceProxy_BeginGetMetadata(This,ppResult)	\
    ( (This)->lpVtbl -> BeginGetMetadata(This,ppResult) ) 

#define IWSDServiceProxy_EndGetMetadata(This,pResult,ppMetadata)	\
    ( (This)->lpVtbl -> EndGetMetadata(This,pResult,ppMetadata) ) 

#define IWSDServiceProxy_GetServiceMetadata(This,ppServiceMetadata)	\
    ( (This)->lpVtbl -> GetServiceMetadata(This,ppServiceMetadata) ) 

#define IWSDServiceProxy_SubscribeToOperation(This,pOperation,pUnknown,pAny,ppAny)	\
    ( (This)->lpVtbl -> SubscribeToOperation(This,pOperation,pUnknown,pAny,ppAny) ) 

#define IWSDServiceProxy_UnsubscribeToOperation(This,pOperation)	\
    ( (This)->lpVtbl -> UnsubscribeToOperation(This,pOperation) ) 

#define IWSDServiceProxy_SetEventingStatusCallback(This,pStatus)	\
    ( (This)->lpVtbl -> SetEventingStatusCallback(This,pStatus) ) 

#define IWSDServiceProxy_GetEndpointProxy(This,ppProxy)	\
    ( (This)->lpVtbl -> GetEndpointProxy(This,ppProxy) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDServiceProxy_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_wsdclient_0000_0002 */
/* [local] */ 

#if (WINVER >= _WIN32_WINNT_WIN7)


extern RPC_IF_HANDLE __MIDL_itf_wsdclient_0000_0002_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_wsdclient_0000_0002_v0_0_s_ifspec;

#ifndef __IWSDServiceProxyEventing_INTERFACE_DEFINED__
#define __IWSDServiceProxyEventing_INTERFACE_DEFINED__

/* interface IWSDServiceProxyEventing */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDServiceProxyEventing;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("f9279d6d-1012-4a94-b8cc-fd35d2202bfe")
    IWSDServiceProxyEventing : public IWSDServiceProxy
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SubscribeToMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pUnknown,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE BeginSubscribeToMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pUnknown,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndSubscribeToMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE UnsubscribeToMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [in] */ const WSDXML_ELEMENT *pAny) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE BeginUnsubscribeToMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndUnsubscribeToMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RenewMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE BeginRenewMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndRenewMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStatusForMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE BeginGetStatusForMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndGetStatusForMultipleOperations( 
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDServiceProxyEventingVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDServiceProxyEventing * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDServiceProxyEventing * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDServiceProxyEventing * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetMetadata )( 
            IWSDServiceProxyEventing * This,
            /* [out] */ WSD_METADATA_SECTION_LIST **MetadataOut);
        
        HRESULT ( STDMETHODCALLTYPE *BeginGetMetadata )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult);
        
        HRESULT ( STDMETHODCALLTYPE *EndGetMetadata )( 
            IWSDServiceProxyEventing * This,
            /* [in] */ IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_out  WSD_METADATA_SECTION_LIST **ppMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *GetServiceMetadata )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][out] */ 
            __deref_out  WSD_SERVICE_METADATA **ppServiceMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *SubscribeToOperation )( 
            IWSDServiceProxyEventing * This,
            /* [in] */ const WSD_OPERATION *pOperation,
            /* [in] */ IUnknown *pUnknown,
            /* [in] */ const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        HRESULT ( STDMETHODCALLTYPE *UnsubscribeToOperation )( 
            IWSDServiceProxyEventing * This,
            /* [in] */ const WSD_OPERATION *pOperation);
        
        HRESULT ( STDMETHODCALLTYPE *SetEventingStatusCallback )( 
            IWSDServiceProxyEventing * This,
            /* [optional][in] */ IWSDEventingStatus *pStatus);
        
        HRESULT ( STDMETHODCALLTYPE *GetEndpointProxy )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][out] */ 
            __deref_out  IWSDEndpointProxy **ppProxy);
        
        HRESULT ( STDMETHODCALLTYPE *SubscribeToMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pUnknown,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        HRESULT ( STDMETHODCALLTYPE *BeginSubscribeToMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pUnknown,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult);
        
        HRESULT ( STDMETHODCALLTYPE *EndSubscribeToMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        HRESULT ( STDMETHODCALLTYPE *UnsubscribeToMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [in] */ const WSDXML_ELEMENT *pAny);
        
        HRESULT ( STDMETHODCALLTYPE *BeginUnsubscribeToMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult);
        
        HRESULT ( STDMETHODCALLTYPE *EndUnsubscribeToMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult);
        
        HRESULT ( STDMETHODCALLTYPE *RenewMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        HRESULT ( STDMETHODCALLTYPE *BeginRenewMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSD_EVENTING_EXPIRES *pExpires,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult);
        
        HRESULT ( STDMETHODCALLTYPE *EndRenewMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        HRESULT ( STDMETHODCALLTYPE *GetStatusForMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        HRESULT ( STDMETHODCALLTYPE *BeginGetStatusForMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in_opt  const WSDXML_ELEMENT *pAny,
            /* [annotation][in] */ 
            __in_opt  IUnknown *pAsyncState,
            /* [annotation][in] */ 
            __in_opt  IWSDAsyncCallback *pAsyncCallback,
            /* [annotation][out] */ 
            __deref_out  IWSDAsyncResult **ppResult);
        
        HRESULT ( STDMETHODCALLTYPE *EndGetStatusForMultipleOperations )( 
            IWSDServiceProxyEventing * This,
            /* [annotation][in] */ 
            __in_ecount(dwOperationCount)  const WSD_OPERATION *pOperations,
            /* [in] */ DWORD dwOperationCount,
            /* [annotation][in] */ 
            __in  IWSDAsyncResult *pResult,
            /* [annotation][out] */ 
            __deref_opt_out  WSD_EVENTING_EXPIRES **ppExpires,
            /* [annotation][out] */ 
            __deref_opt_out  WSDXML_ELEMENT **ppAny);
        
        END_INTERFACE
    } IWSDServiceProxyEventingVtbl;

    interface IWSDServiceProxyEventing
    {
        CONST_VTBL struct IWSDServiceProxyEventingVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDServiceProxyEventing_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDServiceProxyEventing_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDServiceProxyEventing_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDServiceProxyEventing_GetMetadata(This,MetadataOut)	\
    ( (This)->lpVtbl -> GetMetadata(This,MetadataOut) ) 


#define IWSDServiceProxyEventing_BeginGetMetadata(This,ppResult)	\
    ( (This)->lpVtbl -> BeginGetMetadata(This,ppResult) ) 

#define IWSDServiceProxyEventing_EndGetMetadata(This,pResult,ppMetadata)	\
    ( (This)->lpVtbl -> EndGetMetadata(This,pResult,ppMetadata) ) 

#define IWSDServiceProxyEventing_GetServiceMetadata(This,ppServiceMetadata)	\
    ( (This)->lpVtbl -> GetServiceMetadata(This,ppServiceMetadata) ) 

#define IWSDServiceProxyEventing_SubscribeToOperation(This,pOperation,pUnknown,pAny,ppAny)	\
    ( (This)->lpVtbl -> SubscribeToOperation(This,pOperation,pUnknown,pAny,ppAny) ) 

#define IWSDServiceProxyEventing_UnsubscribeToOperation(This,pOperation)	\
    ( (This)->lpVtbl -> UnsubscribeToOperation(This,pOperation) ) 

#define IWSDServiceProxyEventing_SetEventingStatusCallback(This,pStatus)	\
    ( (This)->lpVtbl -> SetEventingStatusCallback(This,pStatus) ) 

#define IWSDServiceProxyEventing_GetEndpointProxy(This,ppProxy)	\
    ( (This)->lpVtbl -> GetEndpointProxy(This,ppProxy) ) 


#define IWSDServiceProxyEventing_SubscribeToMultipleOperations(This,pOperations,dwOperationCount,pUnknown,pExpires,pAny,ppExpires,ppAny)	\
    ( (This)->lpVtbl -> SubscribeToMultipleOperations(This,pOperations,dwOperationCount,pUnknown,pExpires,pAny,ppExpires,ppAny) ) 

#define IWSDServiceProxyEventing_BeginSubscribeToMultipleOperations(This,pOperations,dwOperationCount,pUnknown,pExpires,pAny,pAsyncState,pAsyncCallback,ppResult)	\
    ( (This)->lpVtbl -> BeginSubscribeToMultipleOperations(This,pOperations,dwOperationCount,pUnknown,pExpires,pAny,pAsyncState,pAsyncCallback,ppResult) ) 

#define IWSDServiceProxyEventing_EndSubscribeToMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny)	\
    ( (This)->lpVtbl -> EndSubscribeToMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny) ) 

#define IWSDServiceProxyEventing_UnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pAny)	\
    ( (This)->lpVtbl -> UnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pAny) ) 

#define IWSDServiceProxyEventing_BeginUnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pAny,pAsyncState,pAsyncCallback,ppResult)	\
    ( (This)->lpVtbl -> BeginUnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pAny,pAsyncState,pAsyncCallback,ppResult) ) 

#define IWSDServiceProxyEventing_EndUnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pResult)	\
    ( (This)->lpVtbl -> EndUnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pResult) ) 

#define IWSDServiceProxyEventing_RenewMultipleOperations(This,pOperations,dwOperationCount,pExpires,pAny,ppExpires,ppAny)	\
    ( (This)->lpVtbl -> RenewMultipleOperations(This,pOperations,dwOperationCount,pExpires,pAny,ppExpires,ppAny) ) 

#define IWSDServiceProxyEventing_BeginRenewMultipleOperations(This,pOperations,dwOperationCount,pExpires,pAny,pAsyncState,pAsyncCallback,ppResult)	\
    ( (This)->lpVtbl -> BeginRenewMultipleOperations(This,pOperations,dwOperationCount,pExpires,pAny,pAsyncState,pAsyncCallback,ppResult) ) 

#define IWSDServiceProxyEventing_EndRenewMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny)	\
    ( (This)->lpVtbl -> EndRenewMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny) ) 

#define IWSDServiceProxyEventing_GetStatusForMultipleOperations(This,pOperations,dwOperationCount,pAny,ppExpires,ppAny)	\
    ( (This)->lpVtbl -> GetStatusForMultipleOperations(This,pOperations,dwOperationCount,pAny,ppExpires,ppAny) ) 

#define IWSDServiceProxyEventing_BeginGetStatusForMultipleOperations(This,pOperations,dwOperationCount,pAny,pAsyncState,pAsyncCallback,ppResult)	\
    ( (This)->lpVtbl -> BeginGetStatusForMultipleOperations(This,pOperations,dwOperationCount,pAny,pAsyncState,pAsyncCallback,ppResult) ) 

#define IWSDServiceProxyEventing_EndGetStatusForMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny)	\
    ( (This)->lpVtbl -> EndGetStatusForMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDServiceProxyEventing_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_wsdclient_0000_0003 */
/* [local] */ 

#endif


extern RPC_IF_HANDLE __MIDL_itf_wsdclient_0000_0003_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_wsdclient_0000_0003_v0_0_s_ifspec;

#ifndef __IWSDDeviceProxy_INTERFACE_DEFINED__
#define __IWSDDeviceProxy_INTERFACE_DEFINED__

/* interface IWSDDeviceProxy */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDDeviceProxy;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("eee0c031-c578-4c0e-9a3b-973c35f409db")
    IWSDDeviceProxy : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Init( 
            /* [annotation][in] */ 
            __in  LPCWSTR pszDeviceId,
            /* [in] */ IWSDAddress *pDeviceAddress,
            /* [annotation][in] */ 
            __in  LPCWSTR pszLocalId,
            /* [optional][in] */ IWSDXMLContext *pContext,
            /* [optional][in] */ IWSDDeviceProxy *pSponsor) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE BeginGetMetadata( 
            /* [out] */ IWSDAsyncResult **ppResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndGetMetadata( 
            /* [in] */ IWSDAsyncResult *pResult) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetHostMetadata( 
            /* [annotation][out] */ 
            __deref_out  WSD_HOST_METADATA **ppHostMetadata) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetThisModelMetadata( 
            /* [annotation][out] */ 
            __deref_out  WSD_THIS_MODEL_METADATA **ppManufacturerMetadata) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetThisDeviceMetadata( 
            /* [annotation][out] */ 
            __deref_out  WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAllMetadata( 
            /* [annotation][out] */ 
            __deref_out  WSD_METADATA_SECTION_LIST **ppMetadata) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetServiceProxyById( 
            /* [annotation][in] */ 
            __in  LPCWSTR pszServiceId,
            /* [annotation][out] */ 
            __deref_out  IWSDServiceProxy **ppServiceProxy) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetServiceProxyByType( 
            /* [in] */ const WSDXML_NAME *pType,
            /* [annotation][out] */ 
            __deref_out  IWSDServiceProxy **ppServiceProxy) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetEndpointProxy( 
            /* [annotation][out] */ 
            __deref_out  IWSDEndpointProxy **ppProxy) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDDeviceProxyVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDDeviceProxy * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDDeviceProxy * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDDeviceProxy * This);
        
        HRESULT ( STDMETHODCALLTYPE *Init )( 
            IWSDDeviceProxy * This,
            /* [annotation][in] */ 
            __in  LPCWSTR pszDeviceId,
            /* [in] */ IWSDAddress *pDeviceAddress,
            /* [annotation][in] */ 
            __in  LPCWSTR pszLocalId,
            /* [optional][in] */ IWSDXMLContext *pContext,
            /* [optional][in] */ IWSDDeviceProxy *pSponsor);
        
        HRESULT ( STDMETHODCALLTYPE *BeginGetMetadata )( 
            IWSDDeviceProxy * This,
            /* [out] */ IWSDAsyncResult **ppResult);
        
        HRESULT ( STDMETHODCALLTYPE *EndGetMetadata )( 
            IWSDDeviceProxy * This,
            /* [in] */ IWSDAsyncResult *pResult);
        
        HRESULT ( STDMETHODCALLTYPE *GetHostMetadata )( 
            IWSDDeviceProxy * This,
            /* [annotation][out] */ 
            __deref_out  WSD_HOST_METADATA **ppHostMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *GetThisModelMetadata )( 
            IWSDDeviceProxy * This,
            /* [annotation][out] */ 
            __deref_out  WSD_THIS_MODEL_METADATA **ppManufacturerMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *GetThisDeviceMetadata )( 
            IWSDDeviceProxy * This,
            /* [annotation][out] */ 
            __deref_out  WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *GetAllMetadata )( 
            IWSDDeviceProxy * This,
            /* [annotation][out] */ 
            __deref_out  WSD_METADATA_SECTION_LIST **ppMetadata);
        
        HRESULT ( STDMETHODCALLTYPE *GetServiceProxyById )( 
            IWSDDeviceProxy * This,
            /* [annotation][in] */ 
            __in  LPCWSTR pszServiceId,
            /* [annotation][out] */ 
            __deref_out  IWSDServiceProxy **ppServiceProxy);
        
        HRESULT ( STDMETHODCALLTYPE *GetServiceProxyByType )( 
            IWSDDeviceProxy * This,
            /* [in] */ const WSDXML_NAME *pType,
            /* [annotation][out] */ 
            __deref_out  IWSDServiceProxy **ppServiceProxy);
        
        HRESULT ( STDMETHODCALLTYPE *GetEndpointProxy )( 
            IWSDDeviceProxy * This,
            /* [annotation][out] */ 
            __deref_out  IWSDEndpointProxy **ppProxy);
        
        END_INTERFACE
    } IWSDDeviceProxyVtbl;

    interface IWSDDeviceProxy
    {
        CONST_VTBL struct IWSDDeviceProxyVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDDeviceProxy_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDDeviceProxy_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDDeviceProxy_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDDeviceProxy_Init(This,pszDeviceId,pDeviceAddress,pszLocalId,pContext,pSponsor)	\
    ( (This)->lpVtbl -> Init(This,pszDeviceId,pDeviceAddress,pszLocalId,pContext,pSponsor) ) 

#define IWSDDeviceProxy_BeginGetMetadata(This,ppResult)	\
    ( (This)->lpVtbl -> BeginGetMetadata(This,ppResult) ) 

#define IWSDDeviceProxy_EndGetMetadata(This,pResult)	\
    ( (This)->lpVtbl -> EndGetMetadata(This,pResult) ) 

#define IWSDDeviceProxy_GetHostMetadata(This,ppHostMetadata)	\
    ( (This)->lpVtbl -> GetHostMetadata(This,ppHostMetadata) ) 

#define IWSDDeviceProxy_GetThisModelMetadata(This,ppManufacturerMetadata)	\
    ( (This)->lpVtbl -> GetThisModelMetadata(This,ppManufacturerMetadata) ) 

#define IWSDDeviceProxy_GetThisDeviceMetadata(This,ppThisDeviceMetadata)	\
    ( (This)->lpVtbl -> GetThisDeviceMetadata(This,ppThisDeviceMetadata) ) 

#define IWSDDeviceProxy_GetAllMetadata(This,ppMetadata)	\
    ( (This)->lpVtbl -> GetAllMetadata(This,ppMetadata) ) 

#define IWSDDeviceProxy_GetServiceProxyById(This,pszServiceId,ppServiceProxy)	\
    ( (This)->lpVtbl -> GetServiceProxyById(This,pszServiceId,ppServiceProxy) ) 

#define IWSDDeviceProxy_GetServiceProxyByType(This,pType,ppServiceProxy)	\
    ( (This)->lpVtbl -> GetServiceProxyByType(This,pType,ppServiceProxy) ) 

#define IWSDDeviceProxy_GetEndpointProxy(This,ppProxy)	\
    ( (This)->lpVtbl -> GetEndpointProxy(This,ppProxy) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDDeviceProxy_INTERFACE_DEFINED__ */


#ifndef __IWSDAsyncResult_INTERFACE_DEFINED__
#define __IWSDAsyncResult_INTERFACE_DEFINED__

/* interface IWSDAsyncResult */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDAsyncResult;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("11a9852a-8dd8-423e-b537-9356db4fbfb8")
    IWSDAsyncResult : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
            /* [in] */ IWSDAsyncCallback *pCallback,
            /* [in] */ IUnknown *pAsyncState) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetWaitHandle( 
            /* [in] */ HANDLE hWaitHandle) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE HasCompleted( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAsyncState( 
            /* [annotation][out] */ 
            __deref_out  IUnknown **ppAsyncState) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetEvent( 
            /* [annotation][out] */ 
            __out  WSD_EVENT *pEvent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetEndpointProxy( 
            /* [annotation][out] */ 
            __deref_out  IWSDEndpointProxy **ppEndpoint) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDAsyncResultVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDAsyncResult * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDAsyncResult * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDAsyncResult * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
            IWSDAsyncResult * This,
            /* [in] */ IWSDAsyncCallback *pCallback,
            /* [in] */ IUnknown *pAsyncState);
        
        HRESULT ( STDMETHODCALLTYPE *SetWaitHandle )( 
            IWSDAsyncResult * This,
            /* [in] */ HANDLE hWaitHandle);
        
        HRESULT ( STDMETHODCALLTYPE *HasCompleted )( 
            IWSDAsyncResult * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetAsyncState )( 
            IWSDAsyncResult * This,
            /* [annotation][out] */ 
            __deref_out  IUnknown **ppAsyncState);
        
        HRESULT ( STDMETHODCALLTYPE *Abort )( 
            IWSDAsyncResult * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetEvent )( 
            IWSDAsyncResult * This,
            /* [annotation][out] */ 
            __out  WSD_EVENT *pEvent);
        
        HRESULT ( STDMETHODCALLTYPE *GetEndpointProxy )( 
            IWSDAsyncResult * This,
            /* [annotation][out] */ 
            __deref_out  IWSDEndpointProxy **ppEndpoint);
        
        END_INTERFACE
    } IWSDAsyncResultVtbl;

    interface IWSDAsyncResult
    {
        CONST_VTBL struct IWSDAsyncResultVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDAsyncResult_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDAsyncResult_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDAsyncResult_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDAsyncResult_SetCallback(This,pCallback,pAsyncState)	\
    ( (This)->lpVtbl -> SetCallback(This,pCallback,pAsyncState) ) 

#define IWSDAsyncResult_SetWaitHandle(This,hWaitHandle)	\
    ( (This)->lpVtbl -> SetWaitHandle(This,hWaitHandle) ) 

#define IWSDAsyncResult_HasCompleted(This)	\
    ( (This)->lpVtbl -> HasCompleted(This) ) 

#define IWSDAsyncResult_GetAsyncState(This,ppAsyncState)	\
    ( (This)->lpVtbl -> GetAsyncState(This,ppAsyncState) ) 

#define IWSDAsyncResult_Abort(This)	\
    ( (This)->lpVtbl -> Abort(This) ) 

#define IWSDAsyncResult_GetEvent(This,pEvent)	\
    ( (This)->lpVtbl -> GetEvent(This,pEvent) ) 

#define IWSDAsyncResult_GetEndpointProxy(This,ppEndpoint)	\
    ( (This)->lpVtbl -> GetEndpointProxy(This,ppEndpoint) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDAsyncResult_INTERFACE_DEFINED__ */


#ifndef __IWSDAsyncCallback_INTERFACE_DEFINED__
#define __IWSDAsyncCallback_INTERFACE_DEFINED__

/* interface IWSDAsyncCallback */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDAsyncCallback;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("a63e109d-ce72-49e2-ba98-e845f5ee1666")
    IWSDAsyncCallback : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE AsyncOperationComplete( 
            /* [in] */ IWSDAsyncResult *pAsyncResult,
            /* [in] */ IUnknown *pAsyncState) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDAsyncCallbackVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDAsyncCallback * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDAsyncCallback * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDAsyncCallback * This);
        
        HRESULT ( STDMETHODCALLTYPE *AsyncOperationComplete )( 
            IWSDAsyncCallback * This,
            /* [in] */ IWSDAsyncResult *pAsyncResult,
            /* [in] */ IUnknown *pAsyncState);
        
        END_INTERFACE
    } IWSDAsyncCallbackVtbl;

    interface IWSDAsyncCallback
    {
        CONST_VTBL struct IWSDAsyncCallbackVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDAsyncCallback_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDAsyncCallback_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDAsyncCallback_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDAsyncCallback_AsyncOperationComplete(This,pAsyncResult,pAsyncState)	\
    ( (This)->lpVtbl -> AsyncOperationComplete(This,pAsyncResult,pAsyncState) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDAsyncCallback_INTERFACE_DEFINED__ */


#ifndef __IWSDEventingStatus_INTERFACE_DEFINED__
#define __IWSDEventingStatus_INTERFACE_DEFINED__

/* interface IWSDEventingStatus */
/* [local][restricted][unique][helpstring][uuid][object] */ 


EXTERN_C const IID IID_IWSDEventingStatus;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("49b17f52-637a-407a-ae99-fbe82a4d38c0")
    IWSDEventingStatus : public IUnknown
    {
    public:
        virtual void STDMETHODCALLTYPE SubscriptionRenewed( 
            /* [annotation][in] */ 
            __in  LPCWSTR pszSubscriptionAction) = 0;
        
        virtual void STDMETHODCALLTYPE SubscriptionRenewalFailed( 
            /* [annotation][in] */ 
            __in  LPCWSTR pszSubscriptionAction,
            /* [in] */ HRESULT hr) = 0;
        
        virtual void STDMETHODCALLTYPE SubscriptionEnded( 
            /* [annotation][in] */ 
            __in  LPCWSTR pszSubscriptionAction) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWSDEventingStatusVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWSDEventingStatus * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWSDEventingStatus * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWSDEventingStatus * This);
        
        void ( STDMETHODCALLTYPE *SubscriptionRenewed )( 
            IWSDEventingStatus * This,
            /* [annotation][in] */ 
            __in  LPCWSTR pszSubscriptionAction);
        
        void ( STDMETHODCALLTYPE *SubscriptionRenewalFailed )( 
            IWSDEventingStatus * This,
            /* [annotation][in] */ 
            __in  LPCWSTR pszSubscriptionAction,
            /* [in] */ HRESULT hr);
        
        void ( STDMETHODCALLTYPE *SubscriptionEnded )( 
            IWSDEventingStatus * This,
            /* [annotation][in] */ 
            __in  LPCWSTR pszSubscriptionAction);
        
        END_INTERFACE
    } IWSDEventingStatusVtbl;

    interface IWSDEventingStatus
    {
        CONST_VTBL struct IWSDEventingStatusVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWSDEventingStatus_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWSDEventingStatus_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWSDEventingStatus_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWSDEventingStatus_SubscriptionRenewed(This,pszSubscriptionAction)	\
    ( (This)->lpVtbl -> SubscriptionRenewed(This,pszSubscriptionAction) ) 

#define IWSDEventingStatus_SubscriptionRenewalFailed(This,pszSubscriptionAction,hr)	\
    ( (This)->lpVtbl -> SubscriptionRenewalFailed(This,pszSubscriptionAction,hr) ) 

#define IWSDEventingStatus_SubscriptionEnded(This,pszSubscriptionAction)	\
    ( (This)->lpVtbl -> SubscriptionEnded(This,pszSubscriptionAction) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWSDEventingStatus_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



