Update wsd-API
- missing Vista/Win7/Win8 API
- add winapi-family
- transite from header to idl-autogenerated



git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@6515 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-headers/Makefile.am b/mingw-w64-headers/Makefile.am
index 2a74658..f0c9d2a 100644
--- a/mingw-w64-headers/Makefile.am
+++ b/mingw-w64-headers/Makefile.am
@@ -119,6 +119,12 @@
   include/wmcontainer.idl \
   include/wmsbuffer.idl \
   include/wmsdkidl.idl \
+  include/wsdattachment.idl \
+  include/wsdbase.idl \
+  include/wsdclient.idl \
+  include/wsddisco.idl \
+  include/wsdhost.idl \
+  include/wsdxml.idl \
   include/wtypesbase.idl \
   include/windows.foundation.idl \
   include/windows.security.cryptography.idl \
diff --git a/mingw-w64-headers/Makefile.in b/mingw-w64-headers/Makefile.in
index 62b4a5b..76768eb 100644
--- a/mingw-w64-headers/Makefile.in
+++ b/mingw-w64-headers/Makefile.in
@@ -343,6 +343,12 @@
 @HAVE_WIDL_TRUE@  include/wmcontainer.idl \
 @HAVE_WIDL_TRUE@  include/wmsbuffer.idl \
 @HAVE_WIDL_TRUE@  include/wmsdkidl.idl \
+@HAVE_WIDL_TRUE@  include/wsdattachment.idl \
+@HAVE_WIDL_TRUE@  include/wsdbase.idl \
+@HAVE_WIDL_TRUE@  include/wsdclient.idl \
+@HAVE_WIDL_TRUE@  include/wsddisco.idl \
+@HAVE_WIDL_TRUE@  include/wsdhost.idl \
+@HAVE_WIDL_TRUE@  include/wsdxml.idl \
 @HAVE_WIDL_TRUE@  include/wtypesbase.idl \
 @HAVE_WIDL_TRUE@  include/windows.foundation.idl \
 @HAVE_WIDL_TRUE@  include/windows.security.cryptography.idl \
diff --git a/mingw-w64-headers/include/wsdattachment.h b/mingw-w64-headers/include/wsdattachment.h
index d784449..dc324e4 100644
--- a/mingw-w64-headers/include/wsdattachment.h
+++ b/mingw-w64-headers/include/wsdattachment.h
@@ -1,102 +1,374 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_WSDATTACHMENT
-#define _INC_WSDATTACHMENT
+/*** Autogenerated by WIDL 1.6 from wsdattachment.idl - Do not edit ***/
 
-#ifndef _INC_WSDAPI
-#error Please include wsdapi.h instead of this header. This header cannot be used directly.
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
 #endif
 
-#if (_WIN32_WINNT >= 0x0600)
+#include <rpc.h>
+#include <rpcndr.h>
 
-#undef  INTERFACE
-#define INTERFACE IWSDAttachment
-DECLARE_INTERFACE_(IWSDAttachment,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
 #endif
-    /* IWSDAttachment methods */
 
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IWSDAttachment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDAttachment_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDAttachment_Release(This) (This)->lpVtbl->Release(This)
-#endif /*COBJMACROS*/
+#ifndef __wsdattachment_h__
+#define __wsdattachment_h__
 
-#undef  INTERFACE
-#define INTERFACE IWSDInboundAttachment
-DECLARE_INTERFACE_(IWSDInboundAttachment,IWSDAttachment) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+/* Forward declarations */
 
-    /* IWSDAttachment methods */
+#ifndef __IWSDAttachment_FWD_DEFINED__
+#define __IWSDAttachment_FWD_DEFINED__
+typedef interface IWSDAttachment IWSDAttachment;
 #endif
-    /* IWSDInboundAttachment methods */
-    STDMETHOD_(HRESULT,Read)(THIS_ BYTE *pBuffer,DWORD dwBytesToRead,LPDWORD pdwNumberofBytesRead) PURE;
-    STDMETHOD_(HRESULT,Close)(THIS) PURE;
 
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IWSDInboundAttachment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDInboundAttachment_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDInboundAttachment_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDInboundAttachment_Read(This,pBuffer,dwBytesToRead,pdwNumberofBytesRead) (This)->lpVtbl->Read(This,pBuffer,dwBytesToRead,pdwNumberofBytesRead)
-#define IWSDInboundAttachment_Close() (This)->lpVtbl->Close(This)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDOutboundAttachment
-DECLARE_INTERFACE_(IWSDOutboundAttachment,IWSDAttachment) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IWSDAttachment methods */
+#ifndef __IWSDInboundAttachment_FWD_DEFINED__
+#define __IWSDInboundAttachment_FWD_DEFINED__
+typedef interface IWSDInboundAttachment IWSDInboundAttachment;
 #endif
-    /* IWSDOutboundAttachment methods */
-    STDMETHOD_(HRESULT,Write)(THIS_ const BYTE *pBuffer,DWORD dwBytesToWrite,LPDWORD pdwNumberofBytesWritten) PURE;
-    STDMETHOD_(HRESULT,Close)(THIS) PURE;
-    STDMETHOD_(HRESULT,Abort)(THIS) PURE;
 
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IWSDOutboundAttachment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDOutboundAttachment_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDOutboundAttachment_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDOutboundAttachment_Write(This,pBuffer,dwBytesToWrite,pdwNumberofBytesWritten) (This)->lpVtbl->Write(This,pBuffer,dwBytesToWrite,pdwNumberofBytesWritten)
-#define IWSDOutboundAttachment_Close() (This)->lpVtbl->Close(This)
-#define IWSDOutboundAttachment_Abort() (This)->lpVtbl->Abort(This)
-#endif /*COBJMACROS*/
+#ifndef __IWSDOutboundAttachment_FWD_DEFINED__
+#define __IWSDOutboundAttachment_FWD_DEFINED__
+typedef interface IWSDOutboundAttachment IWSDOutboundAttachment;
+#endif
+
+/* Headers for imported files */
+
+#include <objidl.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-HRESULT WINAPI WSDCreateOutboundAttachment(
-  IWSDOutboundAttachment **attachmentOut
-);
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifndef _INC_WSDAPI
+#error Please include wsdapi.h instead of this header. This header cannot be used directly.
+#endif
+
+#ifndef __IWSDAttachment_FWD_DEFINED__
+#define __IWSDAttachment_FWD_DEFINED__
+typedef interface IWSDAttachment IWSDAttachment;
+#endif
+
+#ifndef __IWSDInboundAttachment_FWD_DEFINED__
+#define __IWSDInboundAttachment_FWD_DEFINED__
+typedef interface IWSDInboundAttachment IWSDInboundAttachment;
+#endif
+
+#ifndef __IWSDOutboundAttachment_FWD_DEFINED__
+#define __IWSDOutboundAttachment_FWD_DEFINED__
+typedef interface IWSDOutboundAttachment IWSDOutboundAttachment;
+#endif
+
+
+/*****************************************************************************
+ * IWSDAttachment interface
+ */
+#ifndef __IWSDAttachment_INTERFACE_DEFINED__
+#define __IWSDAttachment_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDAttachment, 0x5d55a616, 0x9df8, 0x4b09, 0xb1,0x56, 0x9b,0xa3,0x51,0xa4,0x8b,0x76);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5d55a616-9df8-4b09-b156-9ba351a48b76")
+IWSDAttachment : public IUnknown
+{
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDAttachment, 0x5d55a616, 0x9df8, 0x4b09, 0xb1,0x56, 0x9b,0xa3,0x51,0xa4,0x8b,0x76)
+#endif
+#else
+typedef struct IWSDAttachmentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDAttachment* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDAttachment* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDAttachment* This);
+
+    END_INTERFACE
+} IWSDAttachmentVtbl;
+interface IWSDAttachment {
+    CONST_VTBL IWSDAttachmentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDAttachment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDAttachment_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDAttachment_Release(This) (This)->lpVtbl->Release(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDAttachment_QueryInterface(IWSDAttachment* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDAttachment_AddRef(IWSDAttachment* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDAttachment_Release(IWSDAttachment* This) {
+    return This->lpVtbl->Release(This);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IWSDAttachment_INTERFACE_DEFINED__ */
+
+
+/*****************************************************************************
+ * IWSDInboundAttachment interface
+ */
+#ifndef __IWSDInboundAttachment_INTERFACE_DEFINED__
+#define __IWSDInboundAttachment_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDInboundAttachment, 0x5bd6ca65, 0x233c, 0x4fb8, 0x9f,0x7a, 0x26,0x41,0x61,0x96,0x55,0xc9);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("5bd6ca65-233c-4fb8-9f7a-2641619655c9")
+IWSDInboundAttachment : public IWSDAttachment
+{
+    virtual HRESULT STDMETHODCALLTYPE Read(
+        BYTE *pBuffer,
+        DWORD dwBytesToRead,
+        LPDWORD pdwNumberOfBytesRead) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Close(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDInboundAttachment, 0x5bd6ca65, 0x233c, 0x4fb8, 0x9f,0x7a, 0x26,0x41,0x61,0x96,0x55,0xc9)
+#endif
+#else
+typedef struct IWSDInboundAttachmentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDInboundAttachment* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDInboundAttachment* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDInboundAttachment* This);
+
+    /*** IWSDInboundAttachment methods ***/
+    HRESULT (STDMETHODCALLTYPE *Read)(
+        IWSDInboundAttachment* This,
+        BYTE *pBuffer,
+        DWORD dwBytesToRead,
+        LPDWORD pdwNumberOfBytesRead);
+
+    HRESULT (STDMETHODCALLTYPE *Close)(
+        IWSDInboundAttachment* This);
+
+    END_INTERFACE
+} IWSDInboundAttachmentVtbl;
+interface IWSDInboundAttachment {
+    CONST_VTBL IWSDInboundAttachmentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDInboundAttachment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDInboundAttachment_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDInboundAttachment_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDInboundAttachment methods ***/
+#define IWSDInboundAttachment_Read(This,pBuffer,dwBytesToRead,pdwNumberOfBytesRead) (This)->lpVtbl->Read(This,pBuffer,dwBytesToRead,pdwNumberOfBytesRead)
+#define IWSDInboundAttachment_Close(This) (This)->lpVtbl->Close(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDInboundAttachment_QueryInterface(IWSDInboundAttachment* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDInboundAttachment_AddRef(IWSDInboundAttachment* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDInboundAttachment_Release(IWSDInboundAttachment* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDInboundAttachment methods ***/
+static FORCEINLINE HRESULT IWSDInboundAttachment_Read(IWSDInboundAttachment* This,BYTE *pBuffer,DWORD dwBytesToRead,LPDWORD pdwNumberOfBytesRead) {
+    return This->lpVtbl->Read(This,pBuffer,dwBytesToRead,pdwNumberOfBytesRead);
+}
+static FORCEINLINE HRESULT IWSDInboundAttachment_Close(IWSDInboundAttachment* This) {
+    return This->lpVtbl->Close(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDInboundAttachment_Read_Proxy(
+    IWSDInboundAttachment* This,
+    BYTE *pBuffer,
+    DWORD dwBytesToRead,
+    LPDWORD pdwNumberOfBytesRead);
+void __RPC_STUB IWSDInboundAttachment_Read_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDInboundAttachment_Close_Proxy(
+    IWSDInboundAttachment* This);
+void __RPC_STUB IWSDInboundAttachment_Close_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDInboundAttachment_INTERFACE_DEFINED__ */
+
+
+/*****************************************************************************
+ * IWSDOutboundAttachment interface
+ */
+#ifndef __IWSDOutboundAttachment_INTERFACE_DEFINED__
+#define __IWSDOutboundAttachment_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDOutboundAttachment, 0xaa302f8d, 0x5a22, 0x4ba5, 0xb3,0x92, 0xaa,0x84,0x86,0xf4,0xc1,0x5d);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("aa302f8d-5a22-4ba5-b392-aa8486f4c15d")
+IWSDOutboundAttachment : public IWSDAttachment
+{
+    virtual HRESULT STDMETHODCALLTYPE Write(
+        const BYTE *pBuffer,
+        DWORD dwBytesToWrite,
+        LPDWORD pdwNumberOfBytesWritten) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Close(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Abort(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDOutboundAttachment, 0xaa302f8d, 0x5a22, 0x4ba5, 0xb3,0x92, 0xaa,0x84,0x86,0xf4,0xc1,0x5d)
+#endif
+#else
+typedef struct IWSDOutboundAttachmentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDOutboundAttachment* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDOutboundAttachment* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDOutboundAttachment* This);
+
+    /*** IWSDOutboundAttachment methods ***/
+    HRESULT (STDMETHODCALLTYPE *Write)(
+        IWSDOutboundAttachment* This,
+        const BYTE *pBuffer,
+        DWORD dwBytesToWrite,
+        LPDWORD pdwNumberOfBytesWritten);
+
+    HRESULT (STDMETHODCALLTYPE *Close)(
+        IWSDOutboundAttachment* This);
+
+    HRESULT (STDMETHODCALLTYPE *Abort)(
+        IWSDOutboundAttachment* This);
+
+    END_INTERFACE
+} IWSDOutboundAttachmentVtbl;
+interface IWSDOutboundAttachment {
+    CONST_VTBL IWSDOutboundAttachmentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDOutboundAttachment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDOutboundAttachment_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDOutboundAttachment_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDOutboundAttachment methods ***/
+#define IWSDOutboundAttachment_Write(This,pBuffer,dwBytesToWrite,pdwNumberOfBytesWritten) (This)->lpVtbl->Write(This,pBuffer,dwBytesToWrite,pdwNumberOfBytesWritten)
+#define IWSDOutboundAttachment_Close(This) (This)->lpVtbl->Close(This)
+#define IWSDOutboundAttachment_Abort(This) (This)->lpVtbl->Abort(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDOutboundAttachment_QueryInterface(IWSDOutboundAttachment* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDOutboundAttachment_AddRef(IWSDOutboundAttachment* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDOutboundAttachment_Release(IWSDOutboundAttachment* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDOutboundAttachment methods ***/
+static FORCEINLINE HRESULT IWSDOutboundAttachment_Write(IWSDOutboundAttachment* This,const BYTE *pBuffer,DWORD dwBytesToWrite,LPDWORD pdwNumberOfBytesWritten) {
+    return This->lpVtbl->Write(This,pBuffer,dwBytesToWrite,pdwNumberOfBytesWritten);
+}
+static FORCEINLINE HRESULT IWSDOutboundAttachment_Close(IWSDOutboundAttachment* This) {
+    return This->lpVtbl->Close(This);
+}
+static FORCEINLINE HRESULT IWSDOutboundAttachment_Abort(IWSDOutboundAttachment* This) {
+    return This->lpVtbl->Abort(This);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDOutboundAttachment_Write_Proxy(
+    IWSDOutboundAttachment* This,
+    const BYTE *pBuffer,
+    DWORD dwBytesToWrite,
+    LPDWORD pdwNumberOfBytesWritten);
+void __RPC_STUB IWSDOutboundAttachment_Write_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDOutboundAttachment_Close_Proxy(
+    IWSDOutboundAttachment* This);
+void __RPC_STUB IWSDOutboundAttachment_Close_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDOutboundAttachment_Abort_Proxy(
+    IWSDOutboundAttachment* This);
+void __RPC_STUB IWSDOutboundAttachment_Abort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDOutboundAttachment_INTERFACE_DEFINED__ */
+
+
+HRESULT WINAPI WSDCreateOutboundAttachment(IWSDOutboundAttachment **ppAttachment);
+#endif
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_WSDATTACHMENT*/
+#endif /* __wsdattachment_h__ */
diff --git a/mingw-w64-headers/include/wsdattachment.idl b/mingw-w64-headers/include/wsdattachment.idl
new file mode 100644
index 0000000..9ecae56
--- /dev/null
+++ b/mingw-w64-headers/include/wsdattachment.idl
@@ -0,0 +1,43 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "objidl.idl";
+
+cpp_quote("")
+cpp_quote("#ifndef _INC_WSDAPI")
+cpp_quote("#error Please include wsdapi.h instead of this header. This header cannot be used directly.")
+cpp_quote("#endif")
+cpp_quote("")
+
+interface IWSDAttachment;
+interface IWSDInboundAttachment;
+interface IWSDOutboundAttachment;
+
+cpp_quote("")
+[object, uuid (5d55a616-9df8-4b09-b156-9ba351a48b76)]
+interface IWSDAttachment : IUnknown {
+}
+
+cpp_quote("")
+[object, local, uuid (5bd6ca65-233c-4fb8-9f7a-2641619655c9)]
+interface IWSDInboundAttachment : IWSDAttachment {
+  HRESULT Read ([out, size_is (dwBytesToRead), length_is (*pdwNumberOfBytesRead)] BYTE *pBuffer,[in] DWORD dwBytesToRead,[out] LPDWORD pdwNumberOfBytesRead);
+  HRESULT Close ();
+}
+
+cpp_quote("")
+[object, local, uuid (aa302f8d-5a22-4ba5-b392-aa8486f4c15d)]
+interface IWSDOutboundAttachment : IWSDAttachment {
+  HRESULT Write ([in, size_is (dwBytesToWrite)] const BYTE *pBuffer,[in] DWORD dwBytesToWrite,[out] LPDWORD pdwNumberOfBytesWritten);
+  HRESULT Close ();
+  HRESULT Abort ();
+}
+
+cpp_quote("")
+cpp_quote("HRESULT WINAPI WSDCreateOutboundAttachment(IWSDOutboundAttachment **ppAttachment);")
+cpp_quote("#endif")
diff --git a/mingw-w64-headers/include/wsdbase.h b/mingw-w64-headers/include/wsdbase.h
index f11da46..15c6116 100644
--- a/mingw-w64-headers/include/wsdbase.h
+++ b/mingw-w64-headers/include/wsdbase.h
@@ -1,255 +1,1267 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+/*** Autogenerated by WIDL 1.6 from wsdbase.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __wsdbase_h__
+#define __wsdbase_h__
+
+/* Forward declarations */
+
+#ifndef __IWSDAddress_FWD_DEFINED__
+#define __IWSDAddress_FWD_DEFINED__
+typedef interface IWSDAddress IWSDAddress;
+#endif
+
+#ifndef __IWSDTransportAddress_FWD_DEFINED__
+#define __IWSDTransportAddress_FWD_DEFINED__
+typedef interface IWSDTransportAddress IWSDTransportAddress;
+#endif
+
+#ifndef __IWSDMessageParameters_FWD_DEFINED__
+#define __IWSDMessageParameters_FWD_DEFINED__
+typedef interface IWSDMessageParameters IWSDMessageParameters;
+#endif
+
+#ifndef __IWSDUdpMessageParameters_FWD_DEFINED__
+#define __IWSDUdpMessageParameters_FWD_DEFINED__
+typedef interface IWSDUdpMessageParameters IWSDUdpMessageParameters;
+#endif
+
+#ifndef __IWSDUdpAddress_FWD_DEFINED__
+#define __IWSDUdpAddress_FWD_DEFINED__
+typedef interface IWSDUdpAddress IWSDUdpAddress;
+#endif
+
+#ifndef __IWSDHttpMessageParameters_FWD_DEFINED__
+#define __IWSDHttpMessageParameters_FWD_DEFINED__
+typedef interface IWSDHttpMessageParameters IWSDHttpMessageParameters;
+#endif
+
+#ifndef __IWSDHttpAddress_FWD_DEFINED__
+#define __IWSDHttpAddress_FWD_DEFINED__
+typedef interface IWSDHttpAddress IWSDHttpAddress;
+#endif
+
+#ifndef __IWSDSSLClientCertificate_FWD_DEFINED__
+#define __IWSDSSLClientCertificate_FWD_DEFINED__
+typedef interface IWSDSSLClientCertificate IWSDSSLClientCertificate;
+#endif
+
+#ifndef __IWSDHttpAuthParameters_FWD_DEFINED__
+#define __IWSDHttpAuthParameters_FWD_DEFINED__
+typedef interface IWSDHttpAuthParameters IWSDHttpAuthParameters;
+#endif
+
+#ifndef __IWSDSignatureProperty_FWD_DEFINED__
+#define __IWSDSignatureProperty_FWD_DEFINED__
+typedef interface IWSDSignatureProperty IWSDSignatureProperty;
+#endif
+
+/* Headers for imported files */
+
+#include <objidl.h>
+#include <wincrypt.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifndef __IWSDAddress_FWD_DEFINED__
+#define __IWSDAddress_FWD_DEFINED__
+typedef interface IWSDAddress IWSDAddress;
+#endif
+
+#ifndef __IWSDMessageParameters_FWD_DEFINED__
+#define __IWSDMessageParameters_FWD_DEFINED__
+typedef interface IWSDMessageParameters IWSDMessageParameters;
+#endif
+
+#ifndef __IWSDUdpAddress_FWD_DEFINED__
+#define __IWSDUdpAddress_FWD_DEFINED__
+typedef interface IWSDUdpAddress IWSDUdpAddress;
+#endif
+
+#ifndef __IWSDUdpMessageParameters_FWD_DEFINED__
+#define __IWSDUdpMessageParameters_FWD_DEFINED__
+typedef interface IWSDUdpMessageParameters IWSDUdpMessageParameters;
+#endif
+
+#ifndef __IWSDHttpAddress_FWD_DEFINED__
+#define __IWSDHttpAddress_FWD_DEFINED__
+typedef interface IWSDHttpAddress IWSDHttpAddress;
+#endif
+
+#ifndef __IWSDHttpMessageParameters_FWD_DEFINED__
+#define __IWSDHttpMessageParameters_FWD_DEFINED__
+typedef interface IWSDHttpMessageParameters IWSDHttpMessageParameters;
+#endif
+
+
+#if WINVER >= 0x601
+typedef enum __WIDL_wsdbase_generated_name_00000005 {
+    WSD_CONFIG_MAX_INBOUND_MESSAGE_SIZE = 1,
+    WSD_CONFIG_MAX_OUTBOUND_MESSAGE_SIZE = 2,
+    WSD_SECURITY_SSL_CERT_FOR_CLIENT_AUTH = 3,
+    WSD_SECURITY_SSL_SERVER_CERT_VALIDATION = 4,
+    WSD_SECURITY_SSL_CLIENT_CERT_VALIDATION = 5,
+    WSD_SECURITY_SSL_NEGOTIATE_CLIENT_CERT = 6,
+    WSD_SECURITY_COMPACTSIG_SIGNING_CERT = 7,
+    WSD_SECURITY_COMPACTSIG_VALIDATION = 8,
+    WSD_CONFIG_HOSTING_ADDRESSES = 9,
+    WSD_CONFIG_DEVICE_ADDRESSES = 10,
+    WSD_SECURITY_REQUIRE_HTTP_CLIENT_AUTH = 11,
+    WSD_SECURITY_REQUIRE_CLIENT_CERT_OR_HTTP_CLIENT_AUTH = 12,
+    WSD_SECURITY_USE_HTTP_CLIENT_AUTH = 13
+} WSD_CONFIG_PARAM_TYPE;
+typedef struct _WSD_CONFIG_PARAM {
+    WSD_CONFIG_PARAM_TYPE configParamType;
+    PVOID pConfigData;
+    DWORD dwConfigDataSize;
+} WSD_CONFIG_PARAM;
+typedef struct _WSD_CONFIG_PARAM *PWSD_CONFIG_PARAM;
+typedef struct _WSD_SECURITY_CERT_VALIDATION_V1 {
+    PCCERT_CONTEXT *certMatchArray;
+    DWORD dwCertMatchArrayCount;
+    HCERTSTORE hCertMatchStore;
+    HCERTSTORE hCertIssuerStore;
+    DWORD dwCertCheckOptions;
+} WSD_SECURITY_CERT_VALIDATION_V1;
+#if _WIN32_WINNT >= 0x602
+typedef struct _WSD_SECURITY_CERT_VALIDATION {
+    PCCERT_CONTEXT *certMatchArray;
+    DWORD dwCertMatchArrayCount;
+    HCERTSTORE hCertMatchStore;
+    HCERTSTORE hCertIssuerStore;
+    DWORD dwCertCheckOptions;
+    LPCWSTR pszCNGHashAlgId;
+    BYTE *pbCertHash;
+    DWORD dwCertHashSize;
+} WSD_SECURITY_CERT_VALIDATION;
+#else
+typedef WSD_SECURITY_CERT_VALIDATION_V1 WSD_SECURITY_CERT_VALIDATION;
+#endif
+
+typedef WSD_SECURITY_CERT_VALIDATION *PWSD_SECURITY_CERT_VALIDATION;
+typedef struct _WSD_SECURITY_SIGNATURE_VALIDATION {
+    PCCERT_CONTEXT *signingCertArray;
+    DWORD dwSigningCertArrayCount;
+    HCERTSTORE hSigningCertStore;
+    DWORD dwFlags;
+} WSD_SECURITY_SIGNATURE_VALIDATION;
+typedef struct _WSD_SECURITY_SIGNATURE_VALIDATION *PWSD_SECURITY_SIGNATURE_VALIDATION;
+typedef DWORD WSD_SECURITY_HTTP_AUTH_SCHEMES;
+typedef DWORD *PWSD_SECURITY_HTTP_AUTH_SCHEMES;
+
+#define WSDAPI_SSL_CERT_APPLY_DEFAULT_CHECKS 0x0
+#define WSDAPI_SSL_CERT_IGNORE_REVOCATION 0x1
+#define WSDAPI_SSL_CERT_IGNORE_EXPIRY 0x2
+#define WSDAPI_SSL_CERT_IGNORE_WRONG_USAGE 0x4
+#define WSDAPI_SSL_CERT_IGNORE_UNKNOWN_CA 0x8
+#define WSDAPI_SSL_CERT_IGNORE_INVALID_CN 0x10
+
+#define WSDAPI_COMPACTSIG_ACCEPT_ALL_MESSAGES 0x1
+
+#define WSD_SECURITY_HTTP_AUTH_SCHEME_NEGOTIATE 0x1
+#define WSD_SECURITY_HTTP_AUTH_SCHEME_NTLM 0x2
+
+typedef struct _WSD_CONFIG_ADDRESSES {
+    IWSDAddress **addresses;
+    DWORD dwAddressCount;
+} WSD_CONFIG_ADDRESSES;
+typedef struct _WSD_CONFIG_ADDRESSES *PWSD_CONFIG_ADDRESSES;
+#endif
+#define WSDAPI_ADDRESSFAMILY_IPV4 1
+#define WSDAPI_ADDRESSFAMILY_IPV6 2
+/*****************************************************************************
+ * IWSDAddress interface
  */
-#ifndef _INC_WSDBASE
-#define _INC_WSDBASE
+#ifndef __IWSDAddress_INTERFACE_DEFINED__
+#define __IWSDAddress_INTERFACE_DEFINED__
 
-#ifndef _INC_WSDAPI
-#error Please include wsdapi.h instead of this header. This header cannot be used directly.
+DEFINE_GUID(IID_IWSDAddress, 0xb9574c6c, 0x12a6, 0x4f74, 0x93,0xa1, 0x33,0x18,0xff,0x60,0x57,0x59);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b9574c6c-12a6-4f74-93a1-3318ff605759")
+IWSDAddress : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Serialize(
+        LPWSTR pszBuffer,
+        DWORD cchLength,
+        WINBOOL fSafe) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Deserialize(
+        LPCWSTR pszBuffer) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDAddress, 0xb9574c6c, 0x12a6, 0x4f74, 0x93,0xa1, 0x33,0x18,0xff,0x60,0x57,0x59)
 #endif
+#else
+typedef struct IWSDAddressVtbl {
+    BEGIN_INTERFACE
 
-#if (_WIN32_WINNT >= 0x0600)
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDAddress* This,
+        REFIID riid,
+        void **ppvObject);
 
-typedef enum _WSDUdpMessageType {
-  ONE_WAY   = 0,
-  TWO_WAY   = 1 
-} WSDUdpMessageType;
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDAddress* This);
 
-typedef struct _WSDUpdRetransmitParams {
-  ULONG ulSendDelay;
-  ULONG ulRepeat;
-  ULONG ulRepeatMinDelay;
-  ULONG ulRepeatMaxDelay;
-  ULONG ulRepeatUpperDelay;
-} WSDUdpRetransmitParams, *PWSDUdpRetransmitParams;
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDAddress* This);
 
-#undef  INTERFACE
-#define INTERFACE IWSDAddress
-DECLARE_INTERFACE_(IWSDAddress,IUnknown) {
-  BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-#endif
-    /* IWSDAddress methods */
-    STDMETHOD_(HRESULT, Serialize) (THIS_ LPWSTR pszBuffer, DWORD cchLength, WINBOOL fSafe);
-    STDMETHOD_(HRESULT,Deserialize) (THIS_ LPCWSTR pszBuffer);
+    /*** IWSDAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *Serialize)(
+        IWSDAddress* This,
+        LPWSTR pszBuffer,
+        DWORD cchLength,
+        WINBOOL fSafe);
+
+    HRESULT (STDMETHODCALLTYPE *Deserialize)(
+        IWSDAddress* This,
+        LPCWSTR pszBuffer);
 
     END_INTERFACE
+} IWSDAddressVtbl;
+interface IWSDAddress {
+    CONST_VTBL IWSDAddressVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDAddress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDAddress_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDAddress_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDAddress methods ***/
 #define IWSDAddress_Serialize(This,pszBuffer,cchLength,fSafe) (This)->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe)
 #define IWSDAddress_Deserialize(This,pszBuffer) (This)->lpVtbl->Deserialize(This,pszBuffer)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDTransportAddress
-DECLARE_INTERFACE_(IWSDTransportAddress,IWSDAddress)
-{
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IWSDAddress methods */
-    STDMETHOD_(HRESULT, Serialize) (THIS_ LPWSTR pszBuffer, DWORD cchLength, WINBOOL fSafe);
-    STDMETHOD_(HRESULT,Deserialize) (THIS_ LPCWSTR pszBuffer);
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDAddress_QueryInterface(IWSDAddress* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDAddress_AddRef(IWSDAddress* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDAddress_Release(IWSDAddress* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDAddress methods ***/
+static FORCEINLINE HRESULT IWSDAddress_Serialize(IWSDAddress* This,LPWSTR pszBuffer,DWORD cchLength,WINBOOL fSafe) {
+    return This->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe);
+}
+static FORCEINLINE HRESULT IWSDAddress_Deserialize(IWSDAddress* This,LPCWSTR pszBuffer) {
+    return This->lpVtbl->Deserialize(This,pszBuffer);
+}
 #endif
-    /* IWSDTransportAddress methods */
-    STDMETHOD_(HRESULT,GetPort)(THIS_ WORD *pwPort) PURE;
-    STDMETHOD_(HRESULT,SetPort)(THIS_ WORD wPort) PURE;
-    STDMETHOD_(HRESULT,GetTransportAddress)(THIS_ LPCWSTR *ppszAddress) PURE;
-    STDMETHOD_(HRESULT,GetTransportAddressEx)(THIS_ WINBOOL fSafe,LPCWSTR *ppszAddress) PURE;
-    STDMETHOD_(HRESULT,SetTransportAddress)(THIS_ LPCWSTR pszAddress) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDAddress_Serialize_Proxy(
+    IWSDAddress* This,
+    LPWSTR pszBuffer,
+    DWORD cchLength,
+    WINBOOL fSafe);
+void __RPC_STUB IWSDAddress_Serialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDAddress_Deserialize_Proxy(
+    IWSDAddress* This,
+    LPCWSTR pszBuffer);
+void __RPC_STUB IWSDAddress_Deserialize_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDAddress_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDTransportAddress interface
+ */
+#ifndef __IWSDTransportAddress_INTERFACE_DEFINED__
+#define __IWSDTransportAddress_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDTransportAddress, 0x70d23498, 0x4ee6, 0x4340, 0xa3,0xdf, 0xd8,0x45,0xd2,0x23,0x54,0x67);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("70d23498-4ee6-4340-a3df-d845d2235467")
+IWSDTransportAddress : public IWSDAddress
+{
+    virtual HRESULT STDMETHODCALLTYPE GetPort(
+        WORD *pwPort) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPort(
+        WORD wPort) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTransportAddress(
+        LPCWSTR *ppszAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTransportAddressEx(
+        WINBOOL fSafe,
+        LPCWSTR *ppszAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTransportAddress(
+        LPCWSTR pszAddress) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDTransportAddress, 0x70d23498, 0x4ee6, 0x4340, 0xa3,0xdf, 0xd8,0x45,0xd2,0x23,0x54,0x67)
+#endif
+#else
+typedef struct IWSDTransportAddressVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDTransportAddress* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDTransportAddress* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDTransportAddress* This);
+
+    /*** IWSDAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *Serialize)(
+        IWSDTransportAddress* This,
+        LPWSTR pszBuffer,
+        DWORD cchLength,
+        WINBOOL fSafe);
+
+    HRESULT (STDMETHODCALLTYPE *Deserialize)(
+        IWSDTransportAddress* This,
+        LPCWSTR pszBuffer);
+
+    /*** IWSDTransportAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPort)(
+        IWSDTransportAddress* This,
+        WORD *pwPort);
+
+    HRESULT (STDMETHODCALLTYPE *SetPort)(
+        IWSDTransportAddress* This,
+        WORD wPort);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransportAddress)(
+        IWSDTransportAddress* This,
+        LPCWSTR *ppszAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransportAddressEx)(
+        IWSDTransportAddress* This,
+        WINBOOL fSafe,
+        LPCWSTR *ppszAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetTransportAddress)(
+        IWSDTransportAddress* This,
+        LPCWSTR pszAddress);
 
     END_INTERFACE
+} IWSDTransportAddressVtbl;
+interface IWSDTransportAddress {
+    CONST_VTBL IWSDTransportAddressVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDTransportAddress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDTransportAddress_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDTransportAddress_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDAddress methods ***/
+#define IWSDTransportAddress_Serialize(This,pszBuffer,cchLength,fSafe) (This)->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe)
+#define IWSDTransportAddress_Deserialize(This,pszBuffer) (This)->lpVtbl->Deserialize(This,pszBuffer)
+/*** IWSDTransportAddress methods ***/
 #define IWSDTransportAddress_GetPort(This,pwPort) (This)->lpVtbl->GetPort(This,pwPort)
 #define IWSDTransportAddress_SetPort(This,wPort) (This)->lpVtbl->SetPort(This,wPort)
 #define IWSDTransportAddress_GetTransportAddress(This,ppszAddress) (This)->lpVtbl->GetTransportAddress(This,ppszAddress)
 #define IWSDTransportAddress_GetTransportAddressEx(This,fSafe,ppszAddress) (This)->lpVtbl->GetTransportAddressEx(This,fSafe,ppszAddress)
 #define IWSDTransportAddress_SetTransportAddress(This,pszAddress) (This)->lpVtbl->SetTransportAddress(This,pszAddress)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDMessageParameters
-DECLARE_INTERFACE_(IWSDMessageParameters,IUnknown) {
-  BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDTransportAddress_QueryInterface(IWSDTransportAddress* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDTransportAddress_AddRef(IWSDTransportAddress* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDTransportAddress_Release(IWSDTransportAddress* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDAddress methods ***/
+static FORCEINLINE HRESULT IWSDTransportAddress_Serialize(IWSDTransportAddress* This,LPWSTR pszBuffer,DWORD cchLength,WINBOOL fSafe) {
+    return This->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe);
+}
+static FORCEINLINE HRESULT IWSDTransportAddress_Deserialize(IWSDTransportAddress* This,LPCWSTR pszBuffer) {
+    return This->lpVtbl->Deserialize(This,pszBuffer);
+}
+/*** IWSDTransportAddress methods ***/
+static FORCEINLINE HRESULT IWSDTransportAddress_GetPort(IWSDTransportAddress* This,WORD *pwPort) {
+    return This->lpVtbl->GetPort(This,pwPort);
+}
+static FORCEINLINE HRESULT IWSDTransportAddress_SetPort(IWSDTransportAddress* This,WORD wPort) {
+    return This->lpVtbl->SetPort(This,wPort);
+}
+static FORCEINLINE HRESULT IWSDTransportAddress_GetTransportAddress(IWSDTransportAddress* This,LPCWSTR *ppszAddress) {
+    return This->lpVtbl->GetTransportAddress(This,ppszAddress);
+}
+static FORCEINLINE HRESULT IWSDTransportAddress_GetTransportAddressEx(IWSDTransportAddress* This,WINBOOL fSafe,LPCWSTR *ppszAddress) {
+    return This->lpVtbl->GetTransportAddressEx(This,fSafe,ppszAddress);
+}
+static FORCEINLINE HRESULT IWSDTransportAddress_SetTransportAddress(IWSDTransportAddress* This,LPCWSTR pszAddress) {
+    return This->lpVtbl->SetTransportAddress(This,pszAddress);
+}
 #endif
-    /* IWSDMessageParameters methods */
-    STDMETHOD_(HRESULT, GetLocalAddress) (THIS_ IWSDAddress **ppAddress);
-    STDMETHOD_(HRESULT, SetLocalAddress) (THIS_ IWSDAddress *pAddress);
-    STDMETHOD_(HRESULT,GetRemoteAddress) (THIS_ IWSDAddress **ppAddress);
-    STDMETHOD_(HRESULT,SetRemoteAddress) (THIS_ IWSDAddress *pAddress);
-    STDMETHOD_(HRESULT,GetLowerParameters) (THIS_ IWSDMessageParameters **ppTxParams);
+#endif
 
-  END_INTERFACE
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDTransportAddress_GetPort_Proxy(
+    IWSDTransportAddress* This,
+    WORD *pwPort);
+void __RPC_STUB IWSDTransportAddress_GetPort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDTransportAddress_SetPort_Proxy(
+    IWSDTransportAddress* This,
+    WORD wPort);
+void __RPC_STUB IWSDTransportAddress_SetPort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDTransportAddress_GetTransportAddress_Proxy(
+    IWSDTransportAddress* This,
+    LPCWSTR *ppszAddress);
+void __RPC_STUB IWSDTransportAddress_GetTransportAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDTransportAddress_GetTransportAddressEx_Proxy(
+    IWSDTransportAddress* This,
+    WINBOOL fSafe,
+    LPCWSTR *ppszAddress);
+void __RPC_STUB IWSDTransportAddress_GetTransportAddressEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDTransportAddress_SetTransportAddress_Proxy(
+    IWSDTransportAddress* This,
+    LPCWSTR pszAddress);
+void __RPC_STUB IWSDTransportAddress_SetTransportAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDTransportAddress_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDMessageParameters interface
+ */
+#ifndef __IWSDMessageParameters_INTERFACE_DEFINED__
+#define __IWSDMessageParameters_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDMessageParameters, 0x1fafe8a2, 0xe6fc, 0x4b80, 0xb6,0xcf, 0xb7,0xd4,0x5c,0x41,0x6d,0x7c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1fafe8a2-e6fc-4b80-b6cf-b7d45c416d7c")
+IWSDMessageParameters : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetLocalAddress(
+        IWSDAddress **ppAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetLocalAddress(
+        IWSDAddress *pAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRemoteAddress(
+        IWSDAddress **ppAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetRemoteAddress(
+        IWSDAddress *pAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLowerParameters(
+        IWSDMessageParameters **ppTxParams) = 0;
+
 };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDMessageParameters, 0x1fafe8a2, 0xe6fc, 0x4b80, 0xb6,0xcf, 0xb7,0xd4,0x5c,0x41,0x6d,0x7c)
+#endif
+#else
+typedef struct IWSDMessageParametersVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDMessageParameters* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDMessageParameters* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDMessageParameters* This);
+
+    /*** IWSDMessageParameters methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLocalAddress)(
+        IWSDMessageParameters* This,
+        IWSDAddress **ppAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetLocalAddress)(
+        IWSDMessageParameters* This,
+        IWSDAddress *pAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetRemoteAddress)(
+        IWSDMessageParameters* This,
+        IWSDAddress **ppAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetRemoteAddress)(
+        IWSDMessageParameters* This,
+        IWSDAddress *pAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetLowerParameters)(
+        IWSDMessageParameters* This,
+        IWSDMessageParameters **ppTxParams);
+
+    END_INTERFACE
+} IWSDMessageParametersVtbl;
+interface IWSDMessageParameters {
+    CONST_VTBL IWSDMessageParametersVtbl* lpVtbl;
+};
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDMessageParameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDMessageParameters_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDMessageParameters_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDMessageParameters methods ***/
 #define IWSDMessageParameters_GetLocalAddress(This,ppAddress) (This)->lpVtbl->GetLocalAddress(This,ppAddress)
 #define IWSDMessageParameters_SetLocalAddress(This,pAddress) (This)->lpVtbl->SetLocalAddress(This,pAddress)
 #define IWSDMessageParameters_GetRemoteAddress(This,ppAddress) (This)->lpVtbl->GetRemoteAddress(This,ppAddress)
 #define IWSDMessageParameters_SetRemoteAddress(This,pAddress) (This)->lpVtbl->SetRemoteAddress(This,pAddress)
 #define IWSDMessageParameters_GetLowerParameters(This,ppTxParams) (This)->lpVtbl->GetLowerParameters(This,ppTxParams)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDHttpAddress
-DECLARE_INTERFACE_(IWSDHttpAddress,IWSDTransportAddress) {
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IWSDAddress methods */
-    STDMETHOD_(HRESULT, Serialize) (THIS_ LPWSTR pszBuffer, DWORD cchLength, WINBOOL fSafe);
-    STDMETHOD_(HRESULT,Deserialize) (THIS_ LPCWSTR pszBuffer);
-
-    /* IWSDTransportAddress methods */
-    STDMETHOD_(HRESULT,GetPort)(THIS_ WORD *pwPort) PURE;
-    STDMETHOD_(HRESULT,SetPort)(THIS_ WORD wPort) PURE;
-    STDMETHOD_(HRESULT,GetTransportAddress)(THIS_ LPCWSTR *ppszAddress) PURE;
-    STDMETHOD_(HRESULT,GetTransportAddressEx)(THIS_ WINBOOL fSafe,LPCWSTR *ppszAddress) PURE;
-    STDMETHOD_(HRESULT,SetTransportAddress)(THIS_ LPCWSTR pszAddress) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDMessageParameters_QueryInterface(IWSDMessageParameters* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDMessageParameters_AddRef(IWSDMessageParameters* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDMessageParameters_Release(IWSDMessageParameters* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDMessageParameters methods ***/
+static FORCEINLINE HRESULT IWSDMessageParameters_GetLocalAddress(IWSDMessageParameters* This,IWSDAddress **ppAddress) {
+    return This->lpVtbl->GetLocalAddress(This,ppAddress);
+}
+static FORCEINLINE HRESULT IWSDMessageParameters_SetLocalAddress(IWSDMessageParameters* This,IWSDAddress *pAddress) {
+    return This->lpVtbl->SetLocalAddress(This,pAddress);
+}
+static FORCEINLINE HRESULT IWSDMessageParameters_GetRemoteAddress(IWSDMessageParameters* This,IWSDAddress **ppAddress) {
+    return This->lpVtbl->GetRemoteAddress(This,ppAddress);
+}
+static FORCEINLINE HRESULT IWSDMessageParameters_SetRemoteAddress(IWSDMessageParameters* This,IWSDAddress *pAddress) {
+    return This->lpVtbl->SetRemoteAddress(This,pAddress);
+}
+static FORCEINLINE HRESULT IWSDMessageParameters_GetLowerParameters(IWSDMessageParameters* This,IWSDMessageParameters **ppTxParams) {
+    return This->lpVtbl->GetLowerParameters(This,ppTxParams);
+}
 #endif
-    /* IWSDHttpAddress methods */
-    STDMETHOD_(HRESULT,GetSecure)(THIS) PURE;
-    STDMETHOD_(HRESULT,SetSecure)(THIS_ WINBOOL fSecure) PURE;
-    STDMETHOD_(HRESULT,GetPath)(THIS_ LPCWSTR *ppszPath) PURE;
-    STDMETHOD_(HRESULT,SetPath)(THIS_ LPCWSTR pszPath) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDMessageParameters_GetLocalAddress_Proxy(
+    IWSDMessageParameters* This,
+    IWSDAddress **ppAddress);
+void __RPC_STUB IWSDMessageParameters_GetLocalAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDMessageParameters_SetLocalAddress_Proxy(
+    IWSDMessageParameters* This,
+    IWSDAddress *pAddress);
+void __RPC_STUB IWSDMessageParameters_SetLocalAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDMessageParameters_GetRemoteAddress_Proxy(
+    IWSDMessageParameters* This,
+    IWSDAddress **ppAddress);
+void __RPC_STUB IWSDMessageParameters_GetRemoteAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDMessageParameters_SetRemoteAddress_Proxy(
+    IWSDMessageParameters* This,
+    IWSDAddress *pAddress);
+void __RPC_STUB IWSDMessageParameters_SetRemoteAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDMessageParameters_GetLowerParameters_Proxy(
+    IWSDMessageParameters* This,
+    IWSDMessageParameters **ppTxParams);
+void __RPC_STUB IWSDMessageParameters_GetLowerParameters_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDMessageParameters_INTERFACE_DEFINED__ */
+
+HRESULT WINAPI
+WSDCreateUdpMessageParameters(
+IWSDUdpMessageParameters** ppTxParams);
+typedef struct _WSDUdpRetransmitParams {
+    ULONG ulSendDelay;
+    ULONG ulRepeat;
+    ULONG ulRepeatMinDelay;
+    ULONG ulRepeatMaxDelay;
+    ULONG ulRepeatUpperDelay;
+} WSDUdpRetransmitParams;
+/*****************************************************************************
+ * IWSDUdpMessageParameters interface
+ */
+#ifndef __IWSDUdpMessageParameters_INTERFACE_DEFINED__
+#define __IWSDUdpMessageParameters_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDUdpMessageParameters, 0x9934149f, 0x8f0c, 0x447b, 0xaa,0x0b, 0x73,0x12,0x4b,0x0c,0xa7,0xf0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("9934149f-8f0c-447b-aa0b-73124b0ca7f0")
+IWSDUdpMessageParameters : public IWSDMessageParameters
+{
+    virtual HRESULT STDMETHODCALLTYPE SetRetransmitParams(
+        const WSDUdpRetransmitParams *pParams) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRetransmitParams(
+        WSDUdpRetransmitParams *pParams) = 0;
+
 };
-#ifdef COBJMACROS
-#define IWSDHttpAddress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDHttpAddress_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDHttpAddress_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDHttpAddress_GetPort(This,pwPort) (This)->lpVtbl->GetPort(This,pwPort)
-#define IWSDHttpAddress_SetPort(This,wPort) (This)->lpVtbl->SetPort(This,wPort)
-#define IWSDHttpAddress_GetTransportAddress(This,ppszAddress) (This)->lpVtbl->GetTransportAddress(This,ppszAddress)
-#define IWSDHttpAddress_GetTransportAddressEx(This,fSafe,ppszAddress) (This)->lpVtbl->GetTransportAddressEx(This,fSafe,ppszAddress)
-#define IWSDHttpAddress_SetTransportAddress(This,pszAddress) (This)->lpVtbl->SetTransportAddress(This,pszAddress)
-#define IWSDHttpAddress_GetSecure() (This)->lpVtbl->GetSecure(This)
-#define IWSDHttpAddress_SetSecure(This,fSecure) (This)->lpVtbl->SetSecure(This,fSecure)
-#define IWSDHttpAddress_GetPath(This,ppszPath) (This)->lpVtbl->GetPath(This,ppszPath)
-#define IWSDHttpAddress_SetPath(This,pszPath) (This)->lpVtbl->SetPath(This,pszPath)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDUdpAddress
-DECLARE_INTERFACE_(IWSDUdpAddress,IWSDTransportAddress) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IWSDAddress methods */
-    STDMETHOD_(HRESULT, Serialize) (THIS_ LPWSTR pszBuffer, DWORD cchLength, WINBOOL fSafe);
-    STDMETHOD_(HRESULT,Deserialize) (THIS_ LPCWSTR pszBuffer);
-
-    /* IWSDTransportAddress methods */
-    STDMETHOD_(HRESULT,GetPort)(THIS_ WORD *pwPort) PURE;
-    STDMETHOD_(HRESULT,SetPort)(THIS_ WORD wPort) PURE;
-    STDMETHOD_(HRESULT,GetTransportAddress)(THIS_ LPCWSTR *ppszAddress) PURE;
-    STDMETHOD_(HRESULT,GetTransportAddressEx)(THIS_ WINBOOL fSafe,LPCWSTR *ppszAddress) PURE;
-    STDMETHOD_(HRESULT,SetTransportAddress)(THIS_ LPCWSTR pszAddress) PURE;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDUdpMessageParameters, 0x9934149f, 0x8f0c, 0x447b, 0xaa,0x0b, 0x73,0x12,0x4b,0x0c,0xa7,0xf0)
 #endif
-    /* IWSDUdpAddress methods */
-    STDMETHOD_(HRESULT,SetSockaddr)(THIS_ const SOCKADDR_STORAGE *pSockAddr) PURE;
-    STDMETHOD_(HRESULT *,GetSockaddr)(THIS_ SOCKADDR_STORAGE *pSockAddr) PURE;
-    STDMETHOD_(HRESULT,SetExclusive)(THIS_ WINBOOL fExclusive) PURE;
-    STDMETHOD_(HRESULT,GetExclusive)(THIS) PURE;
-    STDMETHOD_(HRESULT,SetMessageType)(THIS_ WSDUdpMessageType messageType) PURE;
-    STDMETHOD_(HRESULT,GetMessageType)(THIS_ WSDUdpMessageType *pMessageType) PURE;
-    STDMETHOD_(HRESULT,SetTTL)(THIS_ DWORD dwTTL) PURE;
-    STDMETHOD_(HRESULT,GetTTL)(THIS_ DWORD *pdwTTL) PURE;
-    STDMETHOD_(HRESULT,SetAlias)(THIS_ const GUID *pAlias) PURE;
-    STDMETHOD_(HRESULT,GetAlias)(THIS_ GUID *pAlias) PURE;
+#else
+typedef struct IWSDUdpMessageParametersVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDUdpMessageParameters* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDUdpMessageParameters* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDUdpMessageParameters* This);
+
+    /*** IWSDMessageParameters methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLocalAddress)(
+        IWSDUdpMessageParameters* This,
+        IWSDAddress **ppAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetLocalAddress)(
+        IWSDUdpMessageParameters* This,
+        IWSDAddress *pAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetRemoteAddress)(
+        IWSDUdpMessageParameters* This,
+        IWSDAddress **ppAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetRemoteAddress)(
+        IWSDUdpMessageParameters* This,
+        IWSDAddress *pAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetLowerParameters)(
+        IWSDUdpMessageParameters* This,
+        IWSDMessageParameters **ppTxParams);
+
+    /*** IWSDUdpMessageParameters methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetRetransmitParams)(
+        IWSDUdpMessageParameters* This,
+        const WSDUdpRetransmitParams *pParams);
+
+    HRESULT (STDMETHODCALLTYPE *GetRetransmitParams)(
+        IWSDUdpMessageParameters* This,
+        WSDUdpRetransmitParams *pParams);
 
     END_INTERFACE
+} IWSDUdpMessageParametersVtbl;
+interface IWSDUdpMessageParameters {
+    CONST_VTBL IWSDUdpMessageParametersVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDUdpMessageParameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDUdpMessageParameters_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDUdpMessageParameters_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDMessageParameters methods ***/
+#define IWSDUdpMessageParameters_GetLocalAddress(This,ppAddress) (This)->lpVtbl->GetLocalAddress(This,ppAddress)
+#define IWSDUdpMessageParameters_SetLocalAddress(This,pAddress) (This)->lpVtbl->SetLocalAddress(This,pAddress)
+#define IWSDUdpMessageParameters_GetRemoteAddress(This,ppAddress) (This)->lpVtbl->GetRemoteAddress(This,ppAddress)
+#define IWSDUdpMessageParameters_SetRemoteAddress(This,pAddress) (This)->lpVtbl->SetRemoteAddress(This,pAddress)
+#define IWSDUdpMessageParameters_GetLowerParameters(This,ppTxParams) (This)->lpVtbl->GetLowerParameters(This,ppTxParams)
+/*** IWSDUdpMessageParameters methods ***/
+#define IWSDUdpMessageParameters_SetRetransmitParams(This,pParams) (This)->lpVtbl->SetRetransmitParams(This,pParams)
+#define IWSDUdpMessageParameters_GetRetransmitParams(This,pParams) (This)->lpVtbl->GetRetransmitParams(This,pParams)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_QueryInterface(IWSDUdpMessageParameters* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDUdpMessageParameters_AddRef(IWSDUdpMessageParameters* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDUdpMessageParameters_Release(IWSDUdpMessageParameters* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDMessageParameters methods ***/
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_GetLocalAddress(IWSDUdpMessageParameters* This,IWSDAddress **ppAddress) {
+    return This->lpVtbl->GetLocalAddress(This,ppAddress);
+}
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_SetLocalAddress(IWSDUdpMessageParameters* This,IWSDAddress *pAddress) {
+    return This->lpVtbl->SetLocalAddress(This,pAddress);
+}
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_GetRemoteAddress(IWSDUdpMessageParameters* This,IWSDAddress **ppAddress) {
+    return This->lpVtbl->GetRemoteAddress(This,ppAddress);
+}
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_SetRemoteAddress(IWSDUdpMessageParameters* This,IWSDAddress *pAddress) {
+    return This->lpVtbl->SetRemoteAddress(This,pAddress);
+}
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_GetLowerParameters(IWSDUdpMessageParameters* This,IWSDMessageParameters **ppTxParams) {
+    return This->lpVtbl->GetLowerParameters(This,ppTxParams);
+}
+/*** IWSDUdpMessageParameters methods ***/
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_SetRetransmitParams(IWSDUdpMessageParameters* This,const WSDUdpRetransmitParams *pParams) {
+    return This->lpVtbl->SetRetransmitParams(This,pParams);
+}
+static FORCEINLINE HRESULT IWSDUdpMessageParameters_GetRetransmitParams(IWSDUdpMessageParameters* This,WSDUdpRetransmitParams *pParams) {
+    return This->lpVtbl->GetRetransmitParams(This,pParams);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDUdpMessageParameters_SetRetransmitParams_Proxy(
+    IWSDUdpMessageParameters* This,
+    const WSDUdpRetransmitParams *pParams);
+void __RPC_STUB IWSDUdpMessageParameters_SetRetransmitParams_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpMessageParameters_GetRetransmitParams_Proxy(
+    IWSDUdpMessageParameters* This,
+    WSDUdpRetransmitParams *pParams);
+void __RPC_STUB IWSDUdpMessageParameters_GetRetransmitParams_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDUdpMessageParameters_INTERFACE_DEFINED__ */
+
+HRESULT WINAPI
+WSDCreateUdpAddress(
+ IWSDUdpAddress** ppAddress);
+#if 1
+
+#ifndef __CSADDR_DEFINED__
+struct SOCKADDR_STORAGE;
+#endif
+#else
+typedef void SOCKADDR_STORAGE;
+#endif
+typedef enum _WSDUdpMessageType {
+    ONE_WAY = 0,
+    TWO_WAY = 1
+} WSDUdpMessageType;
+/*****************************************************************************
+ * IWSDUdpAddress interface
+ */
+#ifndef __IWSDUdpAddress_INTERFACE_DEFINED__
+#define __IWSDUdpAddress_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDUdpAddress, 0x74d6124a, 0xa441, 0x4f78, 0xa1,0xeb, 0x97,0xa8,0xd1,0x99,0x68,0x93);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("74d6124a-a441-4f78-a1eb-97a8d1996893")
+IWSDUdpAddress : public IWSDTransportAddress
+{
+    virtual HRESULT STDMETHODCALLTYPE SetSockaddr(
+        const SOCKADDR_STORAGE *pSockAddr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSockaddr(
+        SOCKADDR_STORAGE *pSockAddr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetExclusive(
+        WINBOOL fExclusive) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetExclusive(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMessageType(
+        WSDUdpMessageType messageType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMessageType(
+        WSDUdpMessageType *pMessageType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTTL(
+        DWORD dwTTL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTTL(
+        DWORD *pdwTTL) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAlias(
+        const GUID *pAlias) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAlias(
+        GUID *pAlias) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDUdpAddress, 0x74d6124a, 0xa441, 0x4f78, 0xa1,0xeb, 0x97,0xa8,0xd1,0x99,0x68,0x93)
+#endif
+#else
+typedef struct IWSDUdpAddressVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDUdpAddress* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDUdpAddress* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDUdpAddress* This);
+
+    /*** IWSDAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *Serialize)(
+        IWSDUdpAddress* This,
+        LPWSTR pszBuffer,
+        DWORD cchLength,
+        WINBOOL fSafe);
+
+    HRESULT (STDMETHODCALLTYPE *Deserialize)(
+        IWSDUdpAddress* This,
+        LPCWSTR pszBuffer);
+
+    /*** IWSDTransportAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPort)(
+        IWSDUdpAddress* This,
+        WORD *pwPort);
+
+    HRESULT (STDMETHODCALLTYPE *SetPort)(
+        IWSDUdpAddress* This,
+        WORD wPort);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransportAddress)(
+        IWSDUdpAddress* This,
+        LPCWSTR *ppszAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransportAddressEx)(
+        IWSDUdpAddress* This,
+        WINBOOL fSafe,
+        LPCWSTR *ppszAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetTransportAddress)(
+        IWSDUdpAddress* This,
+        LPCWSTR pszAddress);
+
+    /*** IWSDUdpAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetSockaddr)(
+        IWSDUdpAddress* This,
+        const SOCKADDR_STORAGE *pSockAddr);
+
+    HRESULT (STDMETHODCALLTYPE *GetSockaddr)(
+        IWSDUdpAddress* This,
+        SOCKADDR_STORAGE *pSockAddr);
+
+    HRESULT (STDMETHODCALLTYPE *SetExclusive)(
+        IWSDUdpAddress* This,
+        WINBOOL fExclusive);
+
+    HRESULT (STDMETHODCALLTYPE *GetExclusive)(
+        IWSDUdpAddress* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetMessageType)(
+        IWSDUdpAddress* This,
+        WSDUdpMessageType messageType);
+
+    HRESULT (STDMETHODCALLTYPE *GetMessageType)(
+        IWSDUdpAddress* This,
+        WSDUdpMessageType *pMessageType);
+
+    HRESULT (STDMETHODCALLTYPE *SetTTL)(
+        IWSDUdpAddress* This,
+        DWORD dwTTL);
+
+    HRESULT (STDMETHODCALLTYPE *GetTTL)(
+        IWSDUdpAddress* This,
+        DWORD *pdwTTL);
+
+    HRESULT (STDMETHODCALLTYPE *SetAlias)(
+        IWSDUdpAddress* This,
+        const GUID *pAlias);
+
+    HRESULT (STDMETHODCALLTYPE *GetAlias)(
+        IWSDUdpAddress* This,
+        GUID *pAlias);
+
+    END_INTERFACE
+} IWSDUdpAddressVtbl;
+interface IWSDUdpAddress {
+    CONST_VTBL IWSDUdpAddressVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDUdpAddress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDUdpAddress_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDUdpAddress_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDAddress methods ***/
+#define IWSDUdpAddress_Serialize(This,pszBuffer,cchLength,fSafe) (This)->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe)
+#define IWSDUdpAddress_Deserialize(This,pszBuffer) (This)->lpVtbl->Deserialize(This,pszBuffer)
+/*** IWSDTransportAddress methods ***/
 #define IWSDUdpAddress_GetPort(This,pwPort) (This)->lpVtbl->GetPort(This,pwPort)
 #define IWSDUdpAddress_SetPort(This,wPort) (This)->lpVtbl->SetPort(This,wPort)
 #define IWSDUdpAddress_GetTransportAddress(This,ppszAddress) (This)->lpVtbl->GetTransportAddress(This,ppszAddress)
 #define IWSDUdpAddress_GetTransportAddressEx(This,fSafe,ppszAddress) (This)->lpVtbl->GetTransportAddressEx(This,fSafe,ppszAddress)
 #define IWSDUdpAddress_SetTransportAddress(This,pszAddress) (This)->lpVtbl->SetTransportAddress(This,pszAddress)
+/*** IWSDUdpAddress methods ***/
 #define IWSDUdpAddress_SetSockaddr(This,pSockAddr) (This)->lpVtbl->SetSockaddr(This,pSockAddr)
 #define IWSDUdpAddress_GetSockaddr(This,pSockAddr) (This)->lpVtbl->GetSockaddr(This,pSockAddr)
 #define IWSDUdpAddress_SetExclusive(This,fExclusive) (This)->lpVtbl->SetExclusive(This,fExclusive)
-#define IWSDUdpAddress_GetExclusive() (This)->lpVtbl->GetExclusive(This)
+#define IWSDUdpAddress_GetExclusive(This) (This)->lpVtbl->GetExclusive(This)
 #define IWSDUdpAddress_SetMessageType(This,messageType) (This)->lpVtbl->SetMessageType(This,messageType)
 #define IWSDUdpAddress_GetMessageType(This,pMessageType) (This)->lpVtbl->GetMessageType(This,pMessageType)
 #define IWSDUdpAddress_SetTTL(This,dwTTL) (This)->lpVtbl->SetTTL(This,dwTTL)
 #define IWSDUdpAddress_GetTTL(This,pdwTTL) (This)->lpVtbl->GetTTL(This,pdwTTL)
 #define IWSDUdpAddress_SetAlias(This,pAlias) (This)->lpVtbl->SetAlias(This,pAlias)
 #define IWSDUdpAddress_GetAlias(This,pAlias) (This)->lpVtbl->GetAlias(This,pAlias)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDHttpMessageParameters
-DECLARE_INTERFACE_(IWSDHttpMessageParameters,IWSDMessageParameters) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IWSDServiceMessaging methods */
-    STDMETHOD_(HRESULT,GetLocalAddress)(THIS_ IWSDAddress **ppAddress) PURE;
-    STDMETHOD_(HRESULT,SetLocalAddress)(THIS_ IWSDAddress *pAddress) PURE;
-    STDMETHOD_(HRESULT,GetRemoteAddress)(THIS_ IWSDAddress **ppAddress) PURE;
-    STDMETHOD_(HRESULT,SetRemoteAddress)(THIS_ IWSDAddress *pAddress) PURE;
-    STDMETHOD_(HRESULT,GetLowerParameters)(THIS_ IWSDMessageParameters **ppTxParams) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDUdpAddress_QueryInterface(IWSDUdpAddress* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDUdpAddress_AddRef(IWSDUdpAddress* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDUdpAddress_Release(IWSDUdpAddress* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDAddress methods ***/
+static FORCEINLINE HRESULT IWSDUdpAddress_Serialize(IWSDUdpAddress* This,LPWSTR pszBuffer,DWORD cchLength,WINBOOL fSafe) {
+    return This->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_Deserialize(IWSDUdpAddress* This,LPCWSTR pszBuffer) {
+    return This->lpVtbl->Deserialize(This,pszBuffer);
+}
+/*** IWSDTransportAddress methods ***/
+static FORCEINLINE HRESULT IWSDUdpAddress_GetPort(IWSDUdpAddress* This,WORD *pwPort) {
+    return This->lpVtbl->GetPort(This,pwPort);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_SetPort(IWSDUdpAddress* This,WORD wPort) {
+    return This->lpVtbl->SetPort(This,wPort);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_GetTransportAddress(IWSDUdpAddress* This,LPCWSTR *ppszAddress) {
+    return This->lpVtbl->GetTransportAddress(This,ppszAddress);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_GetTransportAddressEx(IWSDUdpAddress* This,WINBOOL fSafe,LPCWSTR *ppszAddress) {
+    return This->lpVtbl->GetTransportAddressEx(This,fSafe,ppszAddress);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_SetTransportAddress(IWSDUdpAddress* This,LPCWSTR pszAddress) {
+    return This->lpVtbl->SetTransportAddress(This,pszAddress);
+}
+/*** IWSDUdpAddress methods ***/
+static FORCEINLINE HRESULT IWSDUdpAddress_SetSockaddr(IWSDUdpAddress* This,const SOCKADDR_STORAGE *pSockAddr) {
+    return This->lpVtbl->SetSockaddr(This,pSockAddr);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_GetSockaddr(IWSDUdpAddress* This,SOCKADDR_STORAGE *pSockAddr) {
+    return This->lpVtbl->GetSockaddr(This,pSockAddr);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_SetExclusive(IWSDUdpAddress* This,WINBOOL fExclusive) {
+    return This->lpVtbl->SetExclusive(This,fExclusive);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_GetExclusive(IWSDUdpAddress* This) {
+    return This->lpVtbl->GetExclusive(This);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_SetMessageType(IWSDUdpAddress* This,WSDUdpMessageType messageType) {
+    return This->lpVtbl->SetMessageType(This,messageType);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_GetMessageType(IWSDUdpAddress* This,WSDUdpMessageType *pMessageType) {
+    return This->lpVtbl->GetMessageType(This,pMessageType);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_SetTTL(IWSDUdpAddress* This,DWORD dwTTL) {
+    return This->lpVtbl->SetTTL(This,dwTTL);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_GetTTL(IWSDUdpAddress* This,DWORD *pdwTTL) {
+    return This->lpVtbl->GetTTL(This,pdwTTL);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_SetAlias(IWSDUdpAddress* This,const GUID *pAlias) {
+    return This->lpVtbl->SetAlias(This,pAlias);
+}
+static FORCEINLINE HRESULT IWSDUdpAddress_GetAlias(IWSDUdpAddress* This,GUID *pAlias) {
+    return This->lpVtbl->GetAlias(This,pAlias);
+}
 #endif
-    /* IWSDHttpMessageParameters methods */
-    STDMETHOD_(HRESULT,SetInboundHttpHeaders)(THIS_ LPCWSTR pszHeaders) PURE;
-    STDMETHOD_(HRESULT,GetInboundHttpHeaders)(THIS_ LPCWSTR *ppszHeaders) PURE;
-    STDMETHOD_(HRESULT,SetOutboundHttpHeaders)(THIS_ LPCWSTR pszHeaders) PURE;
-    STDMETHOD_(HRESULT,GetOutboundHttpHeaders)(THIS_ LPCWSTR *ppszHeaders) PURE;
-    STDMETHOD_(HRESULT,SetID)(THIS_ LPCWSTR pszId) PURE;
-    STDMETHOD_(HRESULT,GetID)(THIS_ LPCWSTR *ppszId) PURE;
-    STDMETHOD_(HRESULT,SetContext)(THIS_ IUnknown *pContext) PURE;
-    STDMETHOD_(HRESULT,GetContext)(THIS_ IUnknown **ppContext) PURE;
-    STDMETHOD_(HRESULT,Clear)(THIS) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_SetSockaddr_Proxy(
+    IWSDUdpAddress* This,
+    const SOCKADDR_STORAGE *pSockAddr);
+void __RPC_STUB IWSDUdpAddress_SetSockaddr_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_GetSockaddr_Proxy(
+    IWSDUdpAddress* This,
+    SOCKADDR_STORAGE *pSockAddr);
+void __RPC_STUB IWSDUdpAddress_GetSockaddr_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_SetExclusive_Proxy(
+    IWSDUdpAddress* This,
+    WINBOOL fExclusive);
+void __RPC_STUB IWSDUdpAddress_SetExclusive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_GetExclusive_Proxy(
+    IWSDUdpAddress* This);
+void __RPC_STUB IWSDUdpAddress_GetExclusive_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_SetMessageType_Proxy(
+    IWSDUdpAddress* This,
+    WSDUdpMessageType messageType);
+void __RPC_STUB IWSDUdpAddress_SetMessageType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_GetMessageType_Proxy(
+    IWSDUdpAddress* This,
+    WSDUdpMessageType *pMessageType);
+void __RPC_STUB IWSDUdpAddress_GetMessageType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_SetTTL_Proxy(
+    IWSDUdpAddress* This,
+    DWORD dwTTL);
+void __RPC_STUB IWSDUdpAddress_SetTTL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_GetTTL_Proxy(
+    IWSDUdpAddress* This,
+    DWORD *pdwTTL);
+void __RPC_STUB IWSDUdpAddress_GetTTL_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_SetAlias_Proxy(
+    IWSDUdpAddress* This,
+    const GUID *pAlias);
+void __RPC_STUB IWSDUdpAddress_SetAlias_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDUdpAddress_GetAlias_Proxy(
+    IWSDUdpAddress* This,
+    GUID *pAlias);
+void __RPC_STUB IWSDUdpAddress_GetAlias_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDUdpAddress_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDHttpMessageParameters interface
+ */
+#ifndef __IWSDHttpMessageParameters_INTERFACE_DEFINED__
+#define __IWSDHttpMessageParameters_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDHttpMessageParameters, 0x540bd122, 0x5c83, 0x4dec, 0xb3,0x96, 0xea,0x62,0xa2,0x69,0x7f,0xdf);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("540bd122-5c83-4dec-b396-ea62a2697fdf")
+IWSDHttpMessageParameters : public IWSDMessageParameters
+{
+    virtual HRESULT STDMETHODCALLTYPE SetInboundHttpHeaders(
+        LPCWSTR pszHeaders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetInboundHttpHeaders(
+        LPCWSTR *ppszHeaders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOutboundHttpHeaders(
+        LPCWSTR pszHeaders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOutboundHttpHeaders(
+        LPCWSTR *ppszHeaders) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetID(
+        LPCWSTR pszId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetID(
+        LPCWSTR *ppszId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetContext(
+        IUnknown *pContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetContext(
+        IUnknown **ppContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Clear(
+        ) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDHttpMessageParameters, 0x540bd122, 0x5c83, 0x4dec, 0xb3,0x96, 0xea,0x62,0xa2,0x69,0x7f,0xdf)
+#endif
+#else
+typedef struct IWSDHttpMessageParametersVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDHttpMessageParameters* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDHttpMessageParameters* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDHttpMessageParameters* This);
+
+    /*** IWSDMessageParameters methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetLocalAddress)(
+        IWSDHttpMessageParameters* This,
+        IWSDAddress **ppAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetLocalAddress)(
+        IWSDHttpMessageParameters* This,
+        IWSDAddress *pAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetRemoteAddress)(
+        IWSDHttpMessageParameters* This,
+        IWSDAddress **ppAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetRemoteAddress)(
+        IWSDHttpMessageParameters* This,
+        IWSDAddress *pAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetLowerParameters)(
+        IWSDHttpMessageParameters* This,
+        IWSDMessageParameters **ppTxParams);
+
+    /*** IWSDHttpMessageParameters methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetInboundHttpHeaders)(
+        IWSDHttpMessageParameters* This,
+        LPCWSTR pszHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *GetInboundHttpHeaders)(
+        IWSDHttpMessageParameters* This,
+        LPCWSTR *ppszHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *SetOutboundHttpHeaders)(
+        IWSDHttpMessageParameters* This,
+        LPCWSTR pszHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *GetOutboundHttpHeaders)(
+        IWSDHttpMessageParameters* This,
+        LPCWSTR *ppszHeaders);
+
+    HRESULT (STDMETHODCALLTYPE *SetID)(
+        IWSDHttpMessageParameters* This,
+        LPCWSTR pszId);
+
+    HRESULT (STDMETHODCALLTYPE *GetID)(
+        IWSDHttpMessageParameters* This,
+        LPCWSTR *ppszId);
+
+    HRESULT (STDMETHODCALLTYPE *SetContext)(
+        IWSDHttpMessageParameters* This,
+        IUnknown *pContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetContext)(
+        IWSDHttpMessageParameters* This,
+        IUnknown **ppContext);
+
+    HRESULT (STDMETHODCALLTYPE *Clear)(
+        IWSDHttpMessageParameters* This);
 
     END_INTERFACE
+} IWSDHttpMessageParametersVtbl;
+interface IWSDHttpMessageParameters {
+    CONST_VTBL IWSDHttpMessageParametersVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDHttpMessageParameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDHttpMessageParameters_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDHttpMessageParameters_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDMessageParameters methods ***/
 #define IWSDHttpMessageParameters_GetLocalAddress(This,ppAddress) (This)->lpVtbl->GetLocalAddress(This,ppAddress)
 #define IWSDHttpMessageParameters_SetLocalAddress(This,pAddress) (This)->lpVtbl->SetLocalAddress(This,pAddress)
 #define IWSDHttpMessageParameters_GetRemoteAddress(This,ppAddress) (This)->lpVtbl->GetRemoteAddress(This,ppAddress)
 #define IWSDHttpMessageParameters_SetRemoteAddress(This,pAddress) (This)->lpVtbl->SetRemoteAddress(This,pAddress)
 #define IWSDHttpMessageParameters_GetLowerParameters(This,ppTxParams) (This)->lpVtbl->GetLowerParameters(This,ppTxParams)
+/*** IWSDHttpMessageParameters methods ***/
 #define IWSDHttpMessageParameters_SetInboundHttpHeaders(This,pszHeaders) (This)->lpVtbl->SetInboundHttpHeaders(This,pszHeaders)
 #define IWSDHttpMessageParameters_GetInboundHttpHeaders(This,ppszHeaders) (This)->lpVtbl->GetInboundHttpHeaders(This,ppszHeaders)
 #define IWSDHttpMessageParameters_SetOutboundHttpHeaders(This,pszHeaders) (This)->lpVtbl->SetOutboundHttpHeaders(This,pszHeaders)
@@ -258,57 +1270,732 @@
 #define IWSDHttpMessageParameters_GetID(This,ppszId) (This)->lpVtbl->GetID(This,ppszId)
 #define IWSDHttpMessageParameters_SetContext(This,pContext) (This)->lpVtbl->SetContext(This,pContext)
 #define IWSDHttpMessageParameters_GetContext(This,ppContext) (This)->lpVtbl->GetContext(This,ppContext)
-#define IWSDHttpMessageParameters_Clear() (This)->lpVtbl->Clear(This)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDUdpMessageParameters
-DECLARE_INTERFACE_(IWSDUdpMessageParameters,IWSDMessageParameters) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IWSDServiceMessaging methods */
-    STDMETHOD_(HRESULT,GetLocalAddress)(THIS_ IWSDAddress **ppAddress) PURE;
-    STDMETHOD_(HRESULT,SetLocalAddress)(THIS_ IWSDAddress *pAddress) PURE;
-    STDMETHOD_(HRESULT,GetRemoteAddress)(THIS_ IWSDAddress **ppAddress) PURE;
-    STDMETHOD_(HRESULT,SetRemoteAddress)(THIS_ IWSDAddress *pAddress) PURE;
-    STDMETHOD_(HRESULT,GetLowerParameters)(THIS_ IWSDMessageParameters **ppTxParams) PURE;
+#define IWSDHttpMessageParameters_Clear(This) (This)->lpVtbl->Clear(This)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_QueryInterface(IWSDHttpMessageParameters* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDHttpMessageParameters_AddRef(IWSDHttpMessageParameters* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDHttpMessageParameters_Release(IWSDHttpMessageParameters* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDMessageParameters methods ***/
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_GetLocalAddress(IWSDHttpMessageParameters* This,IWSDAddress **ppAddress) {
+    return This->lpVtbl->GetLocalAddress(This,ppAddress);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_SetLocalAddress(IWSDHttpMessageParameters* This,IWSDAddress *pAddress) {
+    return This->lpVtbl->SetLocalAddress(This,pAddress);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_GetRemoteAddress(IWSDHttpMessageParameters* This,IWSDAddress **ppAddress) {
+    return This->lpVtbl->GetRemoteAddress(This,ppAddress);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_SetRemoteAddress(IWSDHttpMessageParameters* This,IWSDAddress *pAddress) {
+    return This->lpVtbl->SetRemoteAddress(This,pAddress);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_GetLowerParameters(IWSDHttpMessageParameters* This,IWSDMessageParameters **ppTxParams) {
+    return This->lpVtbl->GetLowerParameters(This,ppTxParams);
+}
+/*** IWSDHttpMessageParameters methods ***/
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_SetInboundHttpHeaders(IWSDHttpMessageParameters* This,LPCWSTR pszHeaders) {
+    return This->lpVtbl->SetInboundHttpHeaders(This,pszHeaders);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_GetInboundHttpHeaders(IWSDHttpMessageParameters* This,LPCWSTR *ppszHeaders) {
+    return This->lpVtbl->GetInboundHttpHeaders(This,ppszHeaders);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_SetOutboundHttpHeaders(IWSDHttpMessageParameters* This,LPCWSTR pszHeaders) {
+    return This->lpVtbl->SetOutboundHttpHeaders(This,pszHeaders);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_GetOutboundHttpHeaders(IWSDHttpMessageParameters* This,LPCWSTR *ppszHeaders) {
+    return This->lpVtbl->GetOutboundHttpHeaders(This,ppszHeaders);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_SetID(IWSDHttpMessageParameters* This,LPCWSTR pszId) {
+    return This->lpVtbl->SetID(This,pszId);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_GetID(IWSDHttpMessageParameters* This,LPCWSTR *ppszId) {
+    return This->lpVtbl->GetID(This,ppszId);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_SetContext(IWSDHttpMessageParameters* This,IUnknown *pContext) {
+    return This->lpVtbl->SetContext(This,pContext);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_GetContext(IWSDHttpMessageParameters* This,IUnknown **ppContext) {
+    return This->lpVtbl->GetContext(This,ppContext);
+}
+static FORCEINLINE HRESULT IWSDHttpMessageParameters_Clear(IWSDHttpMessageParameters* This) {
+    return This->lpVtbl->Clear(This);
+}
 #endif
-    /* IWSDUdpMessageParameters methods */
-    STDMETHOD_(HRESULT,SetRetransmitParams)(THIS_ const WSDUdpRetransmitParams *pParams) PURE;
-    STDMETHOD_(HRESULT,GetRetransmitParams)(THIS_ WSDUdpRetransmitParams *pParams) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_SetInboundHttpHeaders_Proxy(
+    IWSDHttpMessageParameters* This,
+    LPCWSTR pszHeaders);
+void __RPC_STUB IWSDHttpMessageParameters_SetInboundHttpHeaders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_GetInboundHttpHeaders_Proxy(
+    IWSDHttpMessageParameters* This,
+    LPCWSTR *ppszHeaders);
+void __RPC_STUB IWSDHttpMessageParameters_GetInboundHttpHeaders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_SetOutboundHttpHeaders_Proxy(
+    IWSDHttpMessageParameters* This,
+    LPCWSTR pszHeaders);
+void __RPC_STUB IWSDHttpMessageParameters_SetOutboundHttpHeaders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_GetOutboundHttpHeaders_Proxy(
+    IWSDHttpMessageParameters* This,
+    LPCWSTR *ppszHeaders);
+void __RPC_STUB IWSDHttpMessageParameters_GetOutboundHttpHeaders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_SetID_Proxy(
+    IWSDHttpMessageParameters* This,
+    LPCWSTR pszId);
+void __RPC_STUB IWSDHttpMessageParameters_SetID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_GetID_Proxy(
+    IWSDHttpMessageParameters* This,
+    LPCWSTR *ppszId);
+void __RPC_STUB IWSDHttpMessageParameters_GetID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_SetContext_Proxy(
+    IWSDHttpMessageParameters* This,
+    IUnknown *pContext);
+void __RPC_STUB IWSDHttpMessageParameters_SetContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_GetContext_Proxy(
+    IWSDHttpMessageParameters* This,
+    IUnknown **ppContext);
+void __RPC_STUB IWSDHttpMessageParameters_GetContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpMessageParameters_Clear_Proxy(
+    IWSDHttpMessageParameters* This);
+void __RPC_STUB IWSDHttpMessageParameters_Clear_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDHttpMessageParameters_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDHttpAddress interface
+ */
+#ifndef __IWSDHttpAddress_INTERFACE_DEFINED__
+#define __IWSDHttpAddress_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDHttpAddress, 0xd09ac7bd, 0x2a3e, 0x4b85, 0x86,0x05, 0x27,0x37,0xff,0x3e,0x4e,0xa0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d09ac7bd-2a3e-4b85-8605-2737ff3e4ea0")
+IWSDHttpAddress : public IWSDTransportAddress
+{
+    virtual HRESULT STDMETHODCALLTYPE GetSecure(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetSecure(
+        WINBOOL fSecure) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPath(
+        LPCWSTR *ppszPath) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetPath(
+        LPCWSTR pszPath) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDHttpAddress, 0xd09ac7bd, 0x2a3e, 0x4b85, 0x86,0x05, 0x27,0x37,0xff,0x3e,0x4e,0xa0)
+#endif
+#else
+typedef struct IWSDHttpAddressVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDHttpAddress* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDHttpAddress* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDHttpAddress* This);
+
+    /*** IWSDAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *Serialize)(
+        IWSDHttpAddress* This,
+        LPWSTR pszBuffer,
+        DWORD cchLength,
+        WINBOOL fSafe);
+
+    HRESULT (STDMETHODCALLTYPE *Deserialize)(
+        IWSDHttpAddress* This,
+        LPCWSTR pszBuffer);
+
+    /*** IWSDTransportAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPort)(
+        IWSDHttpAddress* This,
+        WORD *pwPort);
+
+    HRESULT (STDMETHODCALLTYPE *SetPort)(
+        IWSDHttpAddress* This,
+        WORD wPort);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransportAddress)(
+        IWSDHttpAddress* This,
+        LPCWSTR *ppszAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetTransportAddressEx)(
+        IWSDHttpAddress* This,
+        WINBOOL fSafe,
+        LPCWSTR *ppszAddress);
+
+    HRESULT (STDMETHODCALLTYPE *SetTransportAddress)(
+        IWSDHttpAddress* This,
+        LPCWSTR pszAddress);
+
+    /*** IWSDHttpAddress methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetSecure)(
+        IWSDHttpAddress* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetSecure)(
+        IWSDHttpAddress* This,
+        WINBOOL fSecure);
+
+    HRESULT (STDMETHODCALLTYPE *GetPath)(
+        IWSDHttpAddress* This,
+        LPCWSTR *ppszPath);
+
+    HRESULT (STDMETHODCALLTYPE *SetPath)(
+        IWSDHttpAddress* This,
+        LPCWSTR pszPath);
 
     END_INTERFACE
+} IWSDHttpAddressVtbl;
+interface IWSDHttpAddress {
+    CONST_VTBL IWSDHttpAddressVtbl* lpVtbl;
 };
-#ifdef COBJMACROS
-#define IWSDUdpMessageParameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDUdpMessageParameters_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDUdpMessageParameters_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDUdpMessageParameters_GetLocalAddress(This,ppAddress) (This)->lpVtbl->GetLocalAddress(This,ppAddress)
-#define IWSDUdpMessageParameters_SetLocalAddress(This,pAddress) (This)->lpVtbl->SetLocalAddress(This,pAddress)
-#define IWSDUdpMessageParameters_GetRemoteAddress(This,ppAddress) (This)->lpVtbl->GetRemoteAddress(This,ppAddress)
-#define IWSDUdpMessageParameters_SetRemoteAddress(This,pAddress) (This)->lpVtbl->SetRemoteAddress(This,pAddress)
-#define IWSDUdpMessageParameters_GetLowerParameters(This,ppTxParams) (This)->lpVtbl->GetLowerParameters(This,ppTxParams)
-#define IWSDUdpMessageParameters_SetRetransmitParams(This,pParams) (This)->lpVtbl->SetRetransmitParams(This,pParams)
-#define IWSDUdpMessageParameters_GetRetransmitParams(This,pParams) (This)->lpVtbl->GetRetransmitParams(This,pParams)
-#endif /*COBJMACROS*/
 
-#ifdef __cplusplus
-extern "C" {
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDHttpAddress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDHttpAddress_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDHttpAddress_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDAddress methods ***/
+#define IWSDHttpAddress_Serialize(This,pszBuffer,cchLength,fSafe) (This)->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe)
+#define IWSDHttpAddress_Deserialize(This,pszBuffer) (This)->lpVtbl->Deserialize(This,pszBuffer)
+/*** IWSDTransportAddress methods ***/
+#define IWSDHttpAddress_GetPort(This,pwPort) (This)->lpVtbl->GetPort(This,pwPort)
+#define IWSDHttpAddress_SetPort(This,wPort) (This)->lpVtbl->SetPort(This,wPort)
+#define IWSDHttpAddress_GetTransportAddress(This,ppszAddress) (This)->lpVtbl->GetTransportAddress(This,ppszAddress)
+#define IWSDHttpAddress_GetTransportAddressEx(This,fSafe,ppszAddress) (This)->lpVtbl->GetTransportAddressEx(This,fSafe,ppszAddress)
+#define IWSDHttpAddress_SetTransportAddress(This,pszAddress) (This)->lpVtbl->SetTransportAddress(This,pszAddress)
+/*** IWSDHttpAddress methods ***/
+#define IWSDHttpAddress_GetSecure(This) (This)->lpVtbl->GetSecure(This)
+#define IWSDHttpAddress_SetSecure(This,fSecure) (This)->lpVtbl->SetSecure(This,fSecure)
+#define IWSDHttpAddress_GetPath(This,ppszPath) (This)->lpVtbl->GetPath(This,ppszPath)
+#define IWSDHttpAddress_SetPath(This,pszPath) (This)->lpVtbl->SetPath(This,pszPath)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDHttpAddress_QueryInterface(IWSDHttpAddress* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDHttpAddress_AddRef(IWSDHttpAddress* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDHttpAddress_Release(IWSDHttpAddress* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDAddress methods ***/
+static FORCEINLINE HRESULT IWSDHttpAddress_Serialize(IWSDHttpAddress* This,LPWSTR pszBuffer,DWORD cchLength,WINBOOL fSafe) {
+    return This->lpVtbl->Serialize(This,pszBuffer,cchLength,fSafe);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_Deserialize(IWSDHttpAddress* This,LPCWSTR pszBuffer) {
+    return This->lpVtbl->Deserialize(This,pszBuffer);
+}
+/*** IWSDTransportAddress methods ***/
+static FORCEINLINE HRESULT IWSDHttpAddress_GetPort(IWSDHttpAddress* This,WORD *pwPort) {
+    return This->lpVtbl->GetPort(This,pwPort);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_SetPort(IWSDHttpAddress* This,WORD wPort) {
+    return This->lpVtbl->SetPort(This,wPort);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_GetTransportAddress(IWSDHttpAddress* This,LPCWSTR *ppszAddress) {
+    return This->lpVtbl->GetTransportAddress(This,ppszAddress);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_GetTransportAddressEx(IWSDHttpAddress* This,WINBOOL fSafe,LPCWSTR *ppszAddress) {
+    return This->lpVtbl->GetTransportAddressEx(This,fSafe,ppszAddress);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_SetTransportAddress(IWSDHttpAddress* This,LPCWSTR pszAddress) {
+    return This->lpVtbl->SetTransportAddress(This,pszAddress);
+}
+/*** IWSDHttpAddress methods ***/
+static FORCEINLINE HRESULT IWSDHttpAddress_GetSecure(IWSDHttpAddress* This) {
+    return This->lpVtbl->GetSecure(This);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_SetSecure(IWSDHttpAddress* This,WINBOOL fSecure) {
+    return This->lpVtbl->SetSecure(This,fSecure);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_GetPath(IWSDHttpAddress* This,LPCWSTR *ppszPath) {
+    return This->lpVtbl->GetPath(This,ppszPath);
+}
+static FORCEINLINE HRESULT IWSDHttpAddress_SetPath(IWSDHttpAddress* This,LPCWSTR pszPath) {
+    return This->lpVtbl->SetPath(This,pszPath);
+}
+#endif
 #endif
 
-HRESULT WINAPI WSDCreateHttpAddress(IWSDHttpAddress **ppAddress);
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDHttpAddress_GetSecure_Proxy(
+    IWSDHttpAddress* This);
+void __RPC_STUB IWSDHttpAddress_GetSecure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpAddress_SetSecure_Proxy(
+    IWSDHttpAddress* This,
+    WINBOOL fSecure);
+void __RPC_STUB IWSDHttpAddress_SetSecure_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpAddress_GetPath_Proxy(
+    IWSDHttpAddress* This,
+    LPCWSTR *ppszPath);
+void __RPC_STUB IWSDHttpAddress_GetPath_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpAddress_SetPath_Proxy(
+    IWSDHttpAddress* This,
+    LPCWSTR pszPath);
+void __RPC_STUB IWSDHttpAddress_SetPath_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDHttpAddress_INTERFACE_DEFINED__ */
+
+#if WINVER >= 0x601
+/*****************************************************************************
+ * IWSDSSLClientCertificate interface
+ */
+#ifndef __IWSDSSLClientCertificate_INTERFACE_DEFINED__
+#define __IWSDSSLClientCertificate_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDSSLClientCertificate, 0xde105e87, 0xa0da, 0x418e, 0x98,0xad, 0x27,0xb9,0xee,0xd8,0x7b,0xdc);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("de105e87-a0da-418e-98ad-27b9eed87bdc")
+IWSDSSLClientCertificate : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClientCertificate(
+        PCCERT_CONTEXT *ppCertContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMappedAccessToken(
+        HANDLE *phToken) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDSSLClientCertificate, 0xde105e87, 0xa0da, 0x418e, 0x98,0xad, 0x27,0xb9,0xee,0xd8,0x7b,0xdc)
+#endif
+#else
+typedef struct IWSDSSLClientCertificateVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDSSLClientCertificate* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDSSLClientCertificate* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDSSLClientCertificate* This);
+
+    /*** IWSDSSLClientCertificate methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClientCertificate)(
+        IWSDSSLClientCertificate* This,
+        PCCERT_CONTEXT *ppCertContext);
+
+    HRESULT (STDMETHODCALLTYPE *GetMappedAccessToken)(
+        IWSDSSLClientCertificate* This,
+        HANDLE *phToken);
+
+    END_INTERFACE
+} IWSDSSLClientCertificateVtbl;
+interface IWSDSSLClientCertificate {
+    CONST_VTBL IWSDSSLClientCertificateVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDSSLClientCertificate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDSSLClientCertificate_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDSSLClientCertificate_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDSSLClientCertificate methods ***/
+#define IWSDSSLClientCertificate_GetClientCertificate(This,ppCertContext) (This)->lpVtbl->GetClientCertificate(This,ppCertContext)
+#define IWSDSSLClientCertificate_GetMappedAccessToken(This,phToken) (This)->lpVtbl->GetMappedAccessToken(This,phToken)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDSSLClientCertificate_QueryInterface(IWSDSSLClientCertificate* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDSSLClientCertificate_AddRef(IWSDSSLClientCertificate* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDSSLClientCertificate_Release(IWSDSSLClientCertificate* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDSSLClientCertificate methods ***/
+static FORCEINLINE HRESULT IWSDSSLClientCertificate_GetClientCertificate(IWSDSSLClientCertificate* This,PCCERT_CONTEXT *ppCertContext) {
+    return This->lpVtbl->GetClientCertificate(This,ppCertContext);
+}
+static FORCEINLINE HRESULT IWSDSSLClientCertificate_GetMappedAccessToken(IWSDSSLClientCertificate* This,HANDLE *phToken) {
+    return This->lpVtbl->GetMappedAccessToken(This,phToken);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDSSLClientCertificate_GetClientCertificate_Proxy(
+    IWSDSSLClientCertificate* This,
+    PCCERT_CONTEXT *ppCertContext);
+void __RPC_STUB IWSDSSLClientCertificate_GetClientCertificate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDSSLClientCertificate_GetMappedAccessToken_Proxy(
+    IWSDSSLClientCertificate* This,
+    HANDLE *phToken);
+void __RPC_STUB IWSDSSLClientCertificate_GetMappedAccessToken_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDSSLClientCertificate_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDHttpAuthParameters interface
+ */
+#ifndef __IWSDHttpAuthParameters_INTERFACE_DEFINED__
+#define __IWSDHttpAuthParameters_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDHttpAuthParameters, 0x0b476df0, 0x8dac, 0x480d, 0xb0,0x5c, 0x99,0x78,0x1a,0x58,0x84,0xaa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("0b476df0-8dac-480d-b05c-99781a5884aa")
+IWSDHttpAuthParameters : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetClientAccessToken(
+        HANDLE *phToken) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAuthType(
+        PWSD_SECURITY_HTTP_AUTH_SCHEMES pAuthType) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDHttpAuthParameters, 0x0b476df0, 0x8dac, 0x480d, 0xb0,0x5c, 0x99,0x78,0x1a,0x58,0x84,0xaa)
+#endif
+#else
+typedef struct IWSDHttpAuthParametersVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDHttpAuthParameters* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDHttpAuthParameters* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDHttpAuthParameters* This);
+
+    /*** IWSDHttpAuthParameters methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetClientAccessToken)(
+        IWSDHttpAuthParameters* This,
+        HANDLE *phToken);
+
+    HRESULT (STDMETHODCALLTYPE *GetAuthType)(
+        IWSDHttpAuthParameters* This,
+        PWSD_SECURITY_HTTP_AUTH_SCHEMES pAuthType);
+
+    END_INTERFACE
+} IWSDHttpAuthParametersVtbl;
+interface IWSDHttpAuthParameters {
+    CONST_VTBL IWSDHttpAuthParametersVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDHttpAuthParameters_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDHttpAuthParameters_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDHttpAuthParameters_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDHttpAuthParameters methods ***/
+#define IWSDHttpAuthParameters_GetClientAccessToken(This,phToken) (This)->lpVtbl->GetClientAccessToken(This,phToken)
+#define IWSDHttpAuthParameters_GetAuthType(This,pAuthType) (This)->lpVtbl->GetAuthType(This,pAuthType)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDHttpAuthParameters_QueryInterface(IWSDHttpAuthParameters* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDHttpAuthParameters_AddRef(IWSDHttpAuthParameters* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDHttpAuthParameters_Release(IWSDHttpAuthParameters* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDHttpAuthParameters methods ***/
+static FORCEINLINE HRESULT IWSDHttpAuthParameters_GetClientAccessToken(IWSDHttpAuthParameters* This,HANDLE *phToken) {
+    return This->lpVtbl->GetClientAccessToken(This,phToken);
+}
+static FORCEINLINE HRESULT IWSDHttpAuthParameters_GetAuthType(IWSDHttpAuthParameters* This,PWSD_SECURITY_HTTP_AUTH_SCHEMES pAuthType) {
+    return This->lpVtbl->GetAuthType(This,pAuthType);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDHttpAuthParameters_GetClientAccessToken_Proxy(
+    IWSDHttpAuthParameters* This,
+    HANDLE *phToken);
+void __RPC_STUB IWSDHttpAuthParameters_GetClientAccessToken_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDHttpAuthParameters_GetAuthType_Proxy(
+    IWSDHttpAuthParameters* This,
+    PWSD_SECURITY_HTTP_AUTH_SCHEMES pAuthType);
+void __RPC_STUB IWSDHttpAuthParameters_GetAuthType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDHttpAuthParameters_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDSignatureProperty interface
+ */
+#ifndef __IWSDSignatureProperty_INTERFACE_DEFINED__
+#define __IWSDSignatureProperty_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDSignatureProperty, 0x03ce20aa, 0x71c4, 0x45e2, 0xb3,0x2e, 0x37,0x66,0xc6,0x1c,0x79,0x0f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("03ce20aa-71c4-45e2-b32e-3766c61c790f")
+IWSDSignatureProperty : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE IsMessageSigned(
+        WINBOOL *pbSigned) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE IsMessageSignatureTrusted(
+        WINBOOL *pbSignatureTrusted) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetKeyInfo(
+        BYTE *pbKeyInfo,
+        DWORD *pdwKeyInfoSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSignature(
+        BYTE *pbSignature,
+        DWORD *pdwSignatureSize) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSignedInfoHash(
+        BYTE *pbSignedInfoHash,
+        DWORD *pdwHashSize) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDSignatureProperty, 0x03ce20aa, 0x71c4, 0x45e2, 0xb3,0x2e, 0x37,0x66,0xc6,0x1c,0x79,0x0f)
+#endif
+#else
+typedef struct IWSDSignaturePropertyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDSignatureProperty* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDSignatureProperty* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDSignatureProperty* This);
+
+    /*** IWSDSignatureProperty methods ***/
+    HRESULT (STDMETHODCALLTYPE *IsMessageSigned)(
+        IWSDSignatureProperty* This,
+        WINBOOL *pbSigned);
+
+    HRESULT (STDMETHODCALLTYPE *IsMessageSignatureTrusted)(
+        IWSDSignatureProperty* This,
+        WINBOOL *pbSignatureTrusted);
+
+    HRESULT (STDMETHODCALLTYPE *GetKeyInfo)(
+        IWSDSignatureProperty* This,
+        BYTE *pbKeyInfo,
+        DWORD *pdwKeyInfoSize);
+
+    HRESULT (STDMETHODCALLTYPE *GetSignature)(
+        IWSDSignatureProperty* This,
+        BYTE *pbSignature,
+        DWORD *pdwSignatureSize);
+
+    HRESULT (STDMETHODCALLTYPE *GetSignedInfoHash)(
+        IWSDSignatureProperty* This,
+        BYTE *pbSignedInfoHash,
+        DWORD *pdwHashSize);
+
+    END_INTERFACE
+} IWSDSignaturePropertyVtbl;
+interface IWSDSignatureProperty {
+    CONST_VTBL IWSDSignaturePropertyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDSignatureProperty_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDSignatureProperty_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDSignatureProperty_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDSignatureProperty methods ***/
+#define IWSDSignatureProperty_IsMessageSigned(This,pbSigned) (This)->lpVtbl->IsMessageSigned(This,pbSigned)
+#define IWSDSignatureProperty_IsMessageSignatureTrusted(This,pbSignatureTrusted) (This)->lpVtbl->IsMessageSignatureTrusted(This,pbSignatureTrusted)
+#define IWSDSignatureProperty_GetKeyInfo(This,pbKeyInfo,pdwKeyInfoSize) (This)->lpVtbl->GetKeyInfo(This,pbKeyInfo,pdwKeyInfoSize)
+#define IWSDSignatureProperty_GetSignature(This,pbSignature,pdwSignatureSize) (This)->lpVtbl->GetSignature(This,pbSignature,pdwSignatureSize)
+#define IWSDSignatureProperty_GetSignedInfoHash(This,pbSignedInfoHash,pdwHashSize) (This)->lpVtbl->GetSignedInfoHash(This,pbSignedInfoHash,pdwHashSize)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDSignatureProperty_QueryInterface(IWSDSignatureProperty* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDSignatureProperty_AddRef(IWSDSignatureProperty* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDSignatureProperty_Release(IWSDSignatureProperty* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDSignatureProperty methods ***/
+static FORCEINLINE HRESULT IWSDSignatureProperty_IsMessageSigned(IWSDSignatureProperty* This,WINBOOL *pbSigned) {
+    return This->lpVtbl->IsMessageSigned(This,pbSigned);
+}
+static FORCEINLINE HRESULT IWSDSignatureProperty_IsMessageSignatureTrusted(IWSDSignatureProperty* This,WINBOOL *pbSignatureTrusted) {
+    return This->lpVtbl->IsMessageSignatureTrusted(This,pbSignatureTrusted);
+}
+static FORCEINLINE HRESULT IWSDSignatureProperty_GetKeyInfo(IWSDSignatureProperty* This,BYTE *pbKeyInfo,DWORD *pdwKeyInfoSize) {
+    return This->lpVtbl->GetKeyInfo(This,pbKeyInfo,pdwKeyInfoSize);
+}
+static FORCEINLINE HRESULT IWSDSignatureProperty_GetSignature(IWSDSignatureProperty* This,BYTE *pbSignature,DWORD *pdwSignatureSize) {
+    return This->lpVtbl->GetSignature(This,pbSignature,pdwSignatureSize);
+}
+static FORCEINLINE HRESULT IWSDSignatureProperty_GetSignedInfoHash(IWSDSignatureProperty* This,BYTE *pbSignedInfoHash,DWORD *pdwHashSize) {
+    return This->lpVtbl->GetSignedInfoHash(This,pbSignedInfoHash,pdwHashSize);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDSignatureProperty_IsMessageSigned_Proxy(
+    IWSDSignatureProperty* This,
+    WINBOOL *pbSigned);
+void __RPC_STUB IWSDSignatureProperty_IsMessageSigned_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDSignatureProperty_IsMessageSignatureTrusted_Proxy(
+    IWSDSignatureProperty* This,
+    WINBOOL *pbSignatureTrusted);
+void __RPC_STUB IWSDSignatureProperty_IsMessageSignatureTrusted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDSignatureProperty_GetKeyInfo_Proxy(
+    IWSDSignatureProperty* This,
+    BYTE *pbKeyInfo,
+    DWORD *pdwKeyInfoSize);
+void __RPC_STUB IWSDSignatureProperty_GetKeyInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDSignatureProperty_GetSignature_Proxy(
+    IWSDSignatureProperty* This,
+    BYTE *pbSignature,
+    DWORD *pdwSignatureSize);
+void __RPC_STUB IWSDSignatureProperty_GetSignature_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDSignatureProperty_GetSignedInfoHash_Proxy(
+    IWSDSignatureProperty* This,
+    BYTE *pbSignedInfoHash,
+    DWORD *pdwHashSize);
+void __RPC_STUB IWSDSignatureProperty_GetSignedInfoHash_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDSignatureProperty_INTERFACE_DEFINED__ */
+
+#endif
+HRESULT WINAPI WSDCreateHttpAddress(IWSDHttpAddress **ppAdress);
 HRESULT WINAPI WSDCreateHttpMessageParameters(IWSDHttpMessageParameters **ppTxParams);
-HRESULT WINAPI WSDCreateUdpAddress(IWSDUdpAddress **ppAddress);
-HRESULT WINAPI WSDCreateUdpMessageParameters(IWSDUdpMessageParameters **ppTxParams);
+#endif
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_WSDBASE*/
+#endif /* __wsdbase_h__ */
diff --git a/mingw-w64-headers/include/wsdbase.idl b/mingw-w64-headers/include/wsdbase.idl
new file mode 100644
index 0000000..720b855
--- /dev/null
+++ b/mingw-w64-headers/include/wsdbase.idl
@@ -0,0 +1,225 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "objidl.idl";
+import "wincrypt.idl";
+
+cpp_quote("")
+interface IWSDAddress;
+interface IWSDMessageParameters;
+interface IWSDUdpAddress;
+interface IWSDUdpMessageParameters;
+interface IWSDHttpAddress;
+interface IWSDHttpMessageParameters;
+
+cpp_quote("")
+cpp_quote("#if WINVER >= 0x601")
+typedef enum {
+  WSD_CONFIG_MAX_INBOUND_MESSAGE_SIZE = 1,
+  WSD_CONFIG_MAX_OUTBOUND_MESSAGE_SIZE = 2,
+  WSD_SECURITY_SSL_CERT_FOR_CLIENT_AUTH = 3,
+  WSD_SECURITY_SSL_SERVER_CERT_VALIDATION = 4,
+  WSD_SECURITY_SSL_CLIENT_CERT_VALIDATION = 5,
+  WSD_SECURITY_SSL_NEGOTIATE_CLIENT_CERT = 6,
+  WSD_SECURITY_COMPACTSIG_SIGNING_CERT = 7,
+  WSD_SECURITY_COMPACTSIG_VALIDATION = 8,
+  WSD_CONFIG_HOSTING_ADDRESSES = 9,
+  WSD_CONFIG_DEVICE_ADDRESSES = 10,
+  WSD_SECURITY_REQUIRE_HTTP_CLIENT_AUTH = 11,
+  WSD_SECURITY_REQUIRE_CLIENT_CERT_OR_HTTP_CLIENT_AUTH = 12,
+  WSD_SECURITY_USE_HTTP_CLIENT_AUTH = 13
+} WSD_CONFIG_PARAM_TYPE;
+
+typedef struct _WSD_CONFIG_PARAM {
+  WSD_CONFIG_PARAM_TYPE configParamType;
+  PVOID pConfigData;
+  DWORD dwConfigDataSize;
+} WSD_CONFIG_PARAM,*PWSD_CONFIG_PARAM;
+
+typedef struct _WSD_SECURITY_CERT_VALIDATION_V1 {
+  PCCERT_CONTEXT *certMatchArray;
+  DWORD dwCertMatchArrayCount;
+  HCERTSTORE hCertMatchStore;
+  HCERTSTORE hCertIssuerStore;
+  DWORD dwCertCheckOptions;
+} WSD_SECURITY_CERT_VALIDATION_V1;
+
+cpp_quote("#if _WIN32_WINNT >= 0x602")
+typedef struct _WSD_SECURITY_CERT_VALIDATION {
+  PCCERT_CONTEXT *certMatchArray;
+  DWORD dwCertMatchArrayCount;
+  HCERTSTORE hCertMatchStore;
+  HCERTSTORE hCertIssuerStore;
+  DWORD dwCertCheckOptions;
+  LPCWSTR pszCNGHashAlgId;
+  BYTE *pbCertHash;
+  DWORD dwCertHashSize;
+} WSD_SECURITY_CERT_VALIDATION;
+cpp_quote("#else")
+cpp_quote("typedef WSD_SECURITY_CERT_VALIDATION_V1 WSD_SECURITY_CERT_VALIDATION;")
+cpp_quote("#endif")
+
+cpp_quote("")
+typedef WSD_SECURITY_CERT_VALIDATION *PWSD_SECURITY_CERT_VALIDATION;
+
+typedef struct _WSD_SECURITY_SIGNATURE_VALIDATION {
+  PCCERT_CONTEXT *signingCertArray;
+  DWORD dwSigningCertArrayCount;
+  HCERTSTORE hSigningCertStore;
+  DWORD dwFlags;
+} WSD_SECURITY_SIGNATURE_VALIDATION,*PWSD_SECURITY_SIGNATURE_VALIDATION;
+
+typedef DWORD WSD_SECURITY_HTTP_AUTH_SCHEMES,*PWSD_SECURITY_HTTP_AUTH_SCHEMES;
+
+cpp_quote("")
+cpp_quote("#define WSDAPI_SSL_CERT_APPLY_DEFAULT_CHECKS 0x0")
+cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_REVOCATION 0x1")
+cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_EXPIRY 0x2")
+cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_WRONG_USAGE 0x4")
+cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_UNKNOWN_CA 0x8")
+cpp_quote("#define WSDAPI_SSL_CERT_IGNORE_INVALID_CN 0x10")
+cpp_quote("")
+cpp_quote("#define WSDAPI_COMPACTSIG_ACCEPT_ALL_MESSAGES 0x1")
+cpp_quote("")
+cpp_quote("#define WSD_SECURITY_HTTP_AUTH_SCHEME_NEGOTIATE 0x1")
+cpp_quote("#define WSD_SECURITY_HTTP_AUTH_SCHEME_NTLM 0x2")
+cpp_quote("")
+
+typedef struct _WSD_CONFIG_ADDRESSES {
+  IWSDAddress **addresses;
+  DWORD dwAddressCount;
+} WSD_CONFIG_ADDRESSES,*PWSD_CONFIG_ADDRESSES;
+cpp_quote("#endif")
+
+cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV4 1")
+cpp_quote("#define WSDAPI_ADDRESSFAMILY_IPV6 2")
+
+[object, uuid (b9574c6c-12a6-4f74-93a1-3318ff605759), local]
+interface IWSDAddress : IUnknown {
+  HRESULT Serialize ([out, size_is (cchLength)] LPWSTR pszBuffer,[in] DWORD cchLength,[in] BOOL fSafe);
+  HRESULT Deserialize ([in] LPCWSTR pszBuffer);
+}
+
+[object, uuid (70d23498-4ee6-4340-a3df-d845d2235467), local]
+interface IWSDTransportAddress : IWSDAddress {
+  HRESULT GetPort ([out] WORD *pwPort);
+  HRESULT SetPort ([in] WORD wPort);
+  HRESULT GetTransportAddress ([out] LPCWSTR *ppszAddress);
+  HRESULT GetTransportAddressEx ([in] BOOL fSafe,[out] LPCWSTR *ppszAddress);
+  HRESULT SetTransportAddress ([in] LPCWSTR pszAddress);
+}
+
+[object, uuid (1fafe8a2-e6fc-4b80-b6cf-b7d45c416d7c)]
+interface IWSDMessageParameters : IUnknown {
+  HRESULT GetLocalAddress ([out] IWSDAddress **ppAddress);
+  HRESULT SetLocalAddress ([in] IWSDAddress *pAddress);
+  HRESULT GetRemoteAddress ([out] IWSDAddress **ppAddress);
+  HRESULT SetRemoteAddress ([in] IWSDAddress *pAddress);
+  HRESULT GetLowerParameters ([out] IWSDMessageParameters **ppTxParams);
+}
+
+cpp_quote("HRESULT WINAPI")
+cpp_quote("WSDCreateUdpMessageParameters(")
+cpp_quote("IWSDUdpMessageParameters** ppTxParams);")
+
+typedef struct _WSDUdpRetransmitParams {
+  ULONG ulSendDelay;
+  ULONG ulRepeat;
+  ULONG ulRepeatMinDelay;
+  ULONG ulRepeatMaxDelay;
+  ULONG ulRepeatUpperDelay;
+} WSDUdpRetransmitParams;
+
+[object, uuid (9934149f-8f0c-447b-aa0b-73124b0ca7f0)]
+interface IWSDUdpMessageParameters : IWSDMessageParameters {
+  HRESULT SetRetransmitParams ([in] const WSDUdpRetransmitParams *pParams);
+  HRESULT GetRetransmitParams ([out] WSDUdpRetransmitParams *pParams);
+}
+
+cpp_quote("HRESULT WINAPI")
+cpp_quote("WSDCreateUdpAddress(")
+cpp_quote(" IWSDUdpAddress** ppAddress);")
+
+#ifndef SOCKADDR_STORAGE
+cpp_quote("#if 1")
+cpp_quote("")
+cpp_quote("#ifndef __CSADDR_DEFINED__")
+cpp_quote("struct SOCKADDR_STORAGE;")
+cpp_quote("#endif")
+cpp_quote("#else")
+typedef void SOCKADDR_STORAGE;
+cpp_quote("#endif")
+#endif
+
+typedef enum _WSDUdpMessageType {
+  ONE_WAY,
+  TWO_WAY
+} WSDUdpMessageType;
+
+[object, local, uuid (74d6124a-a441-4f78-a1eb-97a8d1996893)]
+interface IWSDUdpAddress : IWSDTransportAddress {
+  HRESULT SetSockaddr ([in] const SOCKADDR_STORAGE *pSockAddr);
+  HRESULT GetSockaddr ([out] SOCKADDR_STORAGE *pSockAddr);
+  HRESULT SetExclusive ([in] BOOL fExclusive);
+  HRESULT GetExclusive ();
+  HRESULT SetMessageType ([in] WSDUdpMessageType messageType);
+  HRESULT GetMessageType ([out] WSDUdpMessageType *pMessageType);
+  HRESULT SetTTL ([in] DWORD dwTTL);
+  HRESULT GetTTL ([out] DWORD *pdwTTL);
+  HRESULT SetAlias ([in] const GUID *pAlias);
+  HRESULT GetAlias ([out] GUID *pAlias);
+}
+
+[object, local, uuid (540bd122-5c83-4dec-b396-ea62a2697fdf)]
+interface IWSDHttpMessageParameters : IWSDMessageParameters {
+  HRESULT SetInboundHttpHeaders ([in] LPCWSTR pszHeaders);
+  HRESULT GetInboundHttpHeaders ([out] LPCWSTR *ppszHeaders);
+  HRESULT SetOutboundHttpHeaders ([in] LPCWSTR pszHeaders);
+  HRESULT GetOutboundHttpHeaders ([out] LPCWSTR *ppszHeaders);
+  HRESULT SetID ([in] LPCWSTR pszId);
+  HRESULT GetID ([out] LPCWSTR *ppszId);
+  HRESULT SetContext ([in] IUnknown *pContext);
+  HRESULT GetContext ([out] IUnknown **ppContext);
+  HRESULT Clear ();
+}
+
+[object, local, uuid (d09ac7bd-2a3e-4b85-8605-2737ff3e4ea0)]
+interface IWSDHttpAddress : IWSDTransportAddress {
+  HRESULT GetSecure ();
+  HRESULT SetSecure ([in] BOOL fSecure);
+  HRESULT GetPath ([out] LPCWSTR *ppszPath);
+  HRESULT SetPath ([in] LPCWSTR pszPath);
+}
+
+cpp_quote("#if WINVER >= 0x601")
+[object, local, uuid (de105e87-a0da-418e-98ad-27b9eed87bdc)]
+interface IWSDSSLClientCertificate : IUnknown {
+  HRESULT GetClientCertificate ([in, out] PCCERT_CONTEXT *ppCertContext);
+  HRESULT GetMappedAccessToken ([in, out] HANDLE *phToken);
+}
+
+[object, local, uuid (0b476df0-8dac-480d-b05c-99781a5884aa)]
+interface IWSDHttpAuthParameters: IUnknown {
+  HRESULT GetClientAccessToken ([out] HANDLE *phToken);
+  HRESULT GetAuthType ([out] PWSD_SECURITY_HTTP_AUTH_SCHEMES pAuthType);
+}
+
+[object, local, uuid (03ce20aa-71c4-45e2-b32e-3766c61c790f), pointer_default (unique), restricted]
+interface IWSDSignatureProperty : IUnknown {
+  HRESULT IsMessageSigned ([out] BOOL *pbSigned);
+  HRESULT IsMessageSignatureTrusted ([out] BOOL *pbSignatureTrusted);
+  HRESULT GetKeyInfo ([out, size_is (*pdwKeyInfoSize)] BYTE *pbKeyInfo,[in, out] DWORD *pdwKeyInfoSize);
+  HRESULT GetSignature ([out, size_is (*pdwSignatureSize)] BYTE *pbSignature,[in, out] DWORD *pdwSignatureSize);
+  HRESULT GetSignedInfoHash ([out, size_is (*pdwHashSize)] BYTE *pbSignedInfoHash,[in, out] DWORD *pdwHashSize);
+}
+cpp_quote("#endif")
+
+cpp_quote("HRESULT WINAPI WSDCreateHttpAddress(IWSDHttpAddress **ppAdress);")
+cpp_quote("HRESULT WINAPI WSDCreateHttpMessageParameters(IWSDHttpMessageParameters **ppTxParams);")
+
+cpp_quote("#endif")
diff --git a/mingw-w64-headers/include/wsdclient.h b/mingw-w64-headers/include/wsdclient.h
index 7603291..d19d53d 100644
--- a/mingw-w64-headers/include/wsdclient.h
+++ b/mingw-w64-headers/include/wsdclient.h
@@ -1,128 +1,967 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+/*** Autogenerated by WIDL 1.6 from wsdclient.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __wsdclient_h__
+#define __wsdclient_h__
+
+/* Forward declarations */
+
+#ifndef __IWSDAsyncResult_FWD_DEFINED__
+#define __IWSDAsyncResult_FWD_DEFINED__
+typedef interface IWSDAsyncResult IWSDAsyncResult;
+#endif
+
+#ifndef __IWSDAsyncCallback_FWD_DEFINED__
+#define __IWSDAsyncCallback_FWD_DEFINED__
+typedef interface IWSDAsyncCallback IWSDAsyncCallback;
+#endif
+
+#ifndef __IWSDMetadataExchange_FWD_DEFINED__
+#define __IWSDMetadataExchange_FWD_DEFINED__
+typedef interface IWSDMetadataExchange IWSDMetadataExchange;
+#endif
+
+#ifndef __IWSDEventingStatus_FWD_DEFINED__
+#define __IWSDEventingStatus_FWD_DEFINED__
+typedef interface IWSDEventingStatus IWSDEventingStatus;
+#endif
+
+#ifndef __IWSDEndpointProxy_FWD_DEFINED__
+#define __IWSDEndpointProxy_FWD_DEFINED__
+typedef interface IWSDEndpointProxy IWSDEndpointProxy;
+#endif
+
+#ifndef __IWSDDeviceProxy_FWD_DEFINED__
+#define __IWSDDeviceProxy_FWD_DEFINED__
+typedef interface IWSDDeviceProxy IWSDDeviceProxy;
+#endif
+
+#ifndef __IWSDServiceProxy_FWD_DEFINED__
+#define __IWSDServiceProxy_FWD_DEFINED__
+typedef interface IWSDServiceProxy IWSDServiceProxy;
+#endif
+
+#ifndef __IWSDServiceProxyEventing_FWD_DEFINED__
+#define __IWSDServiceProxyEventing_FWD_DEFINED__
+typedef interface IWSDServiceProxyEventing IWSDServiceProxyEventing;
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+#include <wsdxmldom.h>
+#include <wsdtypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifndef __IWSDAddress_FWD_DEFINED__
+#define __IWSDAddress_FWD_DEFINED__
+typedef interface IWSDAddress IWSDAddress;
+#endif
+
+#ifndef __IWSDXMLContext_FWD_DEFINED__
+#define __IWSDXMLContext_FWD_DEFINED__
+typedef interface IWSDXMLContext IWSDXMLContext;
+#endif
+
+#ifndef __IWSDiscoveredService_FWD_DEFINED__
+#define __IWSDiscoveredService_FWD_DEFINED__
+typedef interface IWSDiscoveredService IWSDiscoveredService;
+#endif
+
+#ifndef __IWSDDeviceProxy_FWD_DEFINED__
+#define __IWSDDeviceProxy_FWD_DEFINED__
+typedef interface IWSDDeviceProxy IWSDDeviceProxy;
+#endif
+
+#ifndef __IWSDServiceProxy_FWD_DEFINED__
+#define __IWSDServiceProxy_FWD_DEFINED__
+typedef interface IWSDServiceProxy IWSDServiceProxy;
+#endif
+
+#ifndef __IWSDEndpointProxy_FWD_DEFINED__
+#define __IWSDEndpointProxy_FWD_DEFINED__
+typedef interface IWSDEndpointProxy IWSDEndpointProxy;
+#endif
+
+#ifndef __IWSDAsyncResult_FWD_DEFINED__
+#define __IWSDAsyncResult_FWD_DEFINED__
+typedef interface IWSDAsyncResult IWSDAsyncResult;
+#endif
+
+#ifndef __IWSDAsyncCallback_FWD_DEFINED__
+#define __IWSDAsyncCallback_FWD_DEFINED__
+typedef interface IWSDAsyncCallback IWSDAsyncCallback;
+#endif
+
+#ifndef __IWSDMetadataExchange_FWD_DEFINED__
+#define __IWSDMetadataExchange_FWD_DEFINED__
+typedef interface IWSDMetadataExchange IWSDMetadataExchange;
+#endif
+
+#ifndef __IWSDEventingStatus_FWD_DEFINED__
+#define __IWSDEventingStatus_FWD_DEFINED__
+typedef interface IWSDEventingStatus IWSDEventingStatus;
+#endif
+
+/*****************************************************************************
+ * IWSDAsyncResult interface
  */
-#ifndef _INC_WSDCLIENT
-#define _INC_WSDCLIENT
+#ifndef __IWSDAsyncResult_INTERFACE_DEFINED__
+#define __IWSDAsyncResult_INTERFACE_DEFINED__
 
-#ifndef _INC_WSDAPI
-#error Please include wsdapi.h instead of this header. This header cannot be used directly.
+DEFINE_GUID(IID_IWSDAsyncResult, 0x11a9852a, 0x8dd8, 0x423e, 0xb5,0x37, 0x93,0x56,0xdb,0x4f,0xbf,0xb8);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("11a9852a-8dd8-423e-b537-9356db4fbfb8")
+IWSDAsyncResult : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetCallback(
+        IWSDAsyncCallback *pCallback,
+        IUnknown *pAsyncState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetWaitHandle(
+        HANDLE hWaitHandle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE HasCompleted(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAsyncState(
+        IUnknown **ppAsyncState) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Abort(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEvent(
+        WSD_EVENT *pEvent) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEndpointProxy(
+        IWSDEndpointProxy **ppEndpoint) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDAsyncResult, 0x11a9852a, 0x8dd8, 0x423e, 0xb5,0x37, 0x93,0x56,0xdb,0x4f,0xbf,0xb8)
 #endif
-
-#if (_WIN32_WINNT >= 0x0600)
-
-#undef  INTERFACE
-#define INTERFACE IWSDEventingStatus
-DECLARE_INTERFACE_(IWSDEventingStatus,IUnknown) {
+#else
+typedef struct IWSDAsyncResultVtbl {
     BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-#endif
-    /* IWSDEventingStatus methods */
-    STDMETHOD(SubscriptionRenewed)(THIS_ LPCWSTR pszSubscriptionAction) PURE;
-    STDMETHOD(SubscriptionRenewalFailed)(THIS_ LPCWSTR pszSubscriptionAction,HRESULT hr) PURE;
-    STDMETHOD(SubscriptionEnded)(THIS_ LPCWSTR pszSubscriptionAction) PURE;
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDAsyncResult* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDAsyncResult* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDAsyncResult* This);
+
+    /*** IWSDAsyncResult methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetCallback)(
+        IWSDAsyncResult* This,
+        IWSDAsyncCallback *pCallback,
+        IUnknown *pAsyncState);
+
+    HRESULT (STDMETHODCALLTYPE *SetWaitHandle)(
+        IWSDAsyncResult* This,
+        HANDLE hWaitHandle);
+
+    HRESULT (STDMETHODCALLTYPE *HasCompleted)(
+        IWSDAsyncResult* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetAsyncState)(
+        IWSDAsyncResult* This,
+        IUnknown **ppAsyncState);
+
+    HRESULT (STDMETHODCALLTYPE *Abort)(
+        IWSDAsyncResult* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetEvent)(
+        IWSDAsyncResult* This,
+        WSD_EVENT *pEvent);
+
+    HRESULT (STDMETHODCALLTYPE *GetEndpointProxy)(
+        IWSDAsyncResult* This,
+        IWSDEndpointProxy **ppEndpoint);
 
     END_INTERFACE
+} IWSDAsyncResultVtbl;
+interface IWSDAsyncResult {
+    CONST_VTBL IWSDAsyncResultVtbl* 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*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDAsyncCallback
-DECLARE_INTERFACE_(IWSDAsyncCallback,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-#endif
-    /* IWSDAsyncCallback methods */
-    STDMETHOD_(HRESULT,AsyncOperationComplete)(THIS_ IWSDAsyncResult *pAsyncResult,IUnknown *pAsyncState) PURE;
-
-    END_INTERFACE
-};
-#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*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDAsyncResult
-DECLARE_INTERFACE_(IWSDAsyncResult,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-#endif
-    /* IWSDAsyncResult methods */
-    STDMETHOD_(HRESULT,SetCallback)(THIS_ IWSDAsyncCallback *pCallback,IUnknown *pAsyncState) PURE;
-    STDMETHOD_(HRESULT,SetWaitHandle)(THIS_ HANDLE hWaitHandle) PURE;
-    STDMETHOD_(HRESULT,HasCompleted)(THIS) PURE;
-    STDMETHOD_(HRESULT,GetAsyncState)(THIS_ IUnknown **ppAsyncState) PURE;
-    STDMETHOD_(HRESULT,Abort)(THIS) PURE;
-    STDMETHOD_(HRESULT,GetEvent)(THIS_ WSD_EVENT *pEvent) PURE;
-    STDMETHOD_(HRESULT,GetEndpointProxy)(THIS_ IWSDEndpointProxy **ppEndpoint) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #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)
+/*** IWSDAsyncResult methods ***/
 #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)->lpVtbl->HasCompleted(This)
+#define IWSDAsyncResult_HasCompleted(This) (This)->lpVtbl->HasCompleted(This)
 #define IWSDAsyncResult_GetAsyncState(This,ppAsyncState) (This)->lpVtbl->GetAsyncState(This,ppAsyncState)
-#define IWSDAsyncResult_Abort() (This)->lpVtbl->Abort(This)
+#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*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDDeviceProxy
-DECLARE_INTERFACE_(IWSDDeviceProxy,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDAsyncResult_QueryInterface(IWSDAsyncResult* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDAsyncResult_AddRef(IWSDAsyncResult* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDAsyncResult_Release(IWSDAsyncResult* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDAsyncResult methods ***/
+static FORCEINLINE HRESULT IWSDAsyncResult_SetCallback(IWSDAsyncResult* This,IWSDAsyncCallback *pCallback,IUnknown *pAsyncState) {
+    return This->lpVtbl->SetCallback(This,pCallback,pAsyncState);
+}
+static FORCEINLINE HRESULT IWSDAsyncResult_SetWaitHandle(IWSDAsyncResult* This,HANDLE hWaitHandle) {
+    return This->lpVtbl->SetWaitHandle(This,hWaitHandle);
+}
+static FORCEINLINE HRESULT IWSDAsyncResult_HasCompleted(IWSDAsyncResult* This) {
+    return This->lpVtbl->HasCompleted(This);
+}
+static FORCEINLINE HRESULT IWSDAsyncResult_GetAsyncState(IWSDAsyncResult* This,IUnknown **ppAsyncState) {
+    return This->lpVtbl->GetAsyncState(This,ppAsyncState);
+}
+static FORCEINLINE HRESULT IWSDAsyncResult_Abort(IWSDAsyncResult* This) {
+    return This->lpVtbl->Abort(This);
+}
+static FORCEINLINE HRESULT IWSDAsyncResult_GetEvent(IWSDAsyncResult* This,WSD_EVENT *pEvent) {
+    return This->lpVtbl->GetEvent(This,pEvent);
+}
+static FORCEINLINE HRESULT IWSDAsyncResult_GetEndpointProxy(IWSDAsyncResult* This,IWSDEndpointProxy **ppEndpoint) {
+    return This->lpVtbl->GetEndpointProxy(This,ppEndpoint);
+}
 #endif
-    /* IWSDDeviceProxy methods */
-    STDMETHOD_(HRESULT,Init)(THIS_ LPCWSTR pszDeviceId,IWSDAddress *pDeviceAddress,LPCWSTR pszLocalId,IWSDDeviceProxy *pSponsor) PURE;
-    STDMETHOD_(HRESULT,BeginGetMetadata)(THIS_ IWSDAsyncResult **ppResult) PURE;
-    STDMETHOD_(HRESULT,EndGetMetadata)(THIS_ IWSDAsyncResult *pResult) PURE;
-    STDMETHOD_(HRESULT,GetHostMetadata)(THIS_ WSD_HOST_METADATA **ppHostMetadata) PURE;
-    STDMETHOD_(HRESULT,GetThisModelMetadata)(THIS_ WSD_THIS_MODEL_METADATA **ppManufacturerMetadata) PURE;
-    STDMETHOD_(HRESULT,GetThisDeviceMetadata)(THIS_ WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata) PURE;
-    STDMETHOD_(HRESULT,GetAllMetadata)(THIS_ WSD_METADATA_SECTION_LIST **ppMetadata) PURE;
-    STDMETHOD_(HRESULT,GetServiceProxyById)(THIS_ LPCWSTR pszServiceId,IWSDServiceProxy **ppServiceProxy) PURE;
-    STDMETHOD_(HRESULT,GetServiceProxyByType)(THIS_ const WSDXML_NAME *pType,IWSDServiceProxy **ppServiceProxy) PURE;
-    STDMETHOD_(HRESULT,GetEndpointProxy)(THIS_ IWSDEndpointProxy **ppProxy) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDAsyncResult_SetCallback_Proxy(
+    IWSDAsyncResult* This,
+    IWSDAsyncCallback *pCallback,
+    IUnknown *pAsyncState);
+void __RPC_STUB IWSDAsyncResult_SetCallback_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDAsyncResult_SetWaitHandle_Proxy(
+    IWSDAsyncResult* This,
+    HANDLE hWaitHandle);
+void __RPC_STUB IWSDAsyncResult_SetWaitHandle_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDAsyncResult_HasCompleted_Proxy(
+    IWSDAsyncResult* This);
+void __RPC_STUB IWSDAsyncResult_HasCompleted_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDAsyncResult_GetAsyncState_Proxy(
+    IWSDAsyncResult* This,
+    IUnknown **ppAsyncState);
+void __RPC_STUB IWSDAsyncResult_GetAsyncState_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDAsyncResult_Abort_Proxy(
+    IWSDAsyncResult* This);
+void __RPC_STUB IWSDAsyncResult_Abort_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDAsyncResult_GetEvent_Proxy(
+    IWSDAsyncResult* This,
+    WSD_EVENT *pEvent);
+void __RPC_STUB IWSDAsyncResult_GetEvent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDAsyncResult_GetEndpointProxy_Proxy(
+    IWSDAsyncResult* This,
+    IWSDEndpointProxy **ppEndpoint);
+void __RPC_STUB IWSDAsyncResult_GetEndpointProxy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDAsyncResult_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDAsyncCallback interface
+ */
+#ifndef __IWSDAsyncCallback_INTERFACE_DEFINED__
+#define __IWSDAsyncCallback_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDAsyncCallback, 0xa63e109d, 0xce72, 0x49e2, 0xba,0x98, 0xe8,0x45,0xf5,0xee,0x16,0x66);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a63e109d-ce72-49e2-ba98-e845f5ee1666")
+IWSDAsyncCallback : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE AsyncOperationComplete(
+        IWSDAsyncResult *pAsyncResult,
+        IUnknown *pAsyncState) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDAsyncCallback, 0xa63e109d, 0xce72, 0x49e2, 0xba,0x98, 0xe8,0x45,0xf5,0xee,0x16,0x66)
+#endif
+#else
+typedef struct IWSDAsyncCallbackVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDAsyncCallback* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDAsyncCallback* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDAsyncCallback* This);
+
+    /*** IWSDAsyncCallback methods ***/
+    HRESULT (STDMETHODCALLTYPE *AsyncOperationComplete)(
+        IWSDAsyncCallback* This,
+        IWSDAsyncResult *pAsyncResult,
+        IUnknown *pAsyncState);
 
     END_INTERFACE
+} IWSDAsyncCallbackVtbl;
+interface IWSDAsyncCallback {
+    CONST_VTBL IWSDAsyncCallbackVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#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)
+/*** IWSDAsyncCallback methods ***/
+#define IWSDAsyncCallback_AsyncOperationComplete(This,pAsyncResult,pAsyncState) (This)->lpVtbl->AsyncOperationComplete(This,pAsyncResult,pAsyncState)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDAsyncCallback_QueryInterface(IWSDAsyncCallback* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDAsyncCallback_AddRef(IWSDAsyncCallback* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDAsyncCallback_Release(IWSDAsyncCallback* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDAsyncCallback methods ***/
+static FORCEINLINE HRESULT IWSDAsyncCallback_AsyncOperationComplete(IWSDAsyncCallback* This,IWSDAsyncResult *pAsyncResult,IUnknown *pAsyncState) {
+    return This->lpVtbl->AsyncOperationComplete(This,pAsyncResult,pAsyncState);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDAsyncCallback_AsyncOperationComplete_Proxy(
+    IWSDAsyncCallback* This,
+    IWSDAsyncResult *pAsyncResult,
+    IUnknown *pAsyncState);
+void __RPC_STUB IWSDAsyncCallback_AsyncOperationComplete_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDAsyncCallback_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDMetadataExchange interface
+ */
+#ifndef __IWSDMetadataExchange_INTERFACE_DEFINED__
+#define __IWSDMetadataExchange_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDMetadataExchange, 0x06996d57, 0x1d67, 0x4928, 0x93,0x07, 0x3d,0x78,0x33,0xfd,0xb8,0x46);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("06996d57-1d67-4928-9307-3d7833fdb846")
+IWSDMetadataExchange : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetMetadata(
+        WSD_METADATA_SECTION_LIST **MetadataOut) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDMetadataExchange, 0x06996d57, 0x1d67, 0x4928, 0x93,0x07, 0x3d,0x78,0x33,0xfd,0xb8,0x46)
+#endif
+#else
+typedef struct IWSDMetadataExchangeVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDMetadataExchange* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDMetadataExchange* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDMetadataExchange* This);
+
+    /*** IWSDMetadataExchange methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMetadata)(
+        IWSDMetadataExchange* This,
+        WSD_METADATA_SECTION_LIST **MetadataOut);
+
+    END_INTERFACE
+} IWSDMetadataExchangeVtbl;
+interface IWSDMetadataExchange {
+    CONST_VTBL IWSDMetadataExchangeVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#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)
+/*** IWSDMetadataExchange methods ***/
+#define IWSDMetadataExchange_GetMetadata(This,MetadataOut) (This)->lpVtbl->GetMetadata(This,MetadataOut)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDMetadataExchange_QueryInterface(IWSDMetadataExchange* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDMetadataExchange_AddRef(IWSDMetadataExchange* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDMetadataExchange_Release(IWSDMetadataExchange* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDMetadataExchange methods ***/
+static FORCEINLINE HRESULT IWSDMetadataExchange_GetMetadata(IWSDMetadataExchange* This,WSD_METADATA_SECTION_LIST **MetadataOut) {
+    return This->lpVtbl->GetMetadata(This,MetadataOut);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDMetadataExchange_GetMetadata_Proxy(
+    IWSDMetadataExchange* This,
+    WSD_METADATA_SECTION_LIST **MetadataOut);
+void __RPC_STUB IWSDMetadataExchange_GetMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDMetadataExchange_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDEventingStatus interface
+ */
+#ifndef __IWSDEventingStatus_INTERFACE_DEFINED__
+#define __IWSDEventingStatus_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDEventingStatus, 0x49b17f52, 0x637a, 0x407a, 0xae,0x99, 0xfb,0xe8,0x2a,0x4d,0x38,0xc0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("49b17f52-637a-407a-ae99-fbe82a4d38c0")
+IWSDEventingStatus : public IUnknown
+{
+    virtual void STDMETHODCALLTYPE SubscriptionRenewed(
+        LPCWSTR pszSubscriptionAction) = 0;
+
+    virtual void STDMETHODCALLTYPE SubscriptionRenewalFailed(
+        LPCWSTR pszSubscriptionAction,
+        HRESULT hr) = 0;
+
+    virtual void STDMETHODCALLTYPE SubscriptionEnded(
+        LPCWSTR pszSubscriptionAction) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDEventingStatus, 0x49b17f52, 0x637a, 0x407a, 0xae,0x99, 0xfb,0xe8,0x2a,0x4d,0x38,0xc0)
+#endif
+#else
+typedef struct IWSDEventingStatusVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDEventingStatus* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDEventingStatus* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDEventingStatus* This);
+
+    /*** IWSDEventingStatus methods ***/
+    void (STDMETHODCALLTYPE *SubscriptionRenewed)(
+        IWSDEventingStatus* This,
+        LPCWSTR pszSubscriptionAction);
+
+    void (STDMETHODCALLTYPE *SubscriptionRenewalFailed)(
+        IWSDEventingStatus* This,
+        LPCWSTR pszSubscriptionAction,
+        HRESULT hr);
+
+    void (STDMETHODCALLTYPE *SubscriptionEnded)(
+        IWSDEventingStatus* This,
+        LPCWSTR pszSubscriptionAction);
+
+    END_INTERFACE
+} IWSDEventingStatusVtbl;
+interface IWSDEventingStatus {
+    CONST_VTBL IWSDEventingStatusVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#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)
+/*** IWSDEventingStatus methods ***/
+#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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDEventingStatus_QueryInterface(IWSDEventingStatus* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDEventingStatus_AddRef(IWSDEventingStatus* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDEventingStatus_Release(IWSDEventingStatus* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDEventingStatus methods ***/
+static FORCEINLINE void IWSDEventingStatus_SubscriptionRenewed(IWSDEventingStatus* This,LPCWSTR pszSubscriptionAction) {
+    This->lpVtbl->SubscriptionRenewed(This,pszSubscriptionAction);
+}
+static FORCEINLINE void IWSDEventingStatus_SubscriptionRenewalFailed(IWSDEventingStatus* This,LPCWSTR pszSubscriptionAction,HRESULT hr) {
+    This->lpVtbl->SubscriptionRenewalFailed(This,pszSubscriptionAction,hr);
+}
+static FORCEINLINE void IWSDEventingStatus_SubscriptionEnded(IWSDEventingStatus* This,LPCWSTR pszSubscriptionAction) {
+    This->lpVtbl->SubscriptionEnded(This,pszSubscriptionAction);
+}
+#endif
+#endif
+
+#endif
+
+void STDMETHODCALLTYPE IWSDEventingStatus_SubscriptionRenewed_Proxy(
+    IWSDEventingStatus* This,
+    LPCWSTR pszSubscriptionAction);
+void __RPC_STUB IWSDEventingStatus_SubscriptionRenewed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWSDEventingStatus_SubscriptionRenewalFailed_Proxy(
+    IWSDEventingStatus* This,
+    LPCWSTR pszSubscriptionAction,
+    HRESULT hr);
+void __RPC_STUB IWSDEventingStatus_SubscriptionRenewalFailed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+void STDMETHODCALLTYPE IWSDEventingStatus_SubscriptionEnded_Proxy(
+    IWSDEventingStatus* This,
+    LPCWSTR pszSubscriptionAction);
+void __RPC_STUB IWSDEventingStatus_SubscriptionEnded_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDEventingStatus_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDEndpointProxy interface
+ */
+#ifndef __IWSDEndpointProxy_INTERFACE_DEFINED__
+#define __IWSDEndpointProxy_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDEndpointProxy, 0x1860d430, 0xb24c, 0x4975, 0x9f,0x90, 0xdb,0xb3,0x9b,0xaa,0x24,0xec);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("1860d430-b24c-4975-9f90-dbb39baa24ec")
+IWSDEndpointProxy : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SendOneWayRequest(
+        const void *pBody,
+        const WSD_OPERATION *pOperation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendTwoWayRequest(
+        const void *pBody,
+        const WSD_OPERATION *pOperation,
+        const WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SendTwoWayRequestAsync(
+        const void *pBody,
+        const WSD_OPERATION *pOperation,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pCallback,
+        IWSDAsyncResult **pResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AbortAsyncOperation(
+        IWSDAsyncResult *pAsyncResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ProcessFault(
+        const WSD_SOAP_FAULT *pFault) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetErrorInfo(
+        LPCWSTR *ppszErrorInfo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFaultInfo(
+        WSD_SOAP_FAULT **ppFault) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDEndpointProxy, 0x1860d430, 0xb24c, 0x4975, 0x9f,0x90, 0xdb,0xb3,0x9b,0xaa,0x24,0xec)
+#endif
+#else
+typedef struct IWSDEndpointProxyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDEndpointProxy* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDEndpointProxy* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDEndpointProxy* This);
+
+    /*** IWSDEndpointProxy methods ***/
+    HRESULT (STDMETHODCALLTYPE *SendOneWayRequest)(
+        IWSDEndpointProxy* This,
+        const void *pBody,
+        const WSD_OPERATION *pOperation);
+
+    HRESULT (STDMETHODCALLTYPE *SendTwoWayRequest)(
+        IWSDEndpointProxy* This,
+        const void *pBody,
+        const WSD_OPERATION *pOperation,
+        const WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext);
+
+    HRESULT (STDMETHODCALLTYPE *SendTwoWayRequestAsync)(
+        IWSDEndpointProxy* This,
+        const void *pBody,
+        const WSD_OPERATION *pOperation,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pCallback,
+        IWSDAsyncResult **pResult);
+
+    HRESULT (STDMETHODCALLTYPE *AbortAsyncOperation)(
+        IWSDEndpointProxy* This,
+        IWSDAsyncResult *pAsyncResult);
+
+    HRESULT (STDMETHODCALLTYPE *ProcessFault)(
+        IWSDEndpointProxy* This,
+        const WSD_SOAP_FAULT *pFault);
+
+    HRESULT (STDMETHODCALLTYPE *GetErrorInfo)(
+        IWSDEndpointProxy* This,
+        LPCWSTR *ppszErrorInfo);
+
+    HRESULT (STDMETHODCALLTYPE *GetFaultInfo)(
+        IWSDEndpointProxy* This,
+        WSD_SOAP_FAULT **ppFault);
+
+    END_INTERFACE
+} IWSDEndpointProxyVtbl;
+interface IWSDEndpointProxy {
+    CONST_VTBL IWSDEndpointProxyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#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)
+/*** IWSDEndpointProxy methods ***/
+#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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDEndpointProxy_QueryInterface(IWSDEndpointProxy* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDEndpointProxy_AddRef(IWSDEndpointProxy* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDEndpointProxy_Release(IWSDEndpointProxy* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDEndpointProxy methods ***/
+static FORCEINLINE HRESULT IWSDEndpointProxy_SendOneWayRequest(IWSDEndpointProxy* This,const void *pBody,const WSD_OPERATION *pOperation) {
+    return This->lpVtbl->SendOneWayRequest(This,pBody,pOperation);
+}
+static FORCEINLINE HRESULT IWSDEndpointProxy_SendTwoWayRequest(IWSDEndpointProxy* This,const void *pBody,const WSD_OPERATION *pOperation,const WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext) {
+    return This->lpVtbl->SendTwoWayRequest(This,pBody,pOperation,pResponseContext);
+}
+static FORCEINLINE HRESULT IWSDEndpointProxy_SendTwoWayRequestAsync(IWSDEndpointProxy* This,const void *pBody,const WSD_OPERATION *pOperation,IUnknown *pAsyncState,IWSDAsyncCallback *pCallback,IWSDAsyncResult **pResult) {
+    return This->lpVtbl->SendTwoWayRequestAsync(This,pBody,pOperation,pAsyncState,pCallback,pResult);
+}
+static FORCEINLINE HRESULT IWSDEndpointProxy_AbortAsyncOperation(IWSDEndpointProxy* This,IWSDAsyncResult *pAsyncResult) {
+    return This->lpVtbl->AbortAsyncOperation(This,pAsyncResult);
+}
+static FORCEINLINE HRESULT IWSDEndpointProxy_ProcessFault(IWSDEndpointProxy* This,const WSD_SOAP_FAULT *pFault) {
+    return This->lpVtbl->ProcessFault(This,pFault);
+}
+static FORCEINLINE HRESULT IWSDEndpointProxy_GetErrorInfo(IWSDEndpointProxy* This,LPCWSTR *ppszErrorInfo) {
+    return This->lpVtbl->GetErrorInfo(This,ppszErrorInfo);
+}
+static FORCEINLINE HRESULT IWSDEndpointProxy_GetFaultInfo(IWSDEndpointProxy* This,WSD_SOAP_FAULT **ppFault) {
+    return This->lpVtbl->GetFaultInfo(This,ppFault);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDEndpointProxy_SendOneWayRequest_Proxy(
+    IWSDEndpointProxy* This,
+    const void *pBody,
+    const WSD_OPERATION *pOperation);
+void __RPC_STUB IWSDEndpointProxy_SendOneWayRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDEndpointProxy_SendTwoWayRequest_Proxy(
+    IWSDEndpointProxy* This,
+    const void *pBody,
+    const WSD_OPERATION *pOperation,
+    const WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext);
+void __RPC_STUB IWSDEndpointProxy_SendTwoWayRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDEndpointProxy_SendTwoWayRequestAsync_Proxy(
+    IWSDEndpointProxy* This,
+    const void *pBody,
+    const WSD_OPERATION *pOperation,
+    IUnknown *pAsyncState,
+    IWSDAsyncCallback *pCallback,
+    IWSDAsyncResult **pResult);
+void __RPC_STUB IWSDEndpointProxy_SendTwoWayRequestAsync_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDEndpointProxy_AbortAsyncOperation_Proxy(
+    IWSDEndpointProxy* This,
+    IWSDAsyncResult *pAsyncResult);
+void __RPC_STUB IWSDEndpointProxy_AbortAsyncOperation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDEndpointProxy_ProcessFault_Proxy(
+    IWSDEndpointProxy* This,
+    const WSD_SOAP_FAULT *pFault);
+void __RPC_STUB IWSDEndpointProxy_ProcessFault_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDEndpointProxy_GetErrorInfo_Proxy(
+    IWSDEndpointProxy* This,
+    LPCWSTR *ppszErrorInfo);
+void __RPC_STUB IWSDEndpointProxy_GetErrorInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDEndpointProxy_GetFaultInfo_Proxy(
+    IWSDEndpointProxy* This,
+    WSD_SOAP_FAULT **ppFault);
+void __RPC_STUB IWSDEndpointProxy_GetFaultInfo_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDEndpointProxy_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDDeviceProxy interface
+ */
+#ifndef __IWSDDeviceProxy_INTERFACE_DEFINED__
+#define __IWSDDeviceProxy_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDDeviceProxy, 0xeee0c031, 0xc578, 0x4c0e, 0x9a,0x3b, 0x97,0x3c,0x35,0xf4,0x09,0xdb);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("eee0c031-c578-4c0e-9a3b-973c35f409db")
+IWSDDeviceProxy : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Init(
+        LPCWSTR pszDeviceId,
+        IWSDAddress *pDeviceAddress,
+        LPCWSTR pszLocalId,
+        IWSDXMLContext *pContext,
+        IWSDDeviceProxy *pSponsor) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginGetMetadata(
+        IWSDAsyncResult **ppResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndGetMetadata(
+        IWSDAsyncResult *pResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetHostMetadata(
+        WSD_HOST_METADATA **ppHostMetadata) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetThisModelMetadata(
+        WSD_THIS_MODEL_METADATA **ppManufacturerMetadata) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetThisDeviceMetadata(
+        WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAllMetadata(
+        WSD_METADATA_SECTION_LIST **ppMetadata) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetServiceProxyById(
+        LPCWSTR pszServiceId,
+        IWSDServiceProxy **ppServiceProxy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetServiceProxyByType(
+        const WSDXML_NAME *pType,
+        IWSDServiceProxy **ppServiceProxy) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEndpointProxy(
+        IWSDEndpointProxy **ppProxy) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDDeviceProxy, 0xeee0c031, 0xc578, 0x4c0e, 0x9a,0x3b, 0x97,0x3c,0x35,0xf4,0x09,0xdb)
+#endif
+#else
+typedef struct IWSDDeviceProxyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDDeviceProxy* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDDeviceProxy* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDDeviceProxy* This);
+
+    /*** IWSDDeviceProxy methods ***/
+    HRESULT (STDMETHODCALLTYPE *Init)(
+        IWSDDeviceProxy* This,
+        LPCWSTR pszDeviceId,
+        IWSDAddress *pDeviceAddress,
+        LPCWSTR pszLocalId,
+        IWSDXMLContext *pContext,
+        IWSDDeviceProxy *pSponsor);
+
+    HRESULT (STDMETHODCALLTYPE *BeginGetMetadata)(
+        IWSDDeviceProxy* This,
+        IWSDAsyncResult **ppResult);
+
+    HRESULT (STDMETHODCALLTYPE *EndGetMetadata)(
+        IWSDDeviceProxy* This,
+        IWSDAsyncResult *pResult);
+
+    HRESULT (STDMETHODCALLTYPE *GetHostMetadata)(
+        IWSDDeviceProxy* This,
+        WSD_HOST_METADATA **ppHostMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *GetThisModelMetadata)(
+        IWSDDeviceProxy* This,
+        WSD_THIS_MODEL_METADATA **ppManufacturerMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *GetThisDeviceMetadata)(
+        IWSDDeviceProxy* This,
+        WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *GetAllMetadata)(
+        IWSDDeviceProxy* This,
+        WSD_METADATA_SECTION_LIST **ppMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *GetServiceProxyById)(
+        IWSDDeviceProxy* This,
+        LPCWSTR pszServiceId,
+        IWSDServiceProxy **ppServiceProxy);
+
+    HRESULT (STDMETHODCALLTYPE *GetServiceProxyByType)(
+        IWSDDeviceProxy* This,
+        const WSDXML_NAME *pType,
+        IWSDServiceProxy **ppServiceProxy);
+
+    HRESULT (STDMETHODCALLTYPE *GetEndpointProxy)(
+        IWSDDeviceProxy* This,
+        IWSDEndpointProxy **ppProxy);
+
+    END_INTERFACE
+} IWSDDeviceProxyVtbl;
+interface IWSDDeviceProxy {
+    CONST_VTBL IWSDDeviceProxyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #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,pSponsor) (This)->lpVtbl->Init(This,pszDeviceId,pDeviceAddress,pszLocalId,pSponsor)
+/*** IWSDDeviceProxy methods ***/
+#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)
@@ -132,58 +971,251 @@
 #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*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDMetadataExchange
-DECLARE_INTERFACE_(IWSDMetadataExchange,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDDeviceProxy_QueryInterface(IWSDDeviceProxy* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDDeviceProxy_AddRef(IWSDDeviceProxy* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDDeviceProxy_Release(IWSDDeviceProxy* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDDeviceProxy methods ***/
+static FORCEINLINE HRESULT IWSDDeviceProxy_Init(IWSDDeviceProxy* This,LPCWSTR pszDeviceId,IWSDAddress *pDeviceAddress,LPCWSTR pszLocalId,IWSDXMLContext *pContext,IWSDDeviceProxy *pSponsor) {
+    return This->lpVtbl->Init(This,pszDeviceId,pDeviceAddress,pszLocalId,pContext,pSponsor);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_BeginGetMetadata(IWSDDeviceProxy* This,IWSDAsyncResult **ppResult) {
+    return This->lpVtbl->BeginGetMetadata(This,ppResult);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_EndGetMetadata(IWSDDeviceProxy* This,IWSDAsyncResult *pResult) {
+    return This->lpVtbl->EndGetMetadata(This,pResult);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_GetHostMetadata(IWSDDeviceProxy* This,WSD_HOST_METADATA **ppHostMetadata) {
+    return This->lpVtbl->GetHostMetadata(This,ppHostMetadata);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_GetThisModelMetadata(IWSDDeviceProxy* This,WSD_THIS_MODEL_METADATA **ppManufacturerMetadata) {
+    return This->lpVtbl->GetThisModelMetadata(This,ppManufacturerMetadata);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_GetThisDeviceMetadata(IWSDDeviceProxy* This,WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata) {
+    return This->lpVtbl->GetThisDeviceMetadata(This,ppThisDeviceMetadata);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_GetAllMetadata(IWSDDeviceProxy* This,WSD_METADATA_SECTION_LIST **ppMetadata) {
+    return This->lpVtbl->GetAllMetadata(This,ppMetadata);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_GetServiceProxyById(IWSDDeviceProxy* This,LPCWSTR pszServiceId,IWSDServiceProxy **ppServiceProxy) {
+    return This->lpVtbl->GetServiceProxyById(This,pszServiceId,ppServiceProxy);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_GetServiceProxyByType(IWSDDeviceProxy* This,const WSDXML_NAME *pType,IWSDServiceProxy **ppServiceProxy) {
+    return This->lpVtbl->GetServiceProxyByType(This,pType,ppServiceProxy);
+}
+static FORCEINLINE HRESULT IWSDDeviceProxy_GetEndpointProxy(IWSDDeviceProxy* This,IWSDEndpointProxy **ppProxy) {
+    return This->lpVtbl->GetEndpointProxy(This,ppProxy);
+}
 #endif
-    /* IWSDMetadataExchange methods */
-    STDMETHOD_(HRESULT,GetMetadata)(THIS_ WSD_METADATA_SECTION_LIST **MetadataOut) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_Init_Proxy(
+    IWSDDeviceProxy* This,
+    LPCWSTR pszDeviceId,
+    IWSDAddress *pDeviceAddress,
+    LPCWSTR pszLocalId,
+    IWSDXMLContext *pContext,
+    IWSDDeviceProxy *pSponsor);
+void __RPC_STUB IWSDDeviceProxy_Init_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_BeginGetMetadata_Proxy(
+    IWSDDeviceProxy* This,
+    IWSDAsyncResult **ppResult);
+void __RPC_STUB IWSDDeviceProxy_BeginGetMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_EndGetMetadata_Proxy(
+    IWSDDeviceProxy* This,
+    IWSDAsyncResult *pResult);
+void __RPC_STUB IWSDDeviceProxy_EndGetMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_GetHostMetadata_Proxy(
+    IWSDDeviceProxy* This,
+    WSD_HOST_METADATA **ppHostMetadata);
+void __RPC_STUB IWSDDeviceProxy_GetHostMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_GetThisModelMetadata_Proxy(
+    IWSDDeviceProxy* This,
+    WSD_THIS_MODEL_METADATA **ppManufacturerMetadata);
+void __RPC_STUB IWSDDeviceProxy_GetThisModelMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_GetThisDeviceMetadata_Proxy(
+    IWSDDeviceProxy* This,
+    WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata);
+void __RPC_STUB IWSDDeviceProxy_GetThisDeviceMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_GetAllMetadata_Proxy(
+    IWSDDeviceProxy* This,
+    WSD_METADATA_SECTION_LIST **ppMetadata);
+void __RPC_STUB IWSDDeviceProxy_GetAllMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_GetServiceProxyById_Proxy(
+    IWSDDeviceProxy* This,
+    LPCWSTR pszServiceId,
+    IWSDServiceProxy **ppServiceProxy);
+void __RPC_STUB IWSDDeviceProxy_GetServiceProxyById_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_GetServiceProxyByType_Proxy(
+    IWSDDeviceProxy* This,
+    const WSDXML_NAME *pType,
+    IWSDServiceProxy **ppServiceProxy);
+void __RPC_STUB IWSDDeviceProxy_GetServiceProxyByType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceProxy_GetEndpointProxy_Proxy(
+    IWSDDeviceProxy* This,
+    IWSDEndpointProxy **ppProxy);
+void __RPC_STUB IWSDDeviceProxy_GetEndpointProxy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDDeviceProxy_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDServiceProxy interface
+ */
+#ifndef __IWSDServiceProxy_INTERFACE_DEFINED__
+#define __IWSDServiceProxy_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDServiceProxy, 0xd4c7fb9c, 0x03ab, 0x4175, 0x9d,0x67, 0x09,0x4f,0xaf,0xeb,0xf4,0x87);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d4c7fb9c-03ab-4175-9d67-094fafebf487")
+IWSDServiceProxy : public IWSDMetadataExchange
+{
+    virtual HRESULT STDMETHODCALLTYPE BeginGetMetadata(
+        IWSDAsyncResult **ppResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndGetMetadata(
+        IWSDAsyncResult *pResult,
+        WSD_METADATA_SECTION_LIST **ppMetadata) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetServiceMetadata(
+        WSD_SERVICE_METADATA **ppServiceMetadata) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SubscribeToOperation(
+        const WSD_OPERATION *pOperation,
+        IUnknown *pUnknown,
+        const WSDXML_ELEMENT *pAny,
+        WSDXML_ELEMENT **ppAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnsubscribeToOperation(
+        const WSD_OPERATION *pOperation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetEventingStatusCallback(
+        IWSDEventingStatus *pStatus) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEndpointProxy(
+        IWSDEndpointProxy **ppProxy) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDServiceProxy, 0xd4c7fb9c, 0x03ab, 0x4175, 0x9d,0x67, 0x09,0x4f,0xaf,0xeb,0xf4,0x87)
+#endif
+#else
+typedef struct IWSDServiceProxyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDServiceProxy* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDServiceProxy* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDServiceProxy* This);
+
+    /*** IWSDMetadataExchange methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMetadata)(
+        IWSDServiceProxy* This,
+        WSD_METADATA_SECTION_LIST **MetadataOut);
+
+    /*** IWSDServiceProxy methods ***/
+    HRESULT (STDMETHODCALLTYPE *BeginGetMetadata)(
+        IWSDServiceProxy* This,
+        IWSDAsyncResult **ppResult);
+
+    HRESULT (STDMETHODCALLTYPE *EndGetMetadata)(
+        IWSDServiceProxy* This,
+        IWSDAsyncResult *pResult,
+        WSD_METADATA_SECTION_LIST **ppMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *GetServiceMetadata)(
+        IWSDServiceProxy* This,
+        WSD_SERVICE_METADATA **ppServiceMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *SubscribeToOperation)(
+        IWSDServiceProxy* This,
+        const WSD_OPERATION *pOperation,
+        IUnknown *pUnknown,
+        const WSDXML_ELEMENT *pAny,
+        WSDXML_ELEMENT **ppAny);
+
+    HRESULT (STDMETHODCALLTYPE *UnsubscribeToOperation)(
+        IWSDServiceProxy* This,
+        const WSD_OPERATION *pOperation);
+
+    HRESULT (STDMETHODCALLTYPE *SetEventingStatusCallback)(
+        IWSDServiceProxy* This,
+        IWSDEventingStatus *pStatus);
+
+    HRESULT (STDMETHODCALLTYPE *GetEndpointProxy)(
+        IWSDServiceProxy* This,
+        IWSDEndpointProxy **ppProxy);
 
     END_INTERFACE
+} IWSDServiceProxyVtbl;
+interface IWSDServiceProxy {
+    CONST_VTBL IWSDServiceProxyVtbl* 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*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDServiceProxy
-DECLARE_INTERFACE_(IWSDServiceProxy,IWSDMetadataExchange) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-
-    /* IWSDMetadataExchange methods */
-    STDMETHOD_(HRESULT,GetMetadata)(THIS_ WSD_METADATA_SECTION_LIST **MetadataOut) PURE;
-#endif
-    /* IWSDServiceProxy methods */
-    STDMETHOD_(HRESULT,BeginGetMetadata)(THIS_ IWSDAsyncResult **ppResult) PURE;
-    STDMETHOD_(HRESULT,EndGetMetadata)(THIS_ IWSDAsyncResult *pResult,WSD_METADATA_SECTION_LIST **ppMetadata) PURE;
-    STDMETHOD_(HRESULT,GetServiceMetadata)(THIS_ WSD_SERVICE_METADATA **ppServiceMetadata) PURE;
-    STDMETHOD_(HRESULT,SubscribeToOperation)(THIS_ const WSD_OPERATION *pOperation,IUnknown *pUnknown,const WSDXML_ELEMENT *pAny,WSDXML_ELEMENT **ppAny) PURE;
-    STDMETHOD_(HRESULT,UnsubscribeToOperation)(THIS_ const WSD_OPERATION *pOperation) PURE;
-    STDMETHOD_(HRESULT,SetEventingStatusCallback)(THIS_ IWSDEventingStatus *pStatus) PURE;
-    STDMETHOD_(HRESULT,GetEndpointProxy)(THIS_ IWSDEndpointProxy **ppProxy) PURE;
-
-    END_INTERFACE
-};
-#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #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)
+/*** IWSDMetadataExchange methods ***/
+#define IWSDServiceProxy_GetMetadata(This,MetadataOut) (This)->lpVtbl->GetMetadata(This,MetadataOut)
+/*** IWSDServiceProxy methods ***/
 #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)
@@ -191,51 +1223,655 @@
 #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*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDEndpointProxy
-DECLARE_INTERFACE_(IWSDEndpointProxy,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDServiceProxy_QueryInterface(IWSDServiceProxy* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDServiceProxy_AddRef(IWSDServiceProxy* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDServiceProxy_Release(IWSDServiceProxy* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDMetadataExchange methods ***/
+static FORCEINLINE HRESULT IWSDServiceProxy_GetMetadata(IWSDServiceProxy* This,WSD_METADATA_SECTION_LIST **MetadataOut) {
+    return This->lpVtbl->GetMetadata(This,MetadataOut);
+}
+/*** IWSDServiceProxy methods ***/
+static FORCEINLINE HRESULT IWSDServiceProxy_BeginGetMetadata(IWSDServiceProxy* This,IWSDAsyncResult **ppResult) {
+    return This->lpVtbl->BeginGetMetadata(This,ppResult);
+}
+static FORCEINLINE HRESULT IWSDServiceProxy_EndGetMetadata(IWSDServiceProxy* This,IWSDAsyncResult *pResult,WSD_METADATA_SECTION_LIST **ppMetadata) {
+    return This->lpVtbl->EndGetMetadata(This,pResult,ppMetadata);
+}
+static FORCEINLINE HRESULT IWSDServiceProxy_GetServiceMetadata(IWSDServiceProxy* This,WSD_SERVICE_METADATA **ppServiceMetadata) {
+    return This->lpVtbl->GetServiceMetadata(This,ppServiceMetadata);
+}
+static FORCEINLINE HRESULT IWSDServiceProxy_SubscribeToOperation(IWSDServiceProxy* This,const WSD_OPERATION *pOperation,IUnknown *pUnknown,const WSDXML_ELEMENT *pAny,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->SubscribeToOperation(This,pOperation,pUnknown,pAny,ppAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxy_UnsubscribeToOperation(IWSDServiceProxy* This,const WSD_OPERATION *pOperation) {
+    return This->lpVtbl->UnsubscribeToOperation(This,pOperation);
+}
+static FORCEINLINE HRESULT IWSDServiceProxy_SetEventingStatusCallback(IWSDServiceProxy* This,IWSDEventingStatus *pStatus) {
+    return This->lpVtbl->SetEventingStatusCallback(This,pStatus);
+}
+static FORCEINLINE HRESULT IWSDServiceProxy_GetEndpointProxy(IWSDServiceProxy* This,IWSDEndpointProxy **ppProxy) {
+    return This->lpVtbl->GetEndpointProxy(This,ppProxy);
+}
 #endif
-    /* IWSDEndpointProxy methods */
-    STDMETHOD_(HRESULT,SendOneWayRequest)(THIS_ const void *pBody,const WSD_OPERATION *pOperation) PURE;
-    STDMETHOD_(HRESULT,SendTwoWayRequest)(THIS_ const void *pBody,const WSD_OPERATION *pOperation,WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext) PURE;
-    STDMETHOD_(HRESULT,SendTwoWayRequestAsync)(THIS_ const void *pBody,const WSD_OPERATION *pOperation,IUnknown *pAsyncState,IWSDAsyncCallback *pCallback,IWSDAsyncResult **pResult) PURE;
-    STDMETHOD_(HRESULT,AbortAsyncOperation)(THIS_ IWSDAsyncResult *pAsyncResult) PURE;
-    STDMETHOD_(HRESULT,ProcessFault)(THIS_ const WSD_SOAP_FAULT *pFault) PURE;
-    STDMETHOD_(HRESULT,GetErrorInfo)(THIS_ const LPCWSTR *ppszErrorInfo) PURE;
-    STDMETHOD_(HRESULT,GetFaultInfo)(THIS_ WSD_SOAP_FAULT **ppFault) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDServiceProxy_BeginGetMetadata_Proxy(
+    IWSDServiceProxy* This,
+    IWSDAsyncResult **ppResult);
+void __RPC_STUB IWSDServiceProxy_BeginGetMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxy_EndGetMetadata_Proxy(
+    IWSDServiceProxy* This,
+    IWSDAsyncResult *pResult,
+    WSD_METADATA_SECTION_LIST **ppMetadata);
+void __RPC_STUB IWSDServiceProxy_EndGetMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxy_GetServiceMetadata_Proxy(
+    IWSDServiceProxy* This,
+    WSD_SERVICE_METADATA **ppServiceMetadata);
+void __RPC_STUB IWSDServiceProxy_GetServiceMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxy_SubscribeToOperation_Proxy(
+    IWSDServiceProxy* This,
+    const WSD_OPERATION *pOperation,
+    IUnknown *pUnknown,
+    const WSDXML_ELEMENT *pAny,
+    WSDXML_ELEMENT **ppAny);
+void __RPC_STUB IWSDServiceProxy_SubscribeToOperation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxy_UnsubscribeToOperation_Proxy(
+    IWSDServiceProxy* This,
+    const WSD_OPERATION *pOperation);
+void __RPC_STUB IWSDServiceProxy_UnsubscribeToOperation_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxy_SetEventingStatusCallback_Proxy(
+    IWSDServiceProxy* This,
+    IWSDEventingStatus *pStatus);
+void __RPC_STUB IWSDServiceProxy_SetEventingStatusCallback_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxy_GetEndpointProxy_Proxy(
+    IWSDServiceProxy* This,
+    IWSDEndpointProxy **ppProxy);
+void __RPC_STUB IWSDServiceProxy_GetEndpointProxy_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDServiceProxy_INTERFACE_DEFINED__ */
+
+#if WINVER >= 0x601
+/*****************************************************************************
+ * IWSDServiceProxyEventing interface
+ */
+#ifndef __IWSDServiceProxyEventing_INTERFACE_DEFINED__
+#define __IWSDServiceProxyEventing_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDServiceProxyEventing, 0xf9279d6d, 0x1012, 0x4a94, 0xb8,0xcc, 0xfd,0x35,0xd2,0x20,0x2b,0xfe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f9279d6d-1012-4a94-b8cc-fd35d2202bfe")
+IWSDServiceProxyEventing : public IWSDServiceProxy
+{
+    virtual HRESULT STDMETHODCALLTYPE SubscribeToMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IUnknown *pUnknown,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginSubscribeToMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IUnknown *pUnknown,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndSubscribeToMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnsubscribeToMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginUnsubscribeToMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndUnsubscribeToMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RenewMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginRenewMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndRenewMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetStatusForMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginGetStatusForMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EndGetStatusForMultipleOperations(
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDServiceProxyEventing, 0xf9279d6d, 0x1012, 0x4a94, 0xb8,0xcc, 0xfd,0x35,0xd2,0x20,0x2b,0xfe)
+#endif
+#else
+typedef struct IWSDServiceProxyEventingVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDServiceProxyEventing* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDServiceProxyEventing* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDServiceProxyEventing* This);
+
+    /*** IWSDMetadataExchange methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetMetadata)(
+        IWSDServiceProxyEventing* This,
+        WSD_METADATA_SECTION_LIST **MetadataOut);
+
+    /*** IWSDServiceProxy methods ***/
+    HRESULT (STDMETHODCALLTYPE *BeginGetMetadata)(
+        IWSDServiceProxyEventing* This,
+        IWSDAsyncResult **ppResult);
+
+    HRESULT (STDMETHODCALLTYPE *EndGetMetadata)(
+        IWSDServiceProxyEventing* This,
+        IWSDAsyncResult *pResult,
+        WSD_METADATA_SECTION_LIST **ppMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *GetServiceMetadata)(
+        IWSDServiceProxyEventing* This,
+        WSD_SERVICE_METADATA **ppServiceMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *SubscribeToOperation)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperation,
+        IUnknown *pUnknown,
+        const WSDXML_ELEMENT *pAny,
+        WSDXML_ELEMENT **ppAny);
+
+    HRESULT (STDMETHODCALLTYPE *UnsubscribeToOperation)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperation);
+
+    HRESULT (STDMETHODCALLTYPE *SetEventingStatusCallback)(
+        IWSDServiceProxyEventing* This,
+        IWSDEventingStatus *pStatus);
+
+    HRESULT (STDMETHODCALLTYPE *GetEndpointProxy)(
+        IWSDServiceProxyEventing* This,
+        IWSDEndpointProxy **ppProxy);
+
+    /*** IWSDServiceProxyEventing methods ***/
+    HRESULT (STDMETHODCALLTYPE *SubscribeToMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IUnknown *pUnknown,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny);
+
+    HRESULT (STDMETHODCALLTYPE *BeginSubscribeToMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IUnknown *pUnknown,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult);
+
+    HRESULT (STDMETHODCALLTYPE *EndSubscribeToMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny);
+
+    HRESULT (STDMETHODCALLTYPE *UnsubscribeToMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny);
+
+    HRESULT (STDMETHODCALLTYPE *BeginUnsubscribeToMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult);
+
+    HRESULT (STDMETHODCALLTYPE *EndUnsubscribeToMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult);
+
+    HRESULT (STDMETHODCALLTYPE *RenewMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny);
+
+    HRESULT (STDMETHODCALLTYPE *BeginRenewMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSD_EVENTING_EXPIRES *pExpires,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult);
+
+    HRESULT (STDMETHODCALLTYPE *EndRenewMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny);
+
+    HRESULT (STDMETHODCALLTYPE *GetStatusForMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny);
+
+    HRESULT (STDMETHODCALLTYPE *BeginGetStatusForMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pAsyncState,
+        IWSDAsyncCallback *pAsyncCallback,
+        IWSDAsyncResult **ppResult);
+
+    HRESULT (STDMETHODCALLTYPE *EndGetStatusForMultipleOperations)(
+        IWSDServiceProxyEventing* This,
+        const WSD_OPERATION *pOperations,
+        DWORD dwOperationCount,
+        IWSDAsyncResult *pResult,
+        WSD_EVENTING_EXPIRES **ppExpires,
+        WSDXML_ELEMENT **ppAny);
 
     END_INTERFACE
+} IWSDServiceProxyEventingVtbl;
+interface IWSDServiceProxyEventing {
+    CONST_VTBL IWSDServiceProxyEventingVtbl* 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*/
 
-#ifdef __cplusplus
-extern "C" {
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#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)
+/*** IWSDMetadataExchange methods ***/
+#define IWSDServiceProxyEventing_GetMetadata(This,MetadataOut) (This)->lpVtbl->GetMetadata(This,MetadataOut)
+/*** IWSDServiceProxy methods ***/
+#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)
+/*** IWSDServiceProxyEventing methods ***/
+#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)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_QueryInterface(IWSDServiceProxyEventing* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDServiceProxyEventing_AddRef(IWSDServiceProxyEventing* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDServiceProxyEventing_Release(IWSDServiceProxyEventing* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDMetadataExchange methods ***/
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_GetMetadata(IWSDServiceProxyEventing* This,WSD_METADATA_SECTION_LIST **MetadataOut) {
+    return This->lpVtbl->GetMetadata(This,MetadataOut);
+}
+/*** IWSDServiceProxy methods ***/
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_BeginGetMetadata(IWSDServiceProxyEventing* This,IWSDAsyncResult **ppResult) {
+    return This->lpVtbl->BeginGetMetadata(This,ppResult);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_EndGetMetadata(IWSDServiceProxyEventing* This,IWSDAsyncResult *pResult,WSD_METADATA_SECTION_LIST **ppMetadata) {
+    return This->lpVtbl->EndGetMetadata(This,pResult,ppMetadata);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_GetServiceMetadata(IWSDServiceProxyEventing* This,WSD_SERVICE_METADATA **ppServiceMetadata) {
+    return This->lpVtbl->GetServiceMetadata(This,ppServiceMetadata);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_SubscribeToOperation(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperation,IUnknown *pUnknown,const WSDXML_ELEMENT *pAny,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->SubscribeToOperation(This,pOperation,pUnknown,pAny,ppAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_UnsubscribeToOperation(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperation) {
+    return This->lpVtbl->UnsubscribeToOperation(This,pOperation);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_SetEventingStatusCallback(IWSDServiceProxyEventing* This,IWSDEventingStatus *pStatus) {
+    return This->lpVtbl->SetEventingStatusCallback(This,pStatus);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_GetEndpointProxy(IWSDServiceProxyEventing* This,IWSDEndpointProxy **ppProxy) {
+    return This->lpVtbl->GetEndpointProxy(This,ppProxy);
+}
+/*** IWSDServiceProxyEventing methods ***/
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_SubscribeToMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,IUnknown *pUnknown,const WSD_EVENTING_EXPIRES *pExpires,const WSDXML_ELEMENT *pAny,WSD_EVENTING_EXPIRES **ppExpires,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->SubscribeToMultipleOperations(This,pOperations,dwOperationCount,pUnknown,pExpires,pAny,ppExpires,ppAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_BeginSubscribeToMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,IUnknown *pUnknown,const WSD_EVENTING_EXPIRES *pExpires,const WSDXML_ELEMENT *pAny,IUnknown *pAsyncState,IWSDAsyncCallback *pAsyncCallback,IWSDAsyncResult **ppResult) {
+    return This->lpVtbl->BeginSubscribeToMultipleOperations(This,pOperations,dwOperationCount,pUnknown,pExpires,pAny,pAsyncState,pAsyncCallback,ppResult);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_EndSubscribeToMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,IWSDAsyncResult *pResult,WSD_EVENTING_EXPIRES **ppExpires,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->EndSubscribeToMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_UnsubscribeToMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,const WSDXML_ELEMENT *pAny) {
+    return This->lpVtbl->UnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_BeginUnsubscribeToMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,const WSDXML_ELEMENT *pAny,IUnknown *pAsyncState,IWSDAsyncCallback *pAsyncCallback,IWSDAsyncResult **ppResult) {
+    return This->lpVtbl->BeginUnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pAny,pAsyncState,pAsyncCallback,ppResult);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_EndUnsubscribeToMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,IWSDAsyncResult *pResult) {
+    return This->lpVtbl->EndUnsubscribeToMultipleOperations(This,pOperations,dwOperationCount,pResult);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_RenewMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,const WSD_EVENTING_EXPIRES *pExpires,const WSDXML_ELEMENT *pAny,WSD_EVENTING_EXPIRES **ppExpires,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->RenewMultipleOperations(This,pOperations,dwOperationCount,pExpires,pAny,ppExpires,ppAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_BeginRenewMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,const WSD_EVENTING_EXPIRES *pExpires,const WSDXML_ELEMENT *pAny,IUnknown *pAsyncState,IWSDAsyncCallback *pAsyncCallback,IWSDAsyncResult **ppResult) {
+    return This->lpVtbl->BeginRenewMultipleOperations(This,pOperations,dwOperationCount,pExpires,pAny,pAsyncState,pAsyncCallback,ppResult);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_EndRenewMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,IWSDAsyncResult *pResult,WSD_EVENTING_EXPIRES **ppExpires,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->EndRenewMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_GetStatusForMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,const WSDXML_ELEMENT *pAny,WSD_EVENTING_EXPIRES **ppExpires,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->GetStatusForMultipleOperations(This,pOperations,dwOperationCount,pAny,ppExpires,ppAny);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_BeginGetStatusForMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,const WSDXML_ELEMENT *pAny,IUnknown *pAsyncState,IWSDAsyncCallback *pAsyncCallback,IWSDAsyncResult **ppResult) {
+    return This->lpVtbl->BeginGetStatusForMultipleOperations(This,pOperations,dwOperationCount,pAny,pAsyncState,pAsyncCallback,ppResult);
+}
+static FORCEINLINE HRESULT IWSDServiceProxyEventing_EndGetStatusForMultipleOperations(IWSDServiceProxyEventing* This,const WSD_OPERATION *pOperations,DWORD dwOperationCount,IWSDAsyncResult *pResult,WSD_EVENTING_EXPIRES **ppExpires,WSDXML_ELEMENT **ppAny) {
+    return This->lpVtbl->EndGetStatusForMultipleOperations(This,pOperations,dwOperationCount,pResult,ppExpires,ppAny);
+}
+#endif
 #endif
 
-HRESULT WINAPI WSDCreateDeviceProxy(const WCHAR *pszDeviceId, const WCHAR *pszLocalId, IWSDXMLContext *pContext,IWSDDeviceProxy **ppDeviceProxy);
-HRESULT WINAPI WSDCreateDeviceProxyAdvanced(const WCHAR *pszDeviceId, IWSDAddress *pDeviceAddress, const WCHAR *pszLocalId, IWSDXMLContext *pContext, IWSDDeviceProxy **ppDeviceProxy);
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_SubscribeToMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    IUnknown *pUnknown,
+    const WSD_EVENTING_EXPIRES *pExpires,
+    const WSDXML_ELEMENT *pAny,
+    WSD_EVENTING_EXPIRES **ppExpires,
+    WSDXML_ELEMENT **ppAny);
+void __RPC_STUB IWSDServiceProxyEventing_SubscribeToMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_BeginSubscribeToMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    IUnknown *pUnknown,
+    const WSD_EVENTING_EXPIRES *pExpires,
+    const WSDXML_ELEMENT *pAny,
+    IUnknown *pAsyncState,
+    IWSDAsyncCallback *pAsyncCallback,
+    IWSDAsyncResult **ppResult);
+void __RPC_STUB IWSDServiceProxyEventing_BeginSubscribeToMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_EndSubscribeToMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    IWSDAsyncResult *pResult,
+    WSD_EVENTING_EXPIRES **ppExpires,
+    WSDXML_ELEMENT **ppAny);
+void __RPC_STUB IWSDServiceProxyEventing_EndSubscribeToMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_UnsubscribeToMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    const WSDXML_ELEMENT *pAny);
+void __RPC_STUB IWSDServiceProxyEventing_UnsubscribeToMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_BeginUnsubscribeToMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    const WSDXML_ELEMENT *pAny,
+    IUnknown *pAsyncState,
+    IWSDAsyncCallback *pAsyncCallback,
+    IWSDAsyncResult **ppResult);
+void __RPC_STUB IWSDServiceProxyEventing_BeginUnsubscribeToMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_EndUnsubscribeToMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    IWSDAsyncResult *pResult);
+void __RPC_STUB IWSDServiceProxyEventing_EndUnsubscribeToMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_RenewMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    const WSD_EVENTING_EXPIRES *pExpires,
+    const WSDXML_ELEMENT *pAny,
+    WSD_EVENTING_EXPIRES **ppExpires,
+    WSDXML_ELEMENT **ppAny);
+void __RPC_STUB IWSDServiceProxyEventing_RenewMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_BeginRenewMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    const WSD_EVENTING_EXPIRES *pExpires,
+    const WSDXML_ELEMENT *pAny,
+    IUnknown *pAsyncState,
+    IWSDAsyncCallback *pAsyncCallback,
+    IWSDAsyncResult **ppResult);
+void __RPC_STUB IWSDServiceProxyEventing_BeginRenewMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_EndRenewMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    IWSDAsyncResult *pResult,
+    WSD_EVENTING_EXPIRES **ppExpires,
+    WSDXML_ELEMENT **ppAny);
+void __RPC_STUB IWSDServiceProxyEventing_EndRenewMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_GetStatusForMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    const WSDXML_ELEMENT *pAny,
+    WSD_EVENTING_EXPIRES **ppExpires,
+    WSDXML_ELEMENT **ppAny);
+void __RPC_STUB IWSDServiceProxyEventing_GetStatusForMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_BeginGetStatusForMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    const WSDXML_ELEMENT *pAny,
+    IUnknown *pAsyncState,
+    IWSDAsyncCallback *pAsyncCallback,
+    IWSDAsyncResult **ppResult);
+void __RPC_STUB IWSDServiceProxyEventing_BeginGetStatusForMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceProxyEventing_EndGetStatusForMultipleOperations_Proxy(
+    IWSDServiceProxyEventing* This,
+    const WSD_OPERATION *pOperations,
+    DWORD dwOperationCount,
+    IWSDAsyncResult *pResult,
+    WSD_EVENTING_EXPIRES **ppExpires,
+    WSDXML_ELEMENT **ppAny);
+void __RPC_STUB IWSDServiceProxyEventing_EndGetStatusForMultipleOperations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDServiceProxyEventing_INTERFACE_DEFINED__ */
+
+#endif
+HRESULT WINAPI WSDCreateDeviceProxy(LPCWSTR pszDeviceId, LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDDeviceProxy **ppDeviceProxy);
+HRESULT WINAPI WSDCreateDeviceProxyAdvanced(LPCWSTR pszDeviceId, IWSDAddress* pDeviceAddress, LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDDeviceProxy **ppDeviceProxy);
+#if WINVER >= 0x601
+HRESULT WINAPI WSDCreateDeviceProxy2(LPCWSTR pszDeviceId, LPCWSTR pszLocalId, IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDDeviceProxy **ppDeviceProxy);
+#endif
+#endif
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_WSDCLIENT*/
+
+#endif /* __wsdclient_h__ */
diff --git a/mingw-w64-headers/include/wsdclient.idl b/mingw-w64-headers/include/wsdclient.idl
new file mode 100644
index 0000000..e97191c
--- /dev/null
+++ b/mingw-w64-headers/include/wsdclient.idl
@@ -0,0 +1,114 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "oaidl.idl";
+import "ocidl.idl";
+import "wsdxmldom.h";
+import "wsdtypes.h";
+
+cpp_quote("")
+interface IWSDAddress;
+interface IWSDXMLContext;
+interface IWSDiscoveredService;
+interface IWSDDeviceProxy;
+interface IWSDServiceProxy;
+interface IWSDEndpointProxy;
+interface IWSDAsyncResult;
+interface IWSDAsyncCallback;
+interface IWSDMetadataExchange;
+interface IWSDEventingStatus;
+
+[object, local, restricted, uuid (11a9852a-8dd8-423e-b537-9356db4fbfb8), pointer_default (unique)]
+interface IWSDAsyncResult : IUnknown {
+  HRESULT SetCallback ([in] IWSDAsyncCallback *pCallback,[in] IUnknown *pAsyncState);
+  HRESULT SetWaitHandle ([in] HANDLE hWaitHandle);
+  HRESULT HasCompleted ();
+  HRESULT GetAsyncState ([out] IUnknown **ppAsyncState);
+  HRESULT Abort ();
+  HRESULT GetEvent ([out] WSD_EVENT *pEvent);
+  HRESULT GetEndpointProxy ([out] IWSDEndpointProxy **ppEndpoint);
+};
+
+[object, local, restricted, uuid (a63e109d-ce72-49e2-ba98-e845f5ee1666), pointer_default (unique)]
+interface IWSDAsyncCallback : IUnknown {
+  HRESULT AsyncOperationComplete ([in] IWSDAsyncResult *pAsyncResult,[in] IUnknown *pAsyncState);
+};
+
+[object, local, restricted, uuid (06996d57-1d67-4928-9307-3d7833fdb846), pointer_default (unique)]
+interface IWSDMetadataExchange : IUnknown {
+  HRESULT GetMetadata ([out] WSD_METADATA_SECTION_LIST **MetadataOut);
+};
+
+[object, local, restricted, uuid (49b17f52-637a-407a-ae99-fbe82a4d38c0), pointer_default (unique)]
+interface IWSDEventingStatus : IUnknown {
+  void SubscriptionRenewed ([in] LPCWSTR pszSubscriptionAction);
+  void SubscriptionRenewalFailed ([in] LPCWSTR pszSubscriptionAction,[in] HRESULT hr);
+  void SubscriptionEnded ([in] LPCWSTR pszSubscriptionAction);
+};
+
+[object, local, restricted, uuid (1860d430-b24c-4975-9f90-dbb39baa24ec), pointer_default (unique)]
+interface IWSDEndpointProxy : IUnknown {
+  HRESULT SendOneWayRequest ([in] const void *pBody,[in] const WSD_OPERATION *pOperation);
+  HRESULT SendTwoWayRequest ([in] const void *pBody,[in] const WSD_OPERATION *pOperation,[in, optional] const WSD_SYNCHRONOUS_RESPONSE_CONTEXT *pResponseContext);
+  HRESULT SendTwoWayRequestAsync ([in] const void *pBody,[in] const WSD_OPERATION *pOperation,[in] IUnknown *pAsyncState,[in] IWSDAsyncCallback *pCallback,[out] IWSDAsyncResult **pResult);
+  HRESULT AbortAsyncOperation ([in] IWSDAsyncResult *pAsyncResult);
+  HRESULT ProcessFault ([in] const WSD_SOAP_FAULT *pFault);
+  HRESULT GetErrorInfo ([out] LPCWSTR *ppszErrorInfo);
+  HRESULT GetFaultInfo ([out] WSD_SOAP_FAULT **ppFault);
+};
+
+[object, local, restricted, uuid (eee0c031-c578-4c0e-9a3b-973c35f409db), pointer_default (unique)]
+interface IWSDDeviceProxy : IUnknown {
+  HRESULT Init ([in] LPCWSTR pszDeviceId,[in] IWSDAddress *pDeviceAddress,[in] LPCWSTR pszLocalId,[in, optional] IWSDXMLContext *pContext,[in, optional] IWSDDeviceProxy *pSponsor);
+  HRESULT BeginGetMetadata ([out] IWSDAsyncResult **ppResult);
+  HRESULT EndGetMetadata ([in] IWSDAsyncResult *pResult);
+  HRESULT GetHostMetadata ([out] WSD_HOST_METADATA **ppHostMetadata);
+  HRESULT GetThisModelMetadata ([out] WSD_THIS_MODEL_METADATA **ppManufacturerMetadata);
+  HRESULT GetThisDeviceMetadata ([out] WSD_THIS_DEVICE_METADATA **ppThisDeviceMetadata);
+  HRESULT GetAllMetadata ([out] WSD_METADATA_SECTION_LIST **ppMetadata);
+  HRESULT GetServiceProxyById ([in] LPCWSTR pszServiceId,[out] IWSDServiceProxy **ppServiceProxy);
+  HRESULT GetServiceProxyByType ([in] const WSDXML_NAME *pType,[out] IWSDServiceProxy **ppServiceProxy);
+  HRESULT GetEndpointProxy ([out] IWSDEndpointProxy **ppProxy);
+};
+
+[object, local, restricted, uuid (d4c7fb9c-03ab-4175-9d67-094fafebf487), pointer_default (unique)]
+interface IWSDServiceProxy : IWSDMetadataExchange {
+  HRESULT BeginGetMetadata ([out] IWSDAsyncResult **ppResult);
+  HRESULT EndGetMetadata ([in] IWSDAsyncResult *pResult,[out] WSD_METADATA_SECTION_LIST **ppMetadata);
+  HRESULT GetServiceMetadata ([out] WSD_SERVICE_METADATA **ppServiceMetadata);
+  HRESULT SubscribeToOperation ([in] const WSD_OPERATION *pOperation,[in] IUnknown *pUnknown,[in] const WSDXML_ELEMENT *pAny,[out] WSDXML_ELEMENT **ppAny);
+  HRESULT UnsubscribeToOperation ([in] const WSD_OPERATION *pOperation);
+  HRESULT SetEventingStatusCallback ([in, optional] IWSDEventingStatus *pStatus);
+  HRESULT GetEndpointProxy ([out] IWSDEndpointProxy **ppProxy);
+};
+
+cpp_quote("#if WINVER >= 0x601")
+[object, local, restricted, uuid (f9279d6d-1012-4a94-b8cc-fd35d2202bfe), pointer_default (unique)]
+interface IWSDServiceProxyEventing : IWSDServiceProxy {
+  HRESULT SubscribeToMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] IUnknown *pUnknown,[in] const WSD_EVENTING_EXPIRES *pExpires,[in] const WSDXML_ELEMENT *pAny,[out] WSD_EVENTING_EXPIRES **ppExpires,[out] WSDXML_ELEMENT **ppAny);
+  HRESULT BeginSubscribeToMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] IUnknown *pUnknown,[in] const WSD_EVENTING_EXPIRES *pExpires,[in] const WSDXML_ELEMENT *pAny,[in] IUnknown *pAsyncState,[in] IWSDAsyncCallback *pAsyncCallback,[out] IWSDAsyncResult **ppResult);
+  HRESULT EndSubscribeToMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] IWSDAsyncResult *pResult,[out] WSD_EVENTING_EXPIRES **ppExpires,[out] WSDXML_ELEMENT **ppAny);
+  HRESULT UnsubscribeToMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] const WSDXML_ELEMENT *pAny);
+  HRESULT BeginUnsubscribeToMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] const WSDXML_ELEMENT *pAny,[in] IUnknown *pAsyncState,[in] IWSDAsyncCallback *pAsyncCallback,[out] IWSDAsyncResult **ppResult);
+  HRESULT EndUnsubscribeToMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] IWSDAsyncResult *pResult);
+  HRESULT RenewMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] const WSD_EVENTING_EXPIRES *pExpires,[in] const WSDXML_ELEMENT *pAny,[out] WSD_EVENTING_EXPIRES **ppExpires,[out] WSDXML_ELEMENT **ppAny);
+  HRESULT BeginRenewMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] const WSD_EVENTING_EXPIRES *pExpires,[in] const WSDXML_ELEMENT *pAny,[in] IUnknown *pAsyncState,[in] IWSDAsyncCallback *pAsyncCallback,[out] IWSDAsyncResult **ppResult);
+  HRESULT EndRenewMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] IWSDAsyncResult *pResult,[out] WSD_EVENTING_EXPIRES **ppExpires,[out] WSDXML_ELEMENT **ppAny);
+  HRESULT GetStatusForMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] const WSDXML_ELEMENT *pAny,[out] WSD_EVENTING_EXPIRES **ppExpires,[out] WSDXML_ELEMENT **ppAny);
+  HRESULT BeginGetStatusForMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] const WSDXML_ELEMENT *pAny,[in] IUnknown *pAsyncState,[in] IWSDAsyncCallback *pAsyncCallback,[out] IWSDAsyncResult **ppResult);
+  HRESULT EndGetStatusForMultipleOperations ([in] const WSD_OPERATION *pOperations,[in] DWORD dwOperationCount,[in] IWSDAsyncResult *pResult,[out] WSD_EVENTING_EXPIRES **ppExpires,[out] WSDXML_ELEMENT **ppAny);
+};
+cpp_quote("#endif")
+
+cpp_quote("HRESULT WINAPI WSDCreateDeviceProxy(LPCWSTR pszDeviceId, LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDDeviceProxy **ppDeviceProxy);")
+cpp_quote("HRESULT WINAPI WSDCreateDeviceProxyAdvanced(LPCWSTR pszDeviceId, IWSDAddress* pDeviceAddress, LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDDeviceProxy **ppDeviceProxy);")
+cpp_quote("#if WINVER >= 0x601")
+cpp_quote("HRESULT WINAPI WSDCreateDeviceProxy2(LPCWSTR pszDeviceId, LPCWSTR pszLocalId, IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDDeviceProxy **ppDeviceProxy);")
+cpp_quote("#endif")
+
+cpp_quote("#endif")
diff --git a/mingw-w64-headers/include/wsddisco.h b/mingw-w64-headers/include/wsddisco.h
index c693419..fa5f8e0 100644
--- a/mingw-w64-headers/include/wsddisco.h
+++ b/mingw-w64-headers/include/wsddisco.h
@@ -1,95 +1,690 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+/*** Autogenerated by WIDL 1.6 from wsddisco.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __wsddisco_h__
+#define __wsddisco_h__
+
+/* Forward declarations */
+
+#ifndef __IWSDScopeMatchingRule_FWD_DEFINED__
+#define __IWSDScopeMatchingRule_FWD_DEFINED__
+typedef interface IWSDScopeMatchingRule IWSDScopeMatchingRule;
+#endif
+
+#ifndef __IWSDiscoveryProviderNotify_FWD_DEFINED__
+#define __IWSDiscoveryProviderNotify_FWD_DEFINED__
+typedef interface IWSDiscoveryProviderNotify IWSDiscoveryProviderNotify;
+#endif
+
+#ifndef __IWSDiscoveryProvider_FWD_DEFINED__
+#define __IWSDiscoveryProvider_FWD_DEFINED__
+typedef interface IWSDiscoveryProvider IWSDiscoveryProvider;
+#endif
+
+#ifndef __IWSDiscoveredService_FWD_DEFINED__
+#define __IWSDiscoveredService_FWD_DEFINED__
+typedef interface IWSDiscoveredService IWSDiscoveredService;
+#endif
+
+#ifndef __IWSDiscoveryPublisherNotify_FWD_DEFINED__
+#define __IWSDiscoveryPublisherNotify_FWD_DEFINED__
+typedef interface IWSDiscoveryPublisherNotify IWSDiscoveryPublisherNotify;
+#endif
+
+#ifndef __IWSDiscoveryPublisher_FWD_DEFINED__
+#define __IWSDiscoveryPublisher_FWD_DEFINED__
+typedef interface IWSDiscoveryPublisher IWSDiscoveryPublisher;
+#endif
+
+/* Headers for imported files */
+
+#include <objidl.h>
+#include <wsdxmldom.h>
+#include <wsdtypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifndef __IWSDXMLContext_FWD_DEFINED__
+#define __IWSDXMLContext_FWD_DEFINED__
+typedef interface IWSDXMLContext IWSDXMLContext;
+#endif
+
+#ifndef __IWSDiscoveryProvider_FWD_DEFINED__
+#define __IWSDiscoveryProvider_FWD_DEFINED__
+typedef interface IWSDiscoveryProvider IWSDiscoveryProvider;
+#endif
+
+#ifndef __IWSDiscoveryProviderNotify_FWD_DEFINED__
+#define __IWSDiscoveryProviderNotify_FWD_DEFINED__
+typedef interface IWSDiscoveryProviderNotify IWSDiscoveryProviderNotify;
+#endif
+
+#ifndef __IWSDiscoveredService_FWD_DEFINED__
+#define __IWSDiscoveredService_FWD_DEFINED__
+typedef interface IWSDiscoveredService IWSDiscoveredService;
+#endif
+
+#ifndef __IWSDiscoveryPublisher_FWD_DEFINED__
+#define __IWSDiscoveryPublisher_FWD_DEFINED__
+typedef interface IWSDiscoveryPublisher IWSDiscoveryPublisher;
+#endif
+
+#ifndef __IWSDiscoveryPublisherNotify_FWD_DEFINED__
+#define __IWSDiscoveryPublisherNotify_FWD_DEFINED__
+typedef interface IWSDiscoveryPublisherNotify IWSDiscoveryPublisherNotify;
+#endif
+
+#ifndef __IWSDScopeMatchingRule_FWD_DEFINED__
+#define __IWSDScopeMatchingRule_FWD_DEFINED__
+typedef interface IWSDScopeMatchingRule IWSDScopeMatchingRule;
+#endif
+
+/*****************************************************************************
+ * IWSDScopeMatchingRule interface
  */
-#ifndef _INC_WSDDISCO
-#define _INC_WSDDISCO
+#ifndef __IWSDScopeMatchingRule_INTERFACE_DEFINED__
+#define __IWSDScopeMatchingRule_INTERFACE_DEFINED__
 
-#ifndef _INC_WSDAPI
-#error Please include wsdapi.h instead of this header. This header cannot be used directly.
+DEFINE_GUID(IID_IWSDScopeMatchingRule, 0xfcafe424, 0xfef5, 0x481a, 0xbd,0x9f, 0x33,0xce,0x05,0x74,0x25,0x6f);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("fcafe424-fef5-481a-bd9f-33ce0574256f")
+IWSDScopeMatchingRule : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetScopeRule(
+        LPCWSTR *ppszScopeMatchingRule) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MatchScopes(
+        LPCWSTR pszScope1,
+        LPCWSTR pszScope2,
+        WINBOOL *pfMatch) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDScopeMatchingRule, 0xfcafe424, 0xfef5, 0x481a, 0xbd,0x9f, 0x33,0xce,0x05,0x74,0x25,0x6f)
 #endif
-
-#if (_WIN32_WINNT >= 0x0600)
-
-#undef  INTERFACE
-#define INTERFACE IWSDScopeMatchingRule
-DECLARE_INTERFACE_(IWSDScopeMatchingRule,IUnknown) {
+#else
+typedef struct IWSDScopeMatchingRuleVtbl {
     BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-#endif
-    /* IWSDScopeMatchingRule methods */
-    STDMETHOD_(HRESULT,GetScopeRule)(THIS_ LPCWSTR *ppszScopeMatchingRule) PURE;
-    STDMETHOD_(HRESULT,MatchScopes)(THIS_ LPCWSTR pszScope1,LPCWSTR pszScope2,BOOL *pfMatch) PURE;
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDScopeMatchingRule* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDScopeMatchingRule* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDScopeMatchingRule* This);
+
+    /*** IWSDScopeMatchingRule methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetScopeRule)(
+        IWSDScopeMatchingRule* This,
+        LPCWSTR *ppszScopeMatchingRule);
+
+    HRESULT (STDMETHODCALLTYPE *MatchScopes)(
+        IWSDScopeMatchingRule* This,
+        LPCWSTR pszScope1,
+        LPCWSTR pszScope2,
+        WINBOOL *pfMatch);
 
     END_INTERFACE
+} IWSDScopeMatchingRuleVtbl;
+interface IWSDScopeMatchingRule {
+    CONST_VTBL IWSDScopeMatchingRuleVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDScopeMatchingRule_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDScopeMatchingRule_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDScopeMatchingRule_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDScopeMatchingRule methods ***/
 #define IWSDScopeMatchingRule_GetScopeRule(This,ppszScopeMatchingRule) (This)->lpVtbl->GetScopeRule(This,ppszScopeMatchingRule)
 #define IWSDScopeMatchingRule_MatchScopes(This,pszScope1,pszScope2,pfMatch) (This)->lpVtbl->MatchScopes(This,pszScope1,pszScope2,pfMatch)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDiscoveryPublisherNotify
-DECLARE_INTERFACE_(IWSDiscoveryPublisherNotify,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDScopeMatchingRule_QueryInterface(IWSDScopeMatchingRule* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDScopeMatchingRule_AddRef(IWSDScopeMatchingRule* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDScopeMatchingRule_Release(IWSDScopeMatchingRule* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDScopeMatchingRule methods ***/
+static FORCEINLINE HRESULT IWSDScopeMatchingRule_GetScopeRule(IWSDScopeMatchingRule* This,LPCWSTR *ppszScopeMatchingRule) {
+    return This->lpVtbl->GetScopeRule(This,ppszScopeMatchingRule);
+}
+static FORCEINLINE HRESULT IWSDScopeMatchingRule_MatchScopes(IWSDScopeMatchingRule* This,LPCWSTR pszScope1,LPCWSTR pszScope2,WINBOOL *pfMatch) {
+    return This->lpVtbl->MatchScopes(This,pszScope1,pszScope2,pfMatch);
+}
 #endif
-    /* IWSDiscoveryPublisherNotify methods */
-    STDMETHOD_(HRESULT,ProbeHandler)(THIS_ const WSD_SOAP_MESSAGE *pSoap,IWSDMessageParameters *pMessageParameters) PURE;
-    STDMETHOD_(HRESULT,ResolveHandler)(THIS_ const WSD_SOAP_MESSAGE *pSoap,IWSDMessageParameters *pMessageParameters) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDScopeMatchingRule_GetScopeRule_Proxy(
+    IWSDScopeMatchingRule* This,
+    LPCWSTR *ppszScopeMatchingRule);
+void __RPC_STUB IWSDScopeMatchingRule_GetScopeRule_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDScopeMatchingRule_MatchScopes_Proxy(
+    IWSDScopeMatchingRule* This,
+    LPCWSTR pszScope1,
+    LPCWSTR pszScope2,
+    WINBOOL *pfMatch);
+void __RPC_STUB IWSDScopeMatchingRule_MatchScopes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDScopeMatchingRule_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDiscoveryProviderNotify interface
+ */
+#ifndef __IWSDiscoveryProviderNotify_INTERFACE_DEFINED__
+#define __IWSDiscoveryProviderNotify_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDiscoveryProviderNotify, 0x73ee3ced, 0xb6e6, 0x4329, 0xa5,0x46, 0x3e,0x8a,0xd4,0x65,0x63,0xd2);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("73ee3ced-b6e6-4329-a546-3e8ad46563d2")
+IWSDiscoveryProviderNotify : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Add(
+        IWSDiscoveredService *pService) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Remove(
+        IWSDiscoveredService *pService) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SearchFailed(
+        HRESULT hr,
+        LPCWSTR pszTag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SearchComplete(
+        LPCWSTR pszTag) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDiscoveryProviderNotify, 0x73ee3ced, 0xb6e6, 0x4329, 0xa5,0x46, 0x3e,0x8a,0xd4,0x65,0x63,0xd2)
+#endif
+#else
+typedef struct IWSDiscoveryProviderNotifyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDiscoveryProviderNotify* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDiscoveryProviderNotify* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDiscoveryProviderNotify* This);
+
+    /*** IWSDiscoveryProviderNotify methods ***/
+    HRESULT (STDMETHODCALLTYPE *Add)(
+        IWSDiscoveryProviderNotify* This,
+        IWSDiscoveredService *pService);
+
+    HRESULT (STDMETHODCALLTYPE *Remove)(
+        IWSDiscoveryProviderNotify* This,
+        IWSDiscoveredService *pService);
+
+    HRESULT (STDMETHODCALLTYPE *SearchFailed)(
+        IWSDiscoveryProviderNotify* This,
+        HRESULT hr,
+        LPCWSTR pszTag);
+
+    HRESULT (STDMETHODCALLTYPE *SearchComplete)(
+        IWSDiscoveryProviderNotify* This,
+        LPCWSTR pszTag);
 
     END_INTERFACE
+} IWSDiscoveryProviderNotifyVtbl;
+interface IWSDiscoveryProviderNotify {
+    CONST_VTBL IWSDiscoveryProviderNotifyVtbl* lpVtbl;
 };
-#ifdef COBJMACROS
-#define IWSDiscoveryPublisherNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDiscoveryPublisherNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDiscoveryPublisherNotify_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDiscoveryPublisherNotify_ProbeHandler(This,pSoap,pMessageParameters) (This)->lpVtbl->ProbeHandler(This,pSoap,pMessageParameters)
-#define IWSDiscoveryPublisherNotify_ResolveHandler(This,pSoap,pMessageParameters) (This)->lpVtbl->ResolveHandler(This,pSoap,pMessageParameters)
-#endif /*COBJMACROS*/
 
-#undef  INTERFACE
-#define INTERFACE IWSDiscoveredService
-DECLARE_INTERFACE_(IWSDiscoveredService,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDiscoveryProviderNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDiscoveryProviderNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDiscoveryProviderNotify_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDiscoveryProviderNotify methods ***/
+#define IWSDiscoveryProviderNotify_Add(This,pService) (This)->lpVtbl->Add(This,pService)
+#define IWSDiscoveryProviderNotify_Remove(This,pService) (This)->lpVtbl->Remove(This,pService)
+#define IWSDiscoveryProviderNotify_SearchFailed(This,hr,pszTag) (This)->lpVtbl->SearchFailed(This,hr,pszTag)
+#define IWSDiscoveryProviderNotify_SearchComplete(This,pszTag) (This)->lpVtbl->SearchComplete(This,pszTag)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryProviderNotify_QueryInterface(IWSDiscoveryProviderNotify* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDiscoveryProviderNotify_AddRef(IWSDiscoveryProviderNotify* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDiscoveryProviderNotify_Release(IWSDiscoveryProviderNotify* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDiscoveryProviderNotify methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryProviderNotify_Add(IWSDiscoveryProviderNotify* This,IWSDiscoveredService *pService) {
+    return This->lpVtbl->Add(This,pService);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProviderNotify_Remove(IWSDiscoveryProviderNotify* This,IWSDiscoveredService *pService) {
+    return This->lpVtbl->Remove(This,pService);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProviderNotify_SearchFailed(IWSDiscoveryProviderNotify* This,HRESULT hr,LPCWSTR pszTag) {
+    return This->lpVtbl->SearchFailed(This,hr,pszTag);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProviderNotify_SearchComplete(IWSDiscoveryProviderNotify* This,LPCWSTR pszTag) {
+    return This->lpVtbl->SearchComplete(This,pszTag);
+}
 #endif
-    /* IWSDiscoveryProviderNotify methods */
-    STDMETHOD_(HRESULT *,GetEndpointReference)(THIS_ WSD_ENDPOINT_REFERENCE **ppEndPointReference) PURE;
-    STDMETHOD_(HRESULT,GetTypes)(THIS_ WSD_NAME_LIST **ppTypesList) PURE;
-    STDMETHOD_(HRESULT,GetScopes)(THIS_ WSD_URI_LIST **ppScopesList) PURE;
-    STDMETHOD_(HRESULT,GetXAddrs)(THIS_ WSD_URI_LIST **ppXAddrsList) PURE;
-    STDMETHOD_(HRESULT,GetMetadataVersion)(THIS_ ULONGLONG *pullMetadataVersion) PURE;
-    STDMETHOD_(HRESULT,GetExtendedDiscoXML)(THIS_ WSDXML_ELEMENT **ppHeaderAny,WSDXML_ELEMENT **ppBodyAny) PURE;
-    STDMETHOD_(HRESULT,GetProbeResolveTag)(THIS_ LPCWSTR *ppszTag) PURE;
-    STDMETHOD_(HRESULT,GetRemoteTransportAddress)(THIS_ LPCWSTR *ppszRemoteTransportAddress) PURE;
-    STDMETHOD_(HRESULT,GetLocalTransportAddress)(THIS_ LPCWSTR *ppszLocalTransportAddress) PURE;
-    STDMETHOD_(HRESULT,GetLocalInterfaceGUID)(THIS_ GUID *pGuid) PURE;
-    STDMETHOD_(HRESULT *,GetInstanceId)(THIS_ ULONGLONG *pullInstanceId) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProviderNotify_Add_Proxy(
+    IWSDiscoveryProviderNotify* This,
+    IWSDiscoveredService *pService);
+void __RPC_STUB IWSDiscoveryProviderNotify_Add_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProviderNotify_Remove_Proxy(
+    IWSDiscoveryProviderNotify* This,
+    IWSDiscoveredService *pService);
+void __RPC_STUB IWSDiscoveryProviderNotify_Remove_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProviderNotify_SearchFailed_Proxy(
+    IWSDiscoveryProviderNotify* This,
+    HRESULT hr,
+    LPCWSTR pszTag);
+void __RPC_STUB IWSDiscoveryProviderNotify_SearchFailed_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProviderNotify_SearchComplete_Proxy(
+    IWSDiscoveryProviderNotify* This,
+    LPCWSTR pszTag);
+void __RPC_STUB IWSDiscoveryProviderNotify_SearchComplete_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDiscoveryProviderNotify_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDiscoveryProvider interface
+ */
+#ifndef __IWSDiscoveryProvider_INTERFACE_DEFINED__
+#define __IWSDiscoveryProvider_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDiscoveryProvider, 0x8ffc8e55, 0xf0eb, 0x480f, 0x88,0xb7, 0xb4,0x35,0xdd,0x28,0x1d,0x45);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("8ffc8e55-f0eb-480f-88b7-b435dd281d45")
+IWSDiscoveryProvider : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetAddressFamily(
+        DWORD dwAddressFamily) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Attach(
+        IWSDiscoveryProviderNotify *pSink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Detach(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SearchById(
+        LPCWSTR pszId,
+        LPCWSTR pszTag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SearchByAddress(
+        LPCWSTR pszAddress,
+        LPCWSTR pszTag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SearchByType(
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        LPCWSTR pszMatchBy,
+        LPCWSTR pszTag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetXMLContext(
+        IWSDXMLContext **ppContext) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDiscoveryProvider, 0x8ffc8e55, 0xf0eb, 0x480f, 0x88,0xb7, 0xb4,0x35,0xdd,0x28,0x1d,0x45)
+#endif
+#else
+typedef struct IWSDiscoveryProviderVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDiscoveryProvider* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDiscoveryProvider* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDiscoveryProvider* This);
+
+    /*** IWSDiscoveryProvider methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetAddressFamily)(
+        IWSDiscoveryProvider* This,
+        DWORD dwAddressFamily);
+
+    HRESULT (STDMETHODCALLTYPE *Attach)(
+        IWSDiscoveryProvider* This,
+        IWSDiscoveryProviderNotify *pSink);
+
+    HRESULT (STDMETHODCALLTYPE *Detach)(
+        IWSDiscoveryProvider* This);
+
+    HRESULT (STDMETHODCALLTYPE *SearchById)(
+        IWSDiscoveryProvider* This,
+        LPCWSTR pszId,
+        LPCWSTR pszTag);
+
+    HRESULT (STDMETHODCALLTYPE *SearchByAddress)(
+        IWSDiscoveryProvider* This,
+        LPCWSTR pszAddress,
+        LPCWSTR pszTag);
+
+    HRESULT (STDMETHODCALLTYPE *SearchByType)(
+        IWSDiscoveryProvider* This,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        LPCWSTR pszMatchBy,
+        LPCWSTR pszTag);
+
+    HRESULT (STDMETHODCALLTYPE *GetXMLContext)(
+        IWSDiscoveryProvider* This,
+        IWSDXMLContext **ppContext);
 
     END_INTERFACE
+} IWSDiscoveryProviderVtbl;
+interface IWSDiscoveryProvider {
+    CONST_VTBL IWSDiscoveryProviderVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDiscoveryProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDiscoveryProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDiscoveryProvider_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDiscoveryProvider methods ***/
+#define IWSDiscoveryProvider_SetAddressFamily(This,dwAddressFamily) (This)->lpVtbl->SetAddressFamily(This,dwAddressFamily)
+#define IWSDiscoveryProvider_Attach(This,pSink) (This)->lpVtbl->Attach(This,pSink)
+#define IWSDiscoveryProvider_Detach(This) (This)->lpVtbl->Detach(This)
+#define IWSDiscoveryProvider_SearchById(This,pszId,pszTag) (This)->lpVtbl->SearchById(This,pszId,pszTag)
+#define IWSDiscoveryProvider_SearchByAddress(This,pszAddress,pszTag) (This)->lpVtbl->SearchByAddress(This,pszAddress,pszTag)
+#define IWSDiscoveryProvider_SearchByType(This,pTypesList,pScopesList,pszMatchBy,pszTag) (This)->lpVtbl->SearchByType(This,pTypesList,pScopesList,pszMatchBy,pszTag)
+#define IWSDiscoveryProvider_GetXMLContext(This,ppContext) (This)->lpVtbl->GetXMLContext(This,ppContext)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryProvider_QueryInterface(IWSDiscoveryProvider* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDiscoveryProvider_AddRef(IWSDiscoveryProvider* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDiscoveryProvider_Release(IWSDiscoveryProvider* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDiscoveryProvider methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryProvider_SetAddressFamily(IWSDiscoveryProvider* This,DWORD dwAddressFamily) {
+    return This->lpVtbl->SetAddressFamily(This,dwAddressFamily);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProvider_Attach(IWSDiscoveryProvider* This,IWSDiscoveryProviderNotify *pSink) {
+    return This->lpVtbl->Attach(This,pSink);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProvider_Detach(IWSDiscoveryProvider* This) {
+    return This->lpVtbl->Detach(This);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProvider_SearchById(IWSDiscoveryProvider* This,LPCWSTR pszId,LPCWSTR pszTag) {
+    return This->lpVtbl->SearchById(This,pszId,pszTag);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProvider_SearchByAddress(IWSDiscoveryProvider* This,LPCWSTR pszAddress,LPCWSTR pszTag) {
+    return This->lpVtbl->SearchByAddress(This,pszAddress,pszTag);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProvider_SearchByType(IWSDiscoveryProvider* This,const WSD_NAME_LIST *pTypesList,const WSD_URI_LIST *pScopesList,LPCWSTR pszMatchBy,LPCWSTR pszTag) {
+    return This->lpVtbl->SearchByType(This,pTypesList,pScopesList,pszMatchBy,pszTag);
+}
+static FORCEINLINE HRESULT IWSDiscoveryProvider_GetXMLContext(IWSDiscoveryProvider* This,IWSDXMLContext **ppContext) {
+    return This->lpVtbl->GetXMLContext(This,ppContext);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProvider_SetAddressFamily_Proxy(
+    IWSDiscoveryProvider* This,
+    DWORD dwAddressFamily);
+void __RPC_STUB IWSDiscoveryProvider_SetAddressFamily_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProvider_Attach_Proxy(
+    IWSDiscoveryProvider* This,
+    IWSDiscoveryProviderNotify *pSink);
+void __RPC_STUB IWSDiscoveryProvider_Attach_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProvider_Detach_Proxy(
+    IWSDiscoveryProvider* This);
+void __RPC_STUB IWSDiscoveryProvider_Detach_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProvider_SearchById_Proxy(
+    IWSDiscoveryProvider* This,
+    LPCWSTR pszId,
+    LPCWSTR pszTag);
+void __RPC_STUB IWSDiscoveryProvider_SearchById_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProvider_SearchByAddress_Proxy(
+    IWSDiscoveryProvider* This,
+    LPCWSTR pszAddress,
+    LPCWSTR pszTag);
+void __RPC_STUB IWSDiscoveryProvider_SearchByAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProvider_SearchByType_Proxy(
+    IWSDiscoveryProvider* This,
+    const WSD_NAME_LIST *pTypesList,
+    const WSD_URI_LIST *pScopesList,
+    LPCWSTR pszMatchBy,
+    LPCWSTR pszTag);
+void __RPC_STUB IWSDiscoveryProvider_SearchByType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryProvider_GetXMLContext_Proxy(
+    IWSDiscoveryProvider* This,
+    IWSDXMLContext **ppContext);
+void __RPC_STUB IWSDiscoveryProvider_GetXMLContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDiscoveryProvider_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDiscoveredService interface
+ */
+#ifndef __IWSDiscoveredService_INTERFACE_DEFINED__
+#define __IWSDiscoveredService_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDiscoveredService, 0x4bad8a3b, 0xb374, 0x4420, 0x96,0x32, 0xaa,0xc9,0x45,0xb3,0x74,0xaa);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("4bad8a3b-b374-4420-9632-aac945b374aa")
+IWSDiscoveredService : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetEndpointReference(
+        WSD_ENDPOINT_REFERENCE **ppEndpointReference) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetTypes(
+        WSD_NAME_LIST **ppTypesList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetScopes(
+        WSD_URI_LIST **ppScopesList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetXAddrs(
+        WSD_URI_LIST **ppXAddrsList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetMetadataVersion(
+        ULONGLONG *pullMetadataVersion) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetExtendedDiscoXML(
+        WSDXML_ELEMENT **ppHeaderAny,
+        WSDXML_ELEMENT **ppBodyAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProbeResolveTag(
+        LPCWSTR *ppszTag) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRemoteTransportAddress(
+        LPCWSTR *ppszRemoteTransportAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLocalTransportAddress(
+        LPCWSTR *ppszLocalTransportAddress) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetLocalInterfaceGUID(
+        GUID *pGuid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetInstanceId(
+        ULONGLONG *pullInstanceId) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDiscoveredService, 0x4bad8a3b, 0xb374, 0x4420, 0x96,0x32, 0xaa,0xc9,0x45,0xb3,0x74,0xaa)
+#endif
+#else
+typedef struct IWSDiscoveredServiceVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDiscoveredService* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDiscoveredService* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDiscoveredService* This);
+
+    /*** IWSDiscoveredService methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetEndpointReference)(
+        IWSDiscoveredService* This,
+        WSD_ENDPOINT_REFERENCE **ppEndpointReference);
+
+    HRESULT (STDMETHODCALLTYPE *GetTypes)(
+        IWSDiscoveredService* This,
+        WSD_NAME_LIST **ppTypesList);
+
+    HRESULT (STDMETHODCALLTYPE *GetScopes)(
+        IWSDiscoveredService* This,
+        WSD_URI_LIST **ppScopesList);
+
+    HRESULT (STDMETHODCALLTYPE *GetXAddrs)(
+        IWSDiscoveredService* This,
+        WSD_URI_LIST **ppXAddrsList);
+
+    HRESULT (STDMETHODCALLTYPE *GetMetadataVersion)(
+        IWSDiscoveredService* This,
+        ULONGLONG *pullMetadataVersion);
+
+    HRESULT (STDMETHODCALLTYPE *GetExtendedDiscoXML)(
+        IWSDiscoveredService* This,
+        WSDXML_ELEMENT **ppHeaderAny,
+        WSDXML_ELEMENT **ppBodyAny);
+
+    HRESULT (STDMETHODCALLTYPE *GetProbeResolveTag)(
+        IWSDiscoveredService* This,
+        LPCWSTR *ppszTag);
+
+    HRESULT (STDMETHODCALLTYPE *GetRemoteTransportAddress)(
+        IWSDiscoveredService* This,
+        LPCWSTR *ppszRemoteTransportAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetLocalTransportAddress)(
+        IWSDiscoveredService* This,
+        LPCWSTR *ppszLocalTransportAddress);
+
+    HRESULT (STDMETHODCALLTYPE *GetLocalInterfaceGUID)(
+        IWSDiscoveredService* This,
+        GUID *pGuid);
+
+    HRESULT (STDMETHODCALLTYPE *GetInstanceId)(
+        IWSDiscoveredService* This,
+        ULONGLONG *pullInstanceId);
+
+    END_INTERFACE
+} IWSDiscoveredServiceVtbl;
+interface IWSDiscoveredService {
+    CONST_VTBL IWSDiscoveredServiceVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDiscoveredService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDiscoveredService_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDiscoveredService_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDiscoveredService_GetEndpointReference(This,ppEndPointReference) (This)->lpVtbl->GetEndpointReference(This,ppEndPointReference)
+/*** IWSDiscoveredService methods ***/
+#define IWSDiscoveredService_GetEndpointReference(This,ppEndpointReference) (This)->lpVtbl->GetEndpointReference(This,ppEndpointReference)
 #define IWSDiscoveredService_GetTypes(This,ppTypesList) (This)->lpVtbl->GetTypes(This,ppTypesList)
 #define IWSDiscoveredService_GetScopes(This,ppScopesList) (This)->lpVtbl->GetScopes(This,ppScopesList)
 #define IWSDiscoveredService_GetXAddrs(This,ppXAddrsList) (This)->lpVtbl->GetXAddrs(This,ppXAddrsList)
@@ -100,132 +695,790 @@
 #define IWSDiscoveredService_GetLocalTransportAddress(This,ppszLocalTransportAddress) (This)->lpVtbl->GetLocalTransportAddress(This,ppszLocalTransportAddress)
 #define IWSDiscoveredService_GetLocalInterfaceGUID(This,pGuid) (This)->lpVtbl->GetLocalInterfaceGUID(This,pGuid)
 #define IWSDiscoveredService_GetInstanceId(This,pullInstanceId) (This)->lpVtbl->GetInstanceId(This,pullInstanceId)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDiscoveryProviderNotify
-DECLARE_INTERFACE_(IWSDiscoveryProviderNotify,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDiscoveredService_QueryInterface(IWSDiscoveredService* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDiscoveredService_AddRef(IWSDiscoveredService* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDiscoveredService_Release(IWSDiscoveredService* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDiscoveredService methods ***/
+static FORCEINLINE HRESULT IWSDiscoveredService_GetEndpointReference(IWSDiscoveredService* This,WSD_ENDPOINT_REFERENCE **ppEndpointReference) {
+    return This->lpVtbl->GetEndpointReference(This,ppEndpointReference);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetTypes(IWSDiscoveredService* This,WSD_NAME_LIST **ppTypesList) {
+    return This->lpVtbl->GetTypes(This,ppTypesList);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetScopes(IWSDiscoveredService* This,WSD_URI_LIST **ppScopesList) {
+    return This->lpVtbl->GetScopes(This,ppScopesList);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetXAddrs(IWSDiscoveredService* This,WSD_URI_LIST **ppXAddrsList) {
+    return This->lpVtbl->GetXAddrs(This,ppXAddrsList);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetMetadataVersion(IWSDiscoveredService* This,ULONGLONG *pullMetadataVersion) {
+    return This->lpVtbl->GetMetadataVersion(This,pullMetadataVersion);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetExtendedDiscoXML(IWSDiscoveredService* This,WSDXML_ELEMENT **ppHeaderAny,WSDXML_ELEMENT **ppBodyAny) {
+    return This->lpVtbl->GetExtendedDiscoXML(This,ppHeaderAny,ppBodyAny);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetProbeResolveTag(IWSDiscoveredService* This,LPCWSTR *ppszTag) {
+    return This->lpVtbl->GetProbeResolveTag(This,ppszTag);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetRemoteTransportAddress(IWSDiscoveredService* This,LPCWSTR *ppszRemoteTransportAddress) {
+    return This->lpVtbl->GetRemoteTransportAddress(This,ppszRemoteTransportAddress);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetLocalTransportAddress(IWSDiscoveredService* This,LPCWSTR *ppszLocalTransportAddress) {
+    return This->lpVtbl->GetLocalTransportAddress(This,ppszLocalTransportAddress);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetLocalInterfaceGUID(IWSDiscoveredService* This,GUID *pGuid) {
+    return This->lpVtbl->GetLocalInterfaceGUID(This,pGuid);
+}
+static FORCEINLINE HRESULT IWSDiscoveredService_GetInstanceId(IWSDiscoveredService* This,ULONGLONG *pullInstanceId) {
+    return This->lpVtbl->GetInstanceId(This,pullInstanceId);
+}
 #endif
-    /* IWSDiscoveryProviderNotify methods */
-    STDMETHOD_(HRESULT,Add)(THIS_ IWSDiscoveredService *pService) PURE;
-    STDMETHOD_(HRESULT,Remove)(THIS_ IWSDiscoveredService *pService) PURE;
-    STDMETHOD_(HRESULT,SearchFailed)(THIS_ HRESULT hr,LPCWSTR pszTag) PURE;
-    STDMETHOD_(HRESULT,SearchComplete)(THIS_ LPCWSTR pszTag) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetEndpointReference_Proxy(
+    IWSDiscoveredService* This,
+    WSD_ENDPOINT_REFERENCE **ppEndpointReference);
+void __RPC_STUB IWSDiscoveredService_GetEndpointReference_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetTypes_Proxy(
+    IWSDiscoveredService* This,
+    WSD_NAME_LIST **ppTypesList);
+void __RPC_STUB IWSDiscoveredService_GetTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetScopes_Proxy(
+    IWSDiscoveredService* This,
+    WSD_URI_LIST **ppScopesList);
+void __RPC_STUB IWSDiscoveredService_GetScopes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetXAddrs_Proxy(
+    IWSDiscoveredService* This,
+    WSD_URI_LIST **ppXAddrsList);
+void __RPC_STUB IWSDiscoveredService_GetXAddrs_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetMetadataVersion_Proxy(
+    IWSDiscoveredService* This,
+    ULONGLONG *pullMetadataVersion);
+void __RPC_STUB IWSDiscoveredService_GetMetadataVersion_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetExtendedDiscoXML_Proxy(
+    IWSDiscoveredService* This,
+    WSDXML_ELEMENT **ppHeaderAny,
+    WSDXML_ELEMENT **ppBodyAny);
+void __RPC_STUB IWSDiscoveredService_GetExtendedDiscoXML_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetProbeResolveTag_Proxy(
+    IWSDiscoveredService* This,
+    LPCWSTR *ppszTag);
+void __RPC_STUB IWSDiscoveredService_GetProbeResolveTag_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetRemoteTransportAddress_Proxy(
+    IWSDiscoveredService* This,
+    LPCWSTR *ppszRemoteTransportAddress);
+void __RPC_STUB IWSDiscoveredService_GetRemoteTransportAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetLocalTransportAddress_Proxy(
+    IWSDiscoveredService* This,
+    LPCWSTR *ppszLocalTransportAddress);
+void __RPC_STUB IWSDiscoveredService_GetLocalTransportAddress_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetLocalInterfaceGUID_Proxy(
+    IWSDiscoveredService* This,
+    GUID *pGuid);
+void __RPC_STUB IWSDiscoveredService_GetLocalInterfaceGUID_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveredService_GetInstanceId_Proxy(
+    IWSDiscoveredService* This,
+    ULONGLONG *pullInstanceId);
+void __RPC_STUB IWSDiscoveredService_GetInstanceId_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDiscoveredService_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDiscoveryPublisherNotify interface
+ */
+#ifndef __IWSDiscoveryPublisherNotify_INTERFACE_DEFINED__
+#define __IWSDiscoveryPublisherNotify_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDiscoveryPublisherNotify, 0xe67651b0, 0x337a, 0x4b3c, 0x97,0x58, 0x73,0x33,0x88,0x56,0x82,0x51);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("e67651b0-337a-4b3c-9758-733388568251")
+IWSDiscoveryPublisherNotify : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ProbeHandler(
+        const WSD_SOAP_MESSAGE *pSoap,
+        IWSDMessageParameters *pMessageParameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResolveHandler(
+        const WSD_SOAP_MESSAGE *pSoap,
+        IWSDMessageParameters *pMessageParameters) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDiscoveryPublisherNotify, 0xe67651b0, 0x337a, 0x4b3c, 0x97,0x58, 0x73,0x33,0x88,0x56,0x82,0x51)
+#endif
+#else
+typedef struct IWSDiscoveryPublisherNotifyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDiscoveryPublisherNotify* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDiscoveryPublisherNotify* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDiscoveryPublisherNotify* This);
+
+    /*** IWSDiscoveryPublisherNotify methods ***/
+    HRESULT (STDMETHODCALLTYPE *ProbeHandler)(
+        IWSDiscoveryPublisherNotify* This,
+        const WSD_SOAP_MESSAGE *pSoap,
+        IWSDMessageParameters *pMessageParameters);
+
+    HRESULT (STDMETHODCALLTYPE *ResolveHandler)(
+        IWSDiscoveryPublisherNotify* This,
+        const WSD_SOAP_MESSAGE *pSoap,
+        IWSDMessageParameters *pMessageParameters);
 
     END_INTERFACE
+} IWSDiscoveryPublisherNotifyVtbl;
+interface IWSDiscoveryPublisherNotify {
+    CONST_VTBL IWSDiscoveryPublisherNotifyVtbl* lpVtbl;
 };
-#ifdef COBJMACROS
-#define IWSDiscoveryProviderNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDiscoveryProviderNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDiscoveryProviderNotify_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDiscoveryProviderNotify_Add(This,pService) (This)->lpVtbl->Add(This,pService)
-#define IWSDiscoveryProviderNotify_Remove(This,pService) (This)->lpVtbl->Remove(This,pService)
-#define IWSDiscoveryProviderNotify_SearchFailed(This,hr,pszTag) (This)->lpVtbl->SearchFailed(This,hr,pszTag)
-#define IWSDiscoveryProviderNotify_SearchComplete(This,pszTag) (This)->lpVtbl->SearchComplete(This,pszTag)
-#endif /*COBJMACROS*/
 
-#undef  INTERFACE
-#define INTERFACE IWSDiscoveryProvider
-DECLARE_INTERFACE_(IWSDiscoveryProvider,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDiscoveryPublisherNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDiscoveryPublisherNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDiscoveryPublisherNotify_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDiscoveryPublisherNotify methods ***/
+#define IWSDiscoveryPublisherNotify_ProbeHandler(This,pSoap,pMessageParameters) (This)->lpVtbl->ProbeHandler(This,pSoap,pMessageParameters)
+#define IWSDiscoveryPublisherNotify_ResolveHandler(This,pSoap,pMessageParameters) (This)->lpVtbl->ResolveHandler(This,pSoap,pMessageParameters)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryPublisherNotify_QueryInterface(IWSDiscoveryPublisherNotify* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDiscoveryPublisherNotify_AddRef(IWSDiscoveryPublisherNotify* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDiscoveryPublisherNotify_Release(IWSDiscoveryPublisherNotify* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDiscoveryPublisherNotify methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryPublisherNotify_ProbeHandler(IWSDiscoveryPublisherNotify* This,const WSD_SOAP_MESSAGE *pSoap,IWSDMessageParameters *pMessageParameters) {
+    return This->lpVtbl->ProbeHandler(This,pSoap,pMessageParameters);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisherNotify_ResolveHandler(IWSDiscoveryPublisherNotify* This,const WSD_SOAP_MESSAGE *pSoap,IWSDMessageParameters *pMessageParameters) {
+    return This->lpVtbl->ResolveHandler(This,pSoap,pMessageParameters);
+}
 #endif
-    /* IWSDiscoveryProvider methods */
-    STDMETHOD_(HRESULT,SetAddressFamily)(THIS_ DWORD dwAddressFamily) PURE;
-    STDMETHOD_(HRESULT,Attach)(THIS_ IWSDiscoveryProviderNotify *pSink) PURE;
-    STDMETHOD_(HRESULT,Detach)(THIS) PURE;
-    STDMETHOD_(HRESULT,SearchById)(THIS_ LPCWSTR pszId,LPCWSTR pszTag) PURE;
-    STDMETHOD_(HRESULT,SearchByAddress)(THIS_ LPCWSTR pszAddress,LPCWSTR pszTag) PURE;
-    STDMETHOD_(HRESULT,SearchByType)(THIS_ LPCWSTR pszTag) PURE;
-    STDMETHOD_(HRESULT,GetXMLContext)(THIS_ IWSDXMLContext **ppContext) PURE;
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisherNotify_ProbeHandler_Proxy(
+    IWSDiscoveryPublisherNotify* This,
+    const WSD_SOAP_MESSAGE *pSoap,
+    IWSDMessageParameters *pMessageParameters);
+void __RPC_STUB IWSDiscoveryPublisherNotify_ProbeHandler_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisherNotify_ResolveHandler_Proxy(
+    IWSDiscoveryPublisherNotify* This,
+    const WSD_SOAP_MESSAGE *pSoap,
+    IWSDMessageParameters *pMessageParameters);
+void __RPC_STUB IWSDiscoveryPublisherNotify_ResolveHandler_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDiscoveryPublisherNotify_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDiscoveryPublisher interface
+ */
+#ifndef __IWSDiscoveryPublisher_INTERFACE_DEFINED__
+#define __IWSDiscoveryPublisher_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDiscoveryPublisher, 0xae01e1a8, 0x3ff9, 0x4148, 0x81,0x16, 0x05,0x7c,0xc6,0x16,0xfe,0x13);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("ae01e1a8-3ff9-4148-8116-057cc616fe13")
+IWSDiscoveryPublisher : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetAddressFamily(
+        DWORD dwAddressFamily) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterNotificationSink(
+        IWSDiscoveryPublisherNotify *pSink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnRegisterNotificationSink(
+        IWSDiscoveryPublisherNotify *pSink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Publish(
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnPublish(
+        LPCWSTR pszId,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSDXML_ELEMENT *pAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MatchProbe(
+        const WSD_SOAP_MESSAGE *pProbeMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MatchResolve(
+        const WSD_SOAP_MESSAGE *pResolveMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE PublishEx(
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList,
+        const WSDXML_ELEMENT *pHeaderAny,
+        const WSDXML_ELEMENT *pReferenceParameterAny,
+        const WSDXML_ELEMENT *pPolicyAny,
+        const WSDXML_ELEMENT *pEndpointReferenceAny,
+        const WSDXML_ELEMENT *pAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MatchProbeEx(
+        const WSD_SOAP_MESSAGE *pProbeMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList,
+        const WSDXML_ELEMENT *pHeaderAny,
+        const WSDXML_ELEMENT *pReferenceParameterAny,
+        const WSDXML_ELEMENT *pPolicyAny,
+        const WSDXML_ELEMENT *pEndpointReferenceAny,
+        const WSDXML_ELEMENT *pAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MatchResolveEx(
+        const WSD_SOAP_MESSAGE *pResolveMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList,
+        const WSDXML_ELEMENT *pHeaderAny,
+        const WSDXML_ELEMENT *pReferenceParameterAny,
+        const WSDXML_ELEMENT *pPolicyAny,
+        const WSDXML_ELEMENT *pEndpointReferenceAny,
+        const WSDXML_ELEMENT *pAny) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterScopeMatchingRule(
+        IWSDScopeMatchingRule *pScopeMatchingRule) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnRegisterScopeMatchingRule(
+        IWSDScopeMatchingRule *pScopeMatchingRule) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetXMLContext(
+        IWSDXMLContext **ppContext) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDiscoveryPublisher, 0xae01e1a8, 0x3ff9, 0x4148, 0x81,0x16, 0x05,0x7c,0xc6,0x16,0xfe,0x13)
+#endif
+#else
+typedef struct IWSDiscoveryPublisherVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDiscoveryPublisher* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDiscoveryPublisher* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDiscoveryPublisher* This);
+
+    /*** IWSDiscoveryPublisher methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetAddressFamily)(
+        IWSDiscoveryPublisher* This,
+        DWORD dwAddressFamily);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterNotificationSink)(
+        IWSDiscoveryPublisher* This,
+        IWSDiscoveryPublisherNotify *pSink);
+
+    HRESULT (STDMETHODCALLTYPE *UnRegisterNotificationSink)(
+        IWSDiscoveryPublisher* This,
+        IWSDiscoveryPublisherNotify *pSink);
+
+    HRESULT (STDMETHODCALLTYPE *Publish)(
+        IWSDiscoveryPublisher* This,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList);
+
+    HRESULT (STDMETHODCALLTYPE *UnPublish)(
+        IWSDiscoveryPublisher* This,
+        LPCWSTR pszId,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSDXML_ELEMENT *pAny);
+
+    HRESULT (STDMETHODCALLTYPE *MatchProbe)(
+        IWSDiscoveryPublisher* This,
+        const WSD_SOAP_MESSAGE *pProbeMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList);
+
+    HRESULT (STDMETHODCALLTYPE *MatchResolve)(
+        IWSDiscoveryPublisher* This,
+        const WSD_SOAP_MESSAGE *pResolveMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList);
+
+    HRESULT (STDMETHODCALLTYPE *PublishEx)(
+        IWSDiscoveryPublisher* This,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList,
+        const WSDXML_ELEMENT *pHeaderAny,
+        const WSDXML_ELEMENT *pReferenceParameterAny,
+        const WSDXML_ELEMENT *pPolicyAny,
+        const WSDXML_ELEMENT *pEndpointReferenceAny,
+        const WSDXML_ELEMENT *pAny);
+
+    HRESULT (STDMETHODCALLTYPE *MatchProbeEx)(
+        IWSDiscoveryPublisher* This,
+        const WSD_SOAP_MESSAGE *pProbeMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList,
+        const WSDXML_ELEMENT *pHeaderAny,
+        const WSDXML_ELEMENT *pReferenceParameterAny,
+        const WSDXML_ELEMENT *pPolicyAny,
+        const WSDXML_ELEMENT *pEndpointReferenceAny,
+        const WSDXML_ELEMENT *pAny);
+
+    HRESULT (STDMETHODCALLTYPE *MatchResolveEx)(
+        IWSDiscoveryPublisher* This,
+        const WSD_SOAP_MESSAGE *pResolveMessage,
+        IWSDMessageParameters *pMessageParameters,
+        LPCWSTR pszId,
+        ULONGLONG ullMetadataVersion,
+        ULONGLONG ullInstanceId,
+        ULONGLONG ullMessageNumber,
+        LPCWSTR pszSessionId,
+        const WSD_NAME_LIST *pTypesList,
+        const WSD_URI_LIST *pScopesList,
+        const WSD_URI_LIST *pXAddrsList,
+        const WSDXML_ELEMENT *pHeaderAny,
+        const WSDXML_ELEMENT *pReferenceParameterAny,
+        const WSDXML_ELEMENT *pPolicyAny,
+        const WSDXML_ELEMENT *pEndpointReferenceAny,
+        const WSDXML_ELEMENT *pAny);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterScopeMatchingRule)(
+        IWSDiscoveryPublisher* This,
+        IWSDScopeMatchingRule *pScopeMatchingRule);
+
+    HRESULT (STDMETHODCALLTYPE *UnRegisterScopeMatchingRule)(
+        IWSDiscoveryPublisher* This,
+        IWSDScopeMatchingRule *pScopeMatchingRule);
+
+    HRESULT (STDMETHODCALLTYPE *GetXMLContext)(
+        IWSDiscoveryPublisher* This,
+        IWSDXMLContext **ppContext);
 
     END_INTERFACE
+} IWSDiscoveryPublisherVtbl;
+interface IWSDiscoveryPublisher {
+    CONST_VTBL IWSDiscoveryPublisherVtbl* lpVtbl;
 };
-#ifdef COBJMACROS
-#define IWSDiscoveryProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDiscoveryProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDiscoveryProvider_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDiscoveryProvider_SetAddressFamily(This,dwAddressFamily) (This)->lpVtbl->SetAddressFamily(This,dwAddressFamily)
-#define IWSDiscoveryProvider_Attach(This,pSink) (This)->lpVtbl->Attach(This,pSink)
-#define IWSDiscoveryProvider_Detach() (This)->lpVtbl->Detach(This)
-#define IWSDiscoveryProvider_SearchById(This,pszId,pszTag) (This)->lpVtbl->SearchById(This,pszId,pszTag)
-#define IWSDiscoveryProvider_SearchByAddress(This,pszAddress,pszTag) (This)->lpVtbl->SearchByAddress(This,pszAddress,pszTag)
-#define IWSDiscoveryProvider_SearchByType(This,pszTag) (This)->lpVtbl->SearchByType(This,pszTag)
-#define IWSDiscoveryProvider_GetXMLContext(This,ppContext) (This)->lpVtbl->GetXMLContext(This,ppContext)
-#endif /*COBJMACROS*/
 
-#undef  INTERFACE
-#define INTERFACE IWSDiscoveryPublisher
-DECLARE_INTERFACE_(IWSDiscoveryPublisher,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-#endif
-    /* IWSDiscoveryPublisher methods */
-    STDMETHOD_(HRESULT,SetAddressFamily)(THIS_ DWORD dwAddressFamily) PURE;
-    STDMETHOD_(HRESULT,RegisterNotificationSink)(THIS_ IWSDiscoveryPublisherNotify *pSink) PURE;
-    STDMETHOD_(HRESULT,UnRegisterNotificationSink)(THIS_ IWSDiscoveryPublisherNotify *pSink) PURE;
-    STDMETHOD_(HRESULT,Publish)(THIS_ LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,const WSD_URI_LIST *pXAddrsList) PURE;
-    STDMETHOD_(HRESULT,UnPublish)(THIS_ LPCWSTR pszDeviceId,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,const WSDXML_ELEMENT *pAny) PURE;
-    STDMETHOD_(HRESULT,MatchProbe)(THIS_ const WSD_SOAP_MESSAGE *pProbeMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,const WSD_URI_LIST *pXAddrsList) PURE;
-    STDMETHOD_(HRESULT,MatchResolve)(THIS_ const WSD_SOAP_MESSAGE *pResolveMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,const WSD_URI_LIST *pXAddrsList) PURE;
-    STDMETHOD_(HRESULT,PublishEx)(THIS_ LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,const WSDXML_ELEMENT *pAny) PURE;
-    STDMETHOD_(HRESULT,MatchProbeEx)(THIS_ const WSD_SOAP_MESSAGE *pProbeMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,const WSDXML_ELEMENT *pAny) PURE;
-    STDMETHOD_(HRESULT,MatchResolveEx)(THIS_ const WSD_SOAP_MESSAGE *pResolveMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,const WSDXML_ELEMENT *pAny) PURE;
-    STDMETHOD_(HRESULT,RegisterScopeMatchingRule)(THIS_ IWSDScopeMatchingRule *pScopeMatchingRule) PURE;
-    STDMETHOD_(HRESULT,UnRegisterScopeMatchingRule)(THIS_ IWSDScopeMatchingRule *pScopeMatchingRule) PURE;
-    STDMETHOD_(HRESULT,GetXMLContext)(THIS_ IWSDXMLContext **ppContext) PURE;
-
-    END_INTERFACE
-};
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDiscoveryPublisher_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDiscoveryPublisher_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDiscoveryPublisher_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDiscoveryPublisher methods ***/
 #define IWSDiscoveryPublisher_SetAddressFamily(This,dwAddressFamily) (This)->lpVtbl->SetAddressFamily(This,dwAddressFamily)
 #define IWSDiscoveryPublisher_RegisterNotificationSink(This,pSink) (This)->lpVtbl->RegisterNotificationSink(This,pSink)
 #define IWSDiscoveryPublisher_UnRegisterNotificationSink(This,pSink) (This)->lpVtbl->UnRegisterNotificationSink(This,pSink)
-#define IWSDiscoveryPublisher_Publish(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pXAddrsList) (This)->lpVtbl->Publish(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pXAddrsList)
-#define IWSDiscoveryPublisher_UnPublish(This,pszDeviceId,ullInstanceId,ullMessageNumber,pAny) (This)->lpVtbl->UnPublish(This,pszDeviceId,ullInstanceId,ullMessageNumber,pAny)
-#define IWSDiscoveryPublisher_MatchProbe(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pXAddrsList) (This)->lpVtbl->MatchProbe(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pXAddrsList)
-#define IWSDiscoveryPublisher_MatchResolve(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pXAddrsList) (This)->lpVtbl->MatchResolve(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pXAddrsList)
-#define IWSDiscoveryPublisher_PublishEx(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pAny) (This)->lpVtbl->PublishEx(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pAny)
-#define IWSDiscoveryPublisher_MatchProbeEx(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pAny) (This)->lpVtbl->MatchProbeEx(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pAny)
-#define IWSDiscoveryPublisher_MatchResolveEx(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pAny) (This)->lpVtbl->MatchResolveEx(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pAny)
+#define IWSDiscoveryPublisher_Publish(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList) (This)->lpVtbl->Publish(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList)
+#define IWSDiscoveryPublisher_UnPublish(This,pszId,ullInstanceId,ullMessageNumber,pszSessionId,pAny) (This)->lpVtbl->UnPublish(This,pszId,ullInstanceId,ullMessageNumber,pszSessionId,pAny)
+#define IWSDiscoveryPublisher_MatchProbe(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList) (This)->lpVtbl->MatchProbe(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList)
+#define IWSDiscoveryPublisher_MatchResolve(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList) (This)->lpVtbl->MatchResolve(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList)
+#define IWSDiscoveryPublisher_PublishEx(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny) (This)->lpVtbl->PublishEx(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny)
+#define IWSDiscoveryPublisher_MatchProbeEx(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny) (This)->lpVtbl->MatchProbeEx(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny)
+#define IWSDiscoveryPublisher_MatchResolveEx(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny) (This)->lpVtbl->MatchResolveEx(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny)
 #define IWSDiscoveryPublisher_RegisterScopeMatchingRule(This,pScopeMatchingRule) (This)->lpVtbl->RegisterScopeMatchingRule(This,pScopeMatchingRule)
 #define IWSDiscoveryPublisher_UnRegisterScopeMatchingRule(This,pScopeMatchingRule) (This)->lpVtbl->UnRegisterScopeMatchingRule(This,pScopeMatchingRule)
 #define IWSDiscoveryPublisher_GetXMLContext(This,ppContext) (This)->lpVtbl->GetXMLContext(This,ppContext)
-#endif /*COBJMACROS*/
-
-#ifdef __cplusplus
-extern "C" {
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_QueryInterface(IWSDiscoveryPublisher* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDiscoveryPublisher_AddRef(IWSDiscoveryPublisher* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDiscoveryPublisher_Release(IWSDiscoveryPublisher* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDiscoveryPublisher methods ***/
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_SetAddressFamily(IWSDiscoveryPublisher* This,DWORD dwAddressFamily) {
+    return This->lpVtbl->SetAddressFamily(This,dwAddressFamily);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_RegisterNotificationSink(IWSDiscoveryPublisher* This,IWSDiscoveryPublisherNotify *pSink) {
+    return This->lpVtbl->RegisterNotificationSink(This,pSink);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_UnRegisterNotificationSink(IWSDiscoveryPublisher* This,IWSDiscoveryPublisherNotify *pSink) {
+    return This->lpVtbl->UnRegisterNotificationSink(This,pSink);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_Publish(IWSDiscoveryPublisher* This,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,LPCWSTR pszSessionId,const WSD_NAME_LIST *pTypesList,const WSD_URI_LIST *pScopesList,const WSD_URI_LIST *pXAddrsList) {
+    return This->lpVtbl->Publish(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_UnPublish(IWSDiscoveryPublisher* This,LPCWSTR pszId,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,LPCWSTR pszSessionId,const WSDXML_ELEMENT *pAny) {
+    return This->lpVtbl->UnPublish(This,pszId,ullInstanceId,ullMessageNumber,pszSessionId,pAny);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_MatchProbe(IWSDiscoveryPublisher* This,const WSD_SOAP_MESSAGE *pProbeMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,LPCWSTR pszSessionId,const WSD_NAME_LIST *pTypesList,const WSD_URI_LIST *pScopesList,const WSD_URI_LIST *pXAddrsList) {
+    return This->lpVtbl->MatchProbe(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_MatchResolve(IWSDiscoveryPublisher* This,const WSD_SOAP_MESSAGE *pResolveMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,LPCWSTR pszSessionId,const WSD_NAME_LIST *pTypesList,const WSD_URI_LIST *pScopesList,const WSD_URI_LIST *pXAddrsList) {
+    return This->lpVtbl->MatchResolve(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_PublishEx(IWSDiscoveryPublisher* This,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,LPCWSTR pszSessionId,const WSD_NAME_LIST *pTypesList,const WSD_URI_LIST *pScopesList,const WSD_URI_LIST *pXAddrsList,const WSDXML_ELEMENT *pHeaderAny,const WSDXML_ELEMENT *pReferenceParameterAny,const WSDXML_ELEMENT *pPolicyAny,const WSDXML_ELEMENT *pEndpointReferenceAny,const WSDXML_ELEMENT *pAny) {
+    return This->lpVtbl->PublishEx(This,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_MatchProbeEx(IWSDiscoveryPublisher* This,const WSD_SOAP_MESSAGE *pProbeMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,LPCWSTR pszSessionId,const WSD_NAME_LIST *pTypesList,const WSD_URI_LIST *pScopesList,const WSD_URI_LIST *pXAddrsList,const WSDXML_ELEMENT *pHeaderAny,const WSDXML_ELEMENT *pReferenceParameterAny,const WSDXML_ELEMENT *pPolicyAny,const WSDXML_ELEMENT *pEndpointReferenceAny,const WSDXML_ELEMENT *pAny) {
+    return This->lpVtbl->MatchProbeEx(This,pProbeMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_MatchResolveEx(IWSDiscoveryPublisher* This,const WSD_SOAP_MESSAGE *pResolveMessage,IWSDMessageParameters *pMessageParameters,LPCWSTR pszId,ULONGLONG ullMetadataVersion,ULONGLONG ullInstanceId,ULONGLONG ullMessageNumber,LPCWSTR pszSessionId,const WSD_NAME_LIST *pTypesList,const WSD_URI_LIST *pScopesList,const WSD_URI_LIST *pXAddrsList,const WSDXML_ELEMENT *pHeaderAny,const WSDXML_ELEMENT *pReferenceParameterAny,const WSDXML_ELEMENT *pPolicyAny,const WSDXML_ELEMENT *pEndpointReferenceAny,const WSDXML_ELEMENT *pAny) {
+    return This->lpVtbl->MatchResolveEx(This,pResolveMessage,pMessageParameters,pszId,ullMetadataVersion,ullInstanceId,ullMessageNumber,pszSessionId,pTypesList,pScopesList,pXAddrsList,pHeaderAny,pReferenceParameterAny,pPolicyAny,pEndpointReferenceAny,pAny);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_RegisterScopeMatchingRule(IWSDiscoveryPublisher* This,IWSDScopeMatchingRule *pScopeMatchingRule) {
+    return This->lpVtbl->RegisterScopeMatchingRule(This,pScopeMatchingRule);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_UnRegisterScopeMatchingRule(IWSDiscoveryPublisher* This,IWSDScopeMatchingRule *pScopeMatchingRule) {
+    return This->lpVtbl->UnRegisterScopeMatchingRule(This,pScopeMatchingRule);
+}
+static FORCEINLINE HRESULT IWSDiscoveryPublisher_GetXMLContext(IWSDiscoveryPublisher* This,IWSDXMLContext **ppContext) {
+    return This->lpVtbl->GetXMLContext(This,ppContext);
+}
+#endif
 #endif
 
-HRESULT WINAPI WSDCreateDiscoveryProvider(
-  IWSDXMLContext *pContext,
-  IWSDiscoveryProvider **ppProvider
-);
+#endif
 
-HRESULT WINAPI WSDCreateDiscoveryPublisher(
-  IWSDXMLContext *pContext,
-  IWSDiscoveryPublisher **ppPublisher
-);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_SetAddressFamily_Proxy(
+    IWSDiscoveryPublisher* This,
+    DWORD dwAddressFamily);
+void __RPC_STUB IWSDiscoveryPublisher_SetAddressFamily_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_RegisterNotificationSink_Proxy(
+    IWSDiscoveryPublisher* This,
+    IWSDiscoveryPublisherNotify *pSink);
+void __RPC_STUB IWSDiscoveryPublisher_RegisterNotificationSink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_UnRegisterNotificationSink_Proxy(
+    IWSDiscoveryPublisher* This,
+    IWSDiscoveryPublisherNotify *pSink);
+void __RPC_STUB IWSDiscoveryPublisher_UnRegisterNotificationSink_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_Publish_Proxy(
+    IWSDiscoveryPublisher* This,
+    LPCWSTR pszId,
+    ULONGLONG ullMetadataVersion,
+    ULONGLONG ullInstanceId,
+    ULONGLONG ullMessageNumber,
+    LPCWSTR pszSessionId,
+    const WSD_NAME_LIST *pTypesList,
+    const WSD_URI_LIST *pScopesList,
+    const WSD_URI_LIST *pXAddrsList);
+void __RPC_STUB IWSDiscoveryPublisher_Publish_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_UnPublish_Proxy(
+    IWSDiscoveryPublisher* This,
+    LPCWSTR pszId,
+    ULONGLONG ullInstanceId,
+    ULONGLONG ullMessageNumber,
+    LPCWSTR pszSessionId,
+    const WSDXML_ELEMENT *pAny);
+void __RPC_STUB IWSDiscoveryPublisher_UnPublish_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_MatchProbe_Proxy(
+    IWSDiscoveryPublisher* This,
+    const WSD_SOAP_MESSAGE *pProbeMessage,
+    IWSDMessageParameters *pMessageParameters,
+    LPCWSTR pszId,
+    ULONGLONG ullMetadataVersion,
+    ULONGLONG ullInstanceId,
+    ULONGLONG ullMessageNumber,
+    LPCWSTR pszSessionId,
+    const WSD_NAME_LIST *pTypesList,
+    const WSD_URI_LIST *pScopesList,
+    const WSD_URI_LIST *pXAddrsList);
+void __RPC_STUB IWSDiscoveryPublisher_MatchProbe_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_MatchResolve_Proxy(
+    IWSDiscoveryPublisher* This,
+    const WSD_SOAP_MESSAGE *pResolveMessage,
+    IWSDMessageParameters *pMessageParameters,
+    LPCWSTR pszId,
+    ULONGLONG ullMetadataVersion,
+    ULONGLONG ullInstanceId,
+    ULONGLONG ullMessageNumber,
+    LPCWSTR pszSessionId,
+    const WSD_NAME_LIST *pTypesList,
+    const WSD_URI_LIST *pScopesList,
+    const WSD_URI_LIST *pXAddrsList);
+void __RPC_STUB IWSDiscoveryPublisher_MatchResolve_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_PublishEx_Proxy(
+    IWSDiscoveryPublisher* This,
+    LPCWSTR pszId,
+    ULONGLONG ullMetadataVersion,
+    ULONGLONG ullInstanceId,
+    ULONGLONG ullMessageNumber,
+    LPCWSTR pszSessionId,
+    const WSD_NAME_LIST *pTypesList,
+    const WSD_URI_LIST *pScopesList,
+    const WSD_URI_LIST *pXAddrsList,
+    const WSDXML_ELEMENT *pHeaderAny,
+    const WSDXML_ELEMENT *pReferenceParameterAny,
+    const WSDXML_ELEMENT *pPolicyAny,
+    const WSDXML_ELEMENT *pEndpointReferenceAny,
+    const WSDXML_ELEMENT *pAny);
+void __RPC_STUB IWSDiscoveryPublisher_PublishEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_MatchProbeEx_Proxy(
+    IWSDiscoveryPublisher* This,
+    const WSD_SOAP_MESSAGE *pProbeMessage,
+    IWSDMessageParameters *pMessageParameters,
+    LPCWSTR pszId,
+    ULONGLONG ullMetadataVersion,
+    ULONGLONG ullInstanceId,
+    ULONGLONG ullMessageNumber,
+    LPCWSTR pszSessionId,
+    const WSD_NAME_LIST *pTypesList,
+    const WSD_URI_LIST *pScopesList,
+    const WSD_URI_LIST *pXAddrsList,
+    const WSDXML_ELEMENT *pHeaderAny,
+    const WSDXML_ELEMENT *pReferenceParameterAny,
+    const WSDXML_ELEMENT *pPolicyAny,
+    const WSDXML_ELEMENT *pEndpointReferenceAny,
+    const WSDXML_ELEMENT *pAny);
+void __RPC_STUB IWSDiscoveryPublisher_MatchProbeEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_MatchResolveEx_Proxy(
+    IWSDiscoveryPublisher* This,
+    const WSD_SOAP_MESSAGE *pResolveMessage,
+    IWSDMessageParameters *pMessageParameters,
+    LPCWSTR pszId,
+    ULONGLONG ullMetadataVersion,
+    ULONGLONG ullInstanceId,
+    ULONGLONG ullMessageNumber,
+    LPCWSTR pszSessionId,
+    const WSD_NAME_LIST *pTypesList,
+    const WSD_URI_LIST *pScopesList,
+    const WSD_URI_LIST *pXAddrsList,
+    const WSDXML_ELEMENT *pHeaderAny,
+    const WSDXML_ELEMENT *pReferenceParameterAny,
+    const WSDXML_ELEMENT *pPolicyAny,
+    const WSDXML_ELEMENT *pEndpointReferenceAny,
+    const WSDXML_ELEMENT *pAny);
+void __RPC_STUB IWSDiscoveryPublisher_MatchResolveEx_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_RegisterScopeMatchingRule_Proxy(
+    IWSDiscoveryPublisher* This,
+    IWSDScopeMatchingRule *pScopeMatchingRule);
+void __RPC_STUB IWSDiscoveryPublisher_RegisterScopeMatchingRule_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_UnRegisterScopeMatchingRule_Proxy(
+    IWSDiscoveryPublisher* This,
+    IWSDScopeMatchingRule *pScopeMatchingRule);
+void __RPC_STUB IWSDiscoveryPublisher_UnRegisterScopeMatchingRule_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDiscoveryPublisher_GetXMLContext_Proxy(
+    IWSDiscoveryPublisher* This,
+    IWSDXMLContext **ppContext);
+void __RPC_STUB IWSDiscoveryPublisher_GetXMLContext_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDiscoveryPublisher_INTERFACE_DEFINED__ */
+
+HRESULT WINAPI WSDCreateDiscoveryProvider(IWSDXMLContext *pContext, IWSDiscoveryProvider **ppProvider);
+HRESULT WINAPI WSDCreateDiscoveryPublisher(IWSDXMLContext* pContext, IWSDiscoveryPublisher **ppPublisher);
+#if WINVER >= 0x601
+HRESULT WINAPI WSDCreateDiscoveryProvider2(IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDiscoveryProvider **ppProvider);
+HRESULT WINAPI WSDCreateDiscoveryPublisher2(IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDiscoveryPublisher **ppPublisher);
+#endif
+#endif
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_WSDDISCO*/
+
+#endif /* __wsddisco_h__ */
diff --git a/mingw-w64-headers/include/wsddisco.idl b/mingw-w64-headers/include/wsddisco.idl
new file mode 100644
index 0000000..20bf4cb
--- /dev/null
+++ b/mingw-w64-headers/include/wsddisco.idl
@@ -0,0 +1,93 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "objidl.idl";
+import "wsdxmldom.h";
+import "wsdtypes.h";
+
+cpp_quote("")
+interface IWSDXMLContext;
+interface IWSDiscoveryProvider;
+interface IWSDiscoveryProviderNotify;
+interface IWSDiscoveredService;
+interface IWSDiscoveryPublisher;
+interface IWSDiscoveryPublisherNotify;
+interface IWSDScopeMatchingRule;
+
+[object, local, restricted, uuid (fcafe424-fef5-481a-bd9f-33ce0574256f), pointer_default (unique)]
+interface IWSDScopeMatchingRule : IUnknown {
+  HRESULT GetScopeRule ([out] LPCWSTR *ppszScopeMatchingRule);
+  HRESULT MatchScopes ([in] LPCWSTR pszScope1,[in] LPCWSTR pszScope2,[out] BOOL *pfMatch);
+}
+
+[object, local, restricted, uuid (73ee3ced-b6e6-4329-a546-3e8ad46563d2), pointer_default (unique)]
+interface IWSDiscoveryProviderNotify : IUnknown {
+  HRESULT Add ([in] IWSDiscoveredService *pService);
+  HRESULT Remove ([in] IWSDiscoveredService *pService);
+  HRESULT SearchFailed ([in] HRESULT hr,[in, optional] LPCWSTR pszTag);
+  HRESULT SearchComplete ([in, optional] LPCWSTR pszTag);
+}
+
+[object, local, restricted, uuid (8ffc8e55-F0EB-480f-88b7-B435DD281D45), pointer_default (unique)]
+interface IWSDiscoveryProvider : IUnknown {
+  HRESULT SetAddressFamily ([in] DWORD dwAddressFamily);
+  HRESULT Attach ([in] IWSDiscoveryProviderNotify *pSink);
+  HRESULT Detach ();
+  HRESULT SearchById ([in] LPCWSTR pszId,[in, optional] LPCWSTR pszTag);
+  HRESULT SearchByAddress ([in] LPCWSTR pszAddress,[in, optional] LPCWSTR pszTag);
+  HRESULT SearchByType ([in, optional] const WSD_NAME_LIST *pTypesList,[in, optional] const WSD_URI_LIST *pScopesList,[in, optional] LPCWSTR pszMatchBy,[in, optional] LPCWSTR pszTag);
+  HRESULT GetXMLContext ([out] IWSDXMLContext **ppContext);
+}
+
+[object, local, restricted, uuid (4bad8a3b-B374-4420-9632-AAC945B374AA), pointer_default (unique)]
+interface IWSDiscoveredService : IUnknown {
+  HRESULT GetEndpointReference ([out] WSD_ENDPOINT_REFERENCE **ppEndpointReference);
+  HRESULT GetTypes ([out] WSD_NAME_LIST **ppTypesList);
+  HRESULT GetScopes ([out] WSD_URI_LIST **ppScopesList);
+  HRESULT GetXAddrs ([out] WSD_URI_LIST **ppXAddrsList);
+  HRESULT GetMetadataVersion ([out] ULONGLONG *pullMetadataVersion);
+  HRESULT GetExtendedDiscoXML ([out] WSDXML_ELEMENT **ppHeaderAny,[out] WSDXML_ELEMENT **ppBodyAny);
+  HRESULT GetProbeResolveTag ([out] LPCWSTR *ppszTag);
+  HRESULT GetRemoteTransportAddress ([out] LPCWSTR *ppszRemoteTransportAddress);
+  HRESULT GetLocalTransportAddress ([out] LPCWSTR *ppszLocalTransportAddress);
+  HRESULT GetLocalInterfaceGUID ([out] GUID *pGuid);
+  HRESULT GetInstanceId ([out] ULONGLONG *pullInstanceId);
+}
+
+[object, local, restricted, uuid (e67651b0-337a-4b3c-9758-733388568251), pointer_default (unique)]
+interface IWSDiscoveryPublisherNotify : IUnknown {
+  HRESULT ProbeHandler ([in] const WSD_SOAP_MESSAGE *pSoap,[in] IWSDMessageParameters *pMessageParameters);
+  HRESULT ResolveHandler ([in] const WSD_SOAP_MESSAGE *pSoap,[in] IWSDMessageParameters *pMessageParameters);
+}
+
+[object, local, restricted, uuid (AE01E1A8-3ff9-4148-8116-057cc616fe13), pointer_default (unique)]
+interface IWSDiscoveryPublisher : IUnknown {
+  HRESULT SetAddressFamily ([in] DWORD dwAddressFamily);
+  HRESULT RegisterNotificationSink ([in] IWSDiscoveryPublisherNotify *pSink);
+  HRESULT UnRegisterNotificationSink ([in] IWSDiscoveryPublisherNotify *pSink);
+  HRESULT Publish ([in] LPCWSTR pszId,[in] ULONGLONG ullMetadataVersion,[in] ULONGLONG ullInstanceId,[in] ULONGLONG ullMessageNumber,[in, optional] LPCWSTR pszSessionId,[in, optional] const WSD_NAME_LIST *pTypesList,[in, optional] const WSD_URI_LIST *pScopesList,[in, optional] const WSD_URI_LIST *pXAddrsList);
+  HRESULT UnPublish ([in] LPCWSTR pszId,[in] ULONGLONG ullInstanceId,[in] ULONGLONG ullMessageNumber,[in, optional] LPCWSTR pszSessionId,[in, optional] const WSDXML_ELEMENT *pAny);
+  HRESULT MatchProbe ([in] const WSD_SOAP_MESSAGE *pProbeMessage,[in] IWSDMessageParameters *pMessageParameters,[in] LPCWSTR pszId,[in] ULONGLONG ullMetadataVersion,[in] ULONGLONG ullInstanceId,[in] ULONGLONG ullMessageNumber,[in, optional] LPCWSTR pszSessionId,[in, optional] const WSD_NAME_LIST *pTypesList,[in, optional] const WSD_URI_LIST *pScopesList,[in, optional] const WSD_URI_LIST *pXAddrsList);
+  HRESULT MatchResolve ([in] const WSD_SOAP_MESSAGE *pResolveMessage,[in] IWSDMessageParameters *pMessageParameters,[in] LPCWSTR pszId,[in] ULONGLONG ullMetadataVersion,[in] ULONGLONG ullInstanceId,[in] ULONGLONG ullMessageNumber,[in, optional] LPCWSTR pszSessionId,[in, optional] const WSD_NAME_LIST *pTypesList,[in, optional] const WSD_URI_LIST *pScopesList,[in, optional] const WSD_URI_LIST *pXAddrsList);
+  HRESULT PublishEx ([in] LPCWSTR pszId,[in] ULONGLONG ullMetadataVersion,[in] ULONGLONG ullInstanceId,[in] ULONGLONG ullMessageNumber,[in, optional] LPCWSTR pszSessionId,[in, optional] const WSD_NAME_LIST *pTypesList,[in, optional] const WSD_URI_LIST *pScopesList,[in, optional] const WSD_URI_LIST *pXAddrsList,[in, optional] const WSDXML_ELEMENT *pHeaderAny,[in, optional] const WSDXML_ELEMENT *pReferenceParameterAny,[in, optional] const WSDXML_ELEMENT *pPolicyAny,[in, optional] const WSDXML_ELEMENT *pEndpointReferenceAny,[in, optional] const WSDXML_ELEMENT *pAny);
+  HRESULT MatchProbeEx ([in] const WSD_SOAP_MESSAGE *pProbeMessage,[in] IWSDMessageParameters *pMessageParameters,[in] LPCWSTR pszId,[in] ULONGLONG ullMetadataVersion,[in] ULONGLONG ullInstanceId,[in] ULONGLONG ullMessageNumber,[in, optional] LPCWSTR pszSessionId,[in, optional] const WSD_NAME_LIST *pTypesList,[in, optional] const WSD_URI_LIST *pScopesList,[in, optional] const WSD_URI_LIST *pXAddrsList,[in, optional] const WSDXML_ELEMENT *pHeaderAny,[in, optional] const WSDXML_ELEMENT *pReferenceParameterAny,[in, optional] const WSDXML_ELEMENT *pPolicyAny,[in, optional] const WSDXML_ELEMENT *pEndpointReferenceAny,[in, optional] const WSDXML_ELEMENT *pAny);
+  HRESULT MatchResolveEx ([in] const WSD_SOAP_MESSAGE *pResolveMessage,[in] IWSDMessageParameters *pMessageParameters,[in] LPCWSTR pszId,[in] ULONGLONG ullMetadataVersion,[in] ULONGLONG ullInstanceId,[in] ULONGLONG ullMessageNumber,[in, optional] LPCWSTR pszSessionId,[in, optional] const WSD_NAME_LIST *pTypesList,[in, optional] const WSD_URI_LIST *pScopesList,[in, optional] const WSD_URI_LIST *pXAddrsList,[in, optional] const WSDXML_ELEMENT *pHeaderAny,[in, optional] const WSDXML_ELEMENT *pReferenceParameterAny,[in, optional] const WSDXML_ELEMENT *pPolicyAny,[in, optional] const WSDXML_ELEMENT *pEndpointReferenceAny,[in, optional] const WSDXML_ELEMENT *pAny);
+  HRESULT RegisterScopeMatchingRule ([in] IWSDScopeMatchingRule *pScopeMatchingRule);
+  HRESULT UnRegisterScopeMatchingRule ([in] IWSDScopeMatchingRule *pScopeMatchingRule);
+  HRESULT GetXMLContext ([out] IWSDXMLContext **ppContext);
+}
+
+cpp_quote("HRESULT WINAPI WSDCreateDiscoveryProvider(IWSDXMLContext *pContext, IWSDiscoveryProvider **ppProvider);")
+cpp_quote("HRESULT WINAPI WSDCreateDiscoveryPublisher(IWSDXMLContext* pContext, IWSDiscoveryPublisher **ppPublisher);")
+cpp_quote("#if WINVER >= 0x601")
+cpp_quote("HRESULT WINAPI WSDCreateDiscoveryProvider2(IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDiscoveryProvider **ppProvider);")
+cpp_quote("HRESULT WINAPI WSDCreateDiscoveryPublisher2(IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDiscoveryPublisher **ppPublisher);")
+cpp_quote("#endif")
+
+cpp_quote("#endif")
diff --git a/mingw-w64-headers/include/wsdhost.h b/mingw-w64-headers/include/wsdhost.h
index 665cb10..39f6865 100644
--- a/mingw-w64-headers/include/wsdhost.h
+++ b/mingw-w64-headers/include/wsdhost.h
@@ -1,117 +1,632 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef _INC_WSDHOST
-#define _INC_WSDHOST
+/*** Autogenerated by WIDL 1.6 from wsdhost.idl - Do not edit ***/
 
-#ifndef _INC_WSDAPI
-#error Please include wsdapi.h instead of this header. This header cannot be used directly.
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
 #endif
 
-#if (_WIN32_WINNT >= 0x0600)
+#include <rpc.h>
+#include <rpcndr.h>
 
-#undef  INTERFACE
-#define INTERFACE IWSDServiceMessaging
-DECLARE_INTERFACE_(IWSDServiceMessaging,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
 #endif
-    /* IWSDServiceMessaging methods */
-    STDMETHOD_(HRESULT,SendResponse)(THIS_ void *pBody,WSD_OPERATION *pOperation,IWSDMessageParameters *pMessageParameters) PURE;
-    STDMETHOD_(HRESULT,FaultRequest)(THIS_ WSD_SOAP_HEADER *pRequestHeader,IWSDMessageParameters *pMessageParameters,WSD_SOAP_FAULT *pFault) PURE;
 
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IWSDServiceMessaging_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDServiceMessaging_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDServiceMessaging_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDServiceMessaging_FaultRequest(This,pRequestHeader,pMessageParameters,pFault) (This)->lpVtbl->FaultRequest(This,pRequestHeader,pMessageParameters,pFault)
-#define IWSDServiceMessaging_SendResponse(This,pBody,pOperation,pMessageParameters) (This)->lpVtbl->SendResponse(This,pBody,pOperation,pMessageParameters)
-#endif /*COBJMACROS*/
+#ifndef __wsdhost_h__
+#define __wsdhost_h__
 
-#undef  INTERFACE
-#define INTERFACE IWSDDeviceHostNotify
-DECLARE_INTERFACE_(IWSDDeviceHostNotify,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+/* Forward declarations */
+
+#ifndef __IWSDDeviceHostNotify_FWD_DEFINED__
+#define __IWSDDeviceHostNotify_FWD_DEFINED__
+typedef interface IWSDDeviceHostNotify IWSDDeviceHostNotify;
 #endif
-    /* IWSDDeviceHostNotify methods */
-    STDMETHOD_(HRESULT,GetService)(THIS_ LPCWSTR pszServiceId,IUnknown **ppService) PURE;
 
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IWSDDeviceHostNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDDeviceHostNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDDeviceHostNotify_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDDeviceHostNotify_GetService(This,pszServiceId,ppService) (This)->lpVtbl->GetService(This,pszServiceId,ppService)
-#endif /*COBJMACROS*/
-
-#undef  INTERFACE
-#define INTERFACE IWSDDeviceHost
-DECLARE_INTERFACE_(IWSDDeviceHost,IUnknown) {
-    BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
+#ifndef __IWSDServiceMessaging_FWD_DEFINED__
+#define __IWSDServiceMessaging_FWD_DEFINED__
+typedef interface IWSDServiceMessaging IWSDServiceMessaging;
 #endif
-    /* IWSDDeviceHost methods */
-    STDMETHOD_(HRESULT,Init)(THIS_ LPCWSTR pszLocalId,DWORD dwHostAddressCount) PURE;
-    STDMETHOD_(HRESULT,Start)(THIS_ ULONGLONG ullInstanceId,const WSD_URI_LIST *pScopeList,IWSDDeviceHostNotify *pNotificationSink) PURE;
-    STDMETHOD_(HRESULT,Stop)(THIS) PURE;
-    STDMETHOD_(HRESULT,Terminate)(THIS) PURE;
-    STDMETHOD_(HRESULT,RegisterPortType)(THIS_ const WSD_PORT_TYPE *pPortType) PURE;
-    STDMETHOD_(HRESULT,SetMetadata)(THIS_ const WSD_THIS_MODEL_METADATA *pThisModelMetadata,const WSD_THIS_DEVICE_METADATA *pThisDeviceMetadata,const WSD_METADATA_SECTION_LIST *pCustomMetadata) PURE;
-    STDMETHOD_(HRESULT,RegisterService)(THIS_ LPCWSTR pszServiceId,IUnknown *pService) PURE;
-    STDMETHOD_(HRESULT,RetireService)(THIS_ LPCWSTR pszServiceId) PURE;
-    STDMETHOD_(HRESULT,AddDynamicService)(THIS_ LPCWSTR pszServiceId,IUnknown *pService) PURE;
-    STDMETHOD_(HRESULT,RemoveDynamicService)(THIS_ LPCWSTR pszServiceId) PURE;
-    STDMETHOD_(HRESULT,SetServiceDiscoverable)(THIS_ const WCHAR *pszServiceId,WINBOOL fDiscoverable) PURE;
-    STDMETHOD_(HRESULT,SignalEvent)(THIS_ LPCWSTR pszServiceId,const void *pBody,const WSD_OPERATION *pOperation) PURE;
 
-    END_INTERFACE
-};
-#ifdef COBJMACROS
-#define IWSDDeviceHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
-#define IWSDDeviceHost_AddRef(This) (This)->lpVtbl->AddRef(This)
-#define IWSDDeviceHost_Release(This) (This)->lpVtbl->Release(This)
-#define IWSDDeviceHost_Init(This,pszLocalId,dwHostAddressCount) (This)->lpVtbl->Init(This,pszLocalId,dwHostAddressCount)
-#define IWSDDeviceHost_Start(This,ullInstanceId,pScopeList,pNotificationSink) (This)->lpVtbl->Start(This,ullInstanceId,pScopeList,pNotificationSink)
-#define IWSDDeviceHost_Stop() (This)->lpVtbl->Stop(This)
-#define IWSDDeviceHost_Terminate() (This)->lpVtbl->Terminate(This)
-#define IWSDDeviceHost_RegisterPortType(This,pPortType) (This)->lpVtbl->RegisterPortType(This,pPortType)
-#define IWSDDeviceHost_SetMetadata(This,pThisModelMetadata,pThisDeviceMetadata,pCustomMetadata) (This)->lpVtbl->SetMetadata(This,pThisModelMetadata,pThisDeviceMetadata,pCustomMetadata)
-#define IWSDDeviceHost_RegisterService(This,pszServiceId,pService) (This)->lpVtbl->RegisterService(This,pszServiceId,pService)
-#define IWSDDeviceHost_RetireService(This,pszServiceId) (This)->lpVtbl->RetireService(This,pszServiceId)
-#define IWSDDeviceHost_AddDynamicService(This,pszServiceId,pService) (This)->lpVtbl->AddDynamicService(This,pszServiceId,pService)
-#define IWSDDeviceHost_RemoveDynamicService(This,pszServiceId) (This)->lpVtbl->RemoveDynamicService(This,pszServiceId)
-#define IWSDDeviceHost_SetServiceDiscoverable(This,pszServiceId,fDiscoverable) (This)->lpVtbl->SetServiceDiscoverable(This,pszServiceId,fDiscoverable)
-#define IWSDDeviceHost_SignalEvent(This,pszServiceId,pBody,pOperation) (This)->lpVtbl->SignalEvent(This,pszServiceId,pBody,pOperation)
-#endif /*COBJMACROS*/
+#ifndef __IWSDDeviceHost_FWD_DEFINED__
+#define __IWSDDeviceHost_FWD_DEFINED__
+typedef interface IWSDDeviceHost IWSDDeviceHost;
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+#include <wsdxmldom.h>
+#include <wsdtypes.h>
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-HRESULT WINAPI WSDCreateDeviceHost(const WCHAR *pszLocalId, IWSDXMLContext *pContext, IWSDDeviceHost **ppDeviceHost);
-HRESULT WSDCreateDeviceHostAdvanced(const WCHAR *pszLocalId, IWSDXMLContext *pContext, IWSDAddress **ppHostAddresses, DWORD dwHostAddressCount, IWSDDeviceHost **ppDeviceHost);
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifndef __IWSDAddress_FWD_DEFINED__
+#define __IWSDAddress_FWD_DEFINED__
+typedef interface IWSDAddress IWSDAddress;
+#endif
+
+#ifndef __IWSDXMLContext_FWD_DEFINED__
+#define __IWSDXMLContext_FWD_DEFINED__
+typedef interface IWSDXMLContext IWSDXMLContext;
+#endif
+
+#ifndef __IWSDDeviceHost_FWD_DEFINED__
+#define __IWSDDeviceHost_FWD_DEFINED__
+typedef interface IWSDDeviceHost IWSDDeviceHost;
+#endif
+
+#ifndef __IWSDDeviceHostNotify_FWD_DEFINED__
+#define __IWSDDeviceHostNotify_FWD_DEFINED__
+typedef interface IWSDDeviceHostNotify IWSDDeviceHostNotify;
+#endif
+
+#ifndef __IWSDServiceMessaging_FWD_DEFINED__
+#define __IWSDServiceMessaging_FWD_DEFINED__
+typedef interface IWSDServiceMessaging IWSDServiceMessaging;
+#endif
+
+/*****************************************************************************
+ * IWSDDeviceHostNotify interface
+ */
+#ifndef __IWSDDeviceHostNotify_INTERFACE_DEFINED__
+#define __IWSDDeviceHostNotify_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDDeviceHostNotify, 0xb5bee9f9, 0xeeda, 0x41fe, 0x96,0xf7, 0xf4,0x5e,0x14,0x99,0x0f,0xb0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b5bee9f9-eeda-41fe-96f7-f45e14990fb0")
+IWSDDeviceHostNotify : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE GetService(
+        LPCWSTR pszServiceId,
+        IUnknown **ppService) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDDeviceHostNotify, 0xb5bee9f9, 0xeeda, 0x41fe, 0x96,0xf7, 0xf4,0x5e,0x14,0x99,0x0f,0xb0)
+#endif
+#else
+typedef struct IWSDDeviceHostNotifyVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDDeviceHostNotify* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDDeviceHostNotify* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDDeviceHostNotify* This);
+
+    /*** IWSDDeviceHostNotify methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetService)(
+        IWSDDeviceHostNotify* This,
+        LPCWSTR pszServiceId,
+        IUnknown **ppService);
+
+    END_INTERFACE
+} IWSDDeviceHostNotifyVtbl;
+interface IWSDDeviceHostNotify {
+    CONST_VTBL IWSDDeviceHostNotifyVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDDeviceHostNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDDeviceHostNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDDeviceHostNotify_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDDeviceHostNotify methods ***/
+#define IWSDDeviceHostNotify_GetService(This,pszServiceId,ppService) (This)->lpVtbl->GetService(This,pszServiceId,ppService)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDDeviceHostNotify_QueryInterface(IWSDDeviceHostNotify* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDDeviceHostNotify_AddRef(IWSDDeviceHostNotify* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDDeviceHostNotify_Release(IWSDDeviceHostNotify* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDDeviceHostNotify methods ***/
+static FORCEINLINE HRESULT IWSDDeviceHostNotify_GetService(IWSDDeviceHostNotify* This,LPCWSTR pszServiceId,IUnknown **ppService) {
+    return This->lpVtbl->GetService(This,pszServiceId,ppService);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDDeviceHostNotify_GetService_Proxy(
+    IWSDDeviceHostNotify* This,
+    LPCWSTR pszServiceId,
+    IUnknown **ppService);
+void __RPC_STUB IWSDDeviceHostNotify_GetService_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDDeviceHostNotify_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDServiceMessaging interface
+ */
+#ifndef __IWSDServiceMessaging_INTERFACE_DEFINED__
+#define __IWSDServiceMessaging_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDServiceMessaging, 0x94974cf4, 0x0cab, 0x460d, 0xa3,0xf6, 0x7a,0x0a,0xd6,0x23,0xc0,0xe6);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("94974cf4-0cab-460d-a3f6-7a0ad623c0e6")
+IWSDServiceMessaging : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SendResponse(
+        void *pBody,
+        WSD_OPERATION *pOperation,
+        IWSDMessageParameters *pMessageParameters) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE FaultRequest(
+        WSD_SOAP_HEADER *pRequestHeader,
+        IWSDMessageParameters *pMessageParameters,
+        WSD_SOAP_FAULT *pFault) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDServiceMessaging, 0x94974cf4, 0x0cab, 0x460d, 0xa3,0xf6, 0x7a,0x0a,0xd6,0x23,0xc0,0xe6)
+#endif
+#else
+typedef struct IWSDServiceMessagingVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDServiceMessaging* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDServiceMessaging* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDServiceMessaging* This);
+
+    /*** IWSDServiceMessaging methods ***/
+    HRESULT (STDMETHODCALLTYPE *SendResponse)(
+        IWSDServiceMessaging* This,
+        void *pBody,
+        WSD_OPERATION *pOperation,
+        IWSDMessageParameters *pMessageParameters);
+
+    HRESULT (STDMETHODCALLTYPE *FaultRequest)(
+        IWSDServiceMessaging* This,
+        WSD_SOAP_HEADER *pRequestHeader,
+        IWSDMessageParameters *pMessageParameters,
+        WSD_SOAP_FAULT *pFault);
+
+    END_INTERFACE
+} IWSDServiceMessagingVtbl;
+interface IWSDServiceMessaging {
+    CONST_VTBL IWSDServiceMessagingVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDServiceMessaging_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDServiceMessaging_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDServiceMessaging_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDServiceMessaging methods ***/
+#define IWSDServiceMessaging_SendResponse(This,pBody,pOperation,pMessageParameters) (This)->lpVtbl->SendResponse(This,pBody,pOperation,pMessageParameters)
+#define IWSDServiceMessaging_FaultRequest(This,pRequestHeader,pMessageParameters,pFault) (This)->lpVtbl->FaultRequest(This,pRequestHeader,pMessageParameters,pFault)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDServiceMessaging_QueryInterface(IWSDServiceMessaging* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDServiceMessaging_AddRef(IWSDServiceMessaging* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDServiceMessaging_Release(IWSDServiceMessaging* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDServiceMessaging methods ***/
+static FORCEINLINE HRESULT IWSDServiceMessaging_SendResponse(IWSDServiceMessaging* This,void *pBody,WSD_OPERATION *pOperation,IWSDMessageParameters *pMessageParameters) {
+    return This->lpVtbl->SendResponse(This,pBody,pOperation,pMessageParameters);
+}
+static FORCEINLINE HRESULT IWSDServiceMessaging_FaultRequest(IWSDServiceMessaging* This,WSD_SOAP_HEADER *pRequestHeader,IWSDMessageParameters *pMessageParameters,WSD_SOAP_FAULT *pFault) {
+    return This->lpVtbl->FaultRequest(This,pRequestHeader,pMessageParameters,pFault);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDServiceMessaging_SendResponse_Proxy(
+    IWSDServiceMessaging* This,
+    void *pBody,
+    WSD_OPERATION *pOperation,
+    IWSDMessageParameters *pMessageParameters);
+void __RPC_STUB IWSDServiceMessaging_SendResponse_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDServiceMessaging_FaultRequest_Proxy(
+    IWSDServiceMessaging* This,
+    WSD_SOAP_HEADER *pRequestHeader,
+    IWSDMessageParameters *pMessageParameters,
+    WSD_SOAP_FAULT *pFault);
+void __RPC_STUB IWSDServiceMessaging_FaultRequest_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDServiceMessaging_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IWSDDeviceHost interface
+ */
+#ifndef __IWSDDeviceHost_INTERFACE_DEFINED__
+#define __IWSDDeviceHost_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IWSDDeviceHost, 0x917fe891, 0x3d13, 0x4138, 0x98,0x09, 0x93,0x4c,0x8a,0xbe,0xb1,0x2c);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("917fe891-3d13-4138-9809-934c8abeb12c")
+IWSDDeviceHost : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Init(
+        LPCWSTR pszLocalId,
+        IWSDXMLContext *pContext,
+        IWSDAddress **ppHostAddresses,
+        DWORD dwHostAddressCount) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Start(
+        ULONGLONG ullInstanceId,
+        const WSD_URI_LIST *pScopeList,
+        IWSDDeviceHostNotify *pNotificationSink) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Stop(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Terminate(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterPortType(
+        const WSD_PORT_TYPE *pPortType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetMetadata(
+        const WSD_THIS_MODEL_METADATA *pThisModelMetadata,
+        const WSD_THIS_DEVICE_METADATA *pThisDeviceMetadata,
+        const WSD_HOST_METADATA *pHostMetadata,
+        const WSD_METADATA_SECTION_LIST *pCustomMetadata) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterService(
+        LPCWSTR pszServiceId,
+        IUnknown *pService) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RetireService(
+        LPCWSTR pszServiceId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddDynamicService(
+        LPCWSTR pszServiceId,
+        LPCWSTR pszEndpointAddress,
+        const WSD_PORT_TYPE *pPortType,
+        const WSDXML_NAME *pPortName,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pService) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveDynamicService(
+        LPCWSTR pszServiceId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetServiceDiscoverable(
+        LPCWSTR pszServiceId,
+        WINBOOL fDiscoverable) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SignalEvent(
+        LPCWSTR pszServiceId,
+        const void *pBody,
+        const WSD_OPERATION *pOperation) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDDeviceHost, 0x917fe891, 0x3d13, 0x4138, 0x98,0x09, 0x93,0x4c,0x8a,0xbe,0xb1,0x2c)
+#endif
+#else
+typedef struct IWSDDeviceHostVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDDeviceHost* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDDeviceHost* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDDeviceHost* This);
+
+    /*** IWSDDeviceHost methods ***/
+    HRESULT (STDMETHODCALLTYPE *Init)(
+        IWSDDeviceHost* This,
+        LPCWSTR pszLocalId,
+        IWSDXMLContext *pContext,
+        IWSDAddress **ppHostAddresses,
+        DWORD dwHostAddressCount);
+
+    HRESULT (STDMETHODCALLTYPE *Start)(
+        IWSDDeviceHost* This,
+        ULONGLONG ullInstanceId,
+        const WSD_URI_LIST *pScopeList,
+        IWSDDeviceHostNotify *pNotificationSink);
+
+    HRESULT (STDMETHODCALLTYPE *Stop)(
+        IWSDDeviceHost* This);
+
+    HRESULT (STDMETHODCALLTYPE *Terminate)(
+        IWSDDeviceHost* This);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterPortType)(
+        IWSDDeviceHost* This,
+        const WSD_PORT_TYPE *pPortType);
+
+    HRESULT (STDMETHODCALLTYPE *SetMetadata)(
+        IWSDDeviceHost* This,
+        const WSD_THIS_MODEL_METADATA *pThisModelMetadata,
+        const WSD_THIS_DEVICE_METADATA *pThisDeviceMetadata,
+        const WSD_HOST_METADATA *pHostMetadata,
+        const WSD_METADATA_SECTION_LIST *pCustomMetadata);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterService)(
+        IWSDDeviceHost* This,
+        LPCWSTR pszServiceId,
+        IUnknown *pService);
+
+    HRESULT (STDMETHODCALLTYPE *RetireService)(
+        IWSDDeviceHost* This,
+        LPCWSTR pszServiceId);
+
+    HRESULT (STDMETHODCALLTYPE *AddDynamicService)(
+        IWSDDeviceHost* This,
+        LPCWSTR pszServiceId,
+        LPCWSTR pszEndpointAddress,
+        const WSD_PORT_TYPE *pPortType,
+        const WSDXML_NAME *pPortName,
+        const WSDXML_ELEMENT *pAny,
+        IUnknown *pService);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveDynamicService)(
+        IWSDDeviceHost* This,
+        LPCWSTR pszServiceId);
+
+    HRESULT (STDMETHODCALLTYPE *SetServiceDiscoverable)(
+        IWSDDeviceHost* This,
+        LPCWSTR pszServiceId,
+        WINBOOL fDiscoverable);
+
+    HRESULT (STDMETHODCALLTYPE *SignalEvent)(
+        IWSDDeviceHost* This,
+        LPCWSTR pszServiceId,
+        const void *pBody,
+        const WSD_OPERATION *pOperation);
+
+    END_INTERFACE
+} IWSDDeviceHostVtbl;
+interface IWSDDeviceHost {
+    CONST_VTBL IWSDDeviceHostVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IWSDDeviceHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWSDDeviceHost_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWSDDeviceHost_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDDeviceHost methods ***/
+#define IWSDDeviceHost_Init(This,pszLocalId,pContext,ppHostAddresses,dwHostAddressCount) (This)->lpVtbl->Init(This,pszLocalId,pContext,ppHostAddresses,dwHostAddressCount)
+#define IWSDDeviceHost_Start(This,ullInstanceId,pScopeList,pNotificationSink) (This)->lpVtbl->Start(This,ullInstanceId,pScopeList,pNotificationSink)
+#define IWSDDeviceHost_Stop(This) (This)->lpVtbl->Stop(This)
+#define IWSDDeviceHost_Terminate(This) (This)->lpVtbl->Terminate(This)
+#define IWSDDeviceHost_RegisterPortType(This,pPortType) (This)->lpVtbl->RegisterPortType(This,pPortType)
+#define IWSDDeviceHost_SetMetadata(This,pThisModelMetadata,pThisDeviceMetadata,pHostMetadata,pCustomMetadata) (This)->lpVtbl->SetMetadata(This,pThisModelMetadata,pThisDeviceMetadata,pHostMetadata,pCustomMetadata)
+#define IWSDDeviceHost_RegisterService(This,pszServiceId,pService) (This)->lpVtbl->RegisterService(This,pszServiceId,pService)
+#define IWSDDeviceHost_RetireService(This,pszServiceId) (This)->lpVtbl->RetireService(This,pszServiceId)
+#define IWSDDeviceHost_AddDynamicService(This,pszServiceId,pszEndpointAddress,pPortType,pPortName,pAny,pService) (This)->lpVtbl->AddDynamicService(This,pszServiceId,pszEndpointAddress,pPortType,pPortName,pAny,pService)
+#define IWSDDeviceHost_RemoveDynamicService(This,pszServiceId) (This)->lpVtbl->RemoveDynamicService(This,pszServiceId)
+#define IWSDDeviceHost_SetServiceDiscoverable(This,pszServiceId,fDiscoverable) (This)->lpVtbl->SetServiceDiscoverable(This,pszServiceId,fDiscoverable)
+#define IWSDDeviceHost_SignalEvent(This,pszServiceId,pBody,pOperation) (This)->lpVtbl->SignalEvent(This,pszServiceId,pBody,pOperation)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDDeviceHost_QueryInterface(IWSDDeviceHost* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDDeviceHost_AddRef(IWSDDeviceHost* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDDeviceHost_Release(IWSDDeviceHost* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDDeviceHost methods ***/
+static FORCEINLINE HRESULT IWSDDeviceHost_Init(IWSDDeviceHost* This,LPCWSTR pszLocalId,IWSDXMLContext *pContext,IWSDAddress **ppHostAddresses,DWORD dwHostAddressCount) {
+    return This->lpVtbl->Init(This,pszLocalId,pContext,ppHostAddresses,dwHostAddressCount);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_Start(IWSDDeviceHost* This,ULONGLONG ullInstanceId,const WSD_URI_LIST *pScopeList,IWSDDeviceHostNotify *pNotificationSink) {
+    return This->lpVtbl->Start(This,ullInstanceId,pScopeList,pNotificationSink);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_Stop(IWSDDeviceHost* This) {
+    return This->lpVtbl->Stop(This);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_Terminate(IWSDDeviceHost* This) {
+    return This->lpVtbl->Terminate(This);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_RegisterPortType(IWSDDeviceHost* This,const WSD_PORT_TYPE *pPortType) {
+    return This->lpVtbl->RegisterPortType(This,pPortType);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_SetMetadata(IWSDDeviceHost* This,const WSD_THIS_MODEL_METADATA *pThisModelMetadata,const WSD_THIS_DEVICE_METADATA *pThisDeviceMetadata,const WSD_HOST_METADATA *pHostMetadata,const WSD_METADATA_SECTION_LIST *pCustomMetadata) {
+    return This->lpVtbl->SetMetadata(This,pThisModelMetadata,pThisDeviceMetadata,pHostMetadata,pCustomMetadata);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_RegisterService(IWSDDeviceHost* This,LPCWSTR pszServiceId,IUnknown *pService) {
+    return This->lpVtbl->RegisterService(This,pszServiceId,pService);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_RetireService(IWSDDeviceHost* This,LPCWSTR pszServiceId) {
+    return This->lpVtbl->RetireService(This,pszServiceId);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_AddDynamicService(IWSDDeviceHost* This,LPCWSTR pszServiceId,LPCWSTR pszEndpointAddress,const WSD_PORT_TYPE *pPortType,const WSDXML_NAME *pPortName,const WSDXML_ELEMENT *pAny,IUnknown *pService) {
+    return This->lpVtbl->AddDynamicService(This,pszServiceId,pszEndpointAddress,pPortType,pPortName,pAny,pService);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_RemoveDynamicService(IWSDDeviceHost* This,LPCWSTR pszServiceId) {
+    return This->lpVtbl->RemoveDynamicService(This,pszServiceId);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_SetServiceDiscoverable(IWSDDeviceHost* This,LPCWSTR pszServiceId,WINBOOL fDiscoverable) {
+    return This->lpVtbl->SetServiceDiscoverable(This,pszServiceId,fDiscoverable);
+}
+static FORCEINLINE HRESULT IWSDDeviceHost_SignalEvent(IWSDDeviceHost* This,LPCWSTR pszServiceId,const void *pBody,const WSD_OPERATION *pOperation) {
+    return This->lpVtbl->SignalEvent(This,pszServiceId,pBody,pOperation);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_Init_Proxy(
+    IWSDDeviceHost* This,
+    LPCWSTR pszLocalId,
+    IWSDXMLContext *pContext,
+    IWSDAddress **ppHostAddresses,
+    DWORD dwHostAddressCount);
+void __RPC_STUB IWSDDeviceHost_Init_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_Start_Proxy(
+    IWSDDeviceHost* This,
+    ULONGLONG ullInstanceId,
+    const WSD_URI_LIST *pScopeList,
+    IWSDDeviceHostNotify *pNotificationSink);
+void __RPC_STUB IWSDDeviceHost_Start_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_Stop_Proxy(
+    IWSDDeviceHost* This);
+void __RPC_STUB IWSDDeviceHost_Stop_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_Terminate_Proxy(
+    IWSDDeviceHost* This);
+void __RPC_STUB IWSDDeviceHost_Terminate_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_RegisterPortType_Proxy(
+    IWSDDeviceHost* This,
+    const WSD_PORT_TYPE *pPortType);
+void __RPC_STUB IWSDDeviceHost_RegisterPortType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_SetMetadata_Proxy(
+    IWSDDeviceHost* This,
+    const WSD_THIS_MODEL_METADATA *pThisModelMetadata,
+    const WSD_THIS_DEVICE_METADATA *pThisDeviceMetadata,
+    const WSD_HOST_METADATA *pHostMetadata,
+    const WSD_METADATA_SECTION_LIST *pCustomMetadata);
+void __RPC_STUB IWSDDeviceHost_SetMetadata_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_RegisterService_Proxy(
+    IWSDDeviceHost* This,
+    LPCWSTR pszServiceId,
+    IUnknown *pService);
+void __RPC_STUB IWSDDeviceHost_RegisterService_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_RetireService_Proxy(
+    IWSDDeviceHost* This,
+    LPCWSTR pszServiceId);
+void __RPC_STUB IWSDDeviceHost_RetireService_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_AddDynamicService_Proxy(
+    IWSDDeviceHost* This,
+    LPCWSTR pszServiceId,
+    LPCWSTR pszEndpointAddress,
+    const WSD_PORT_TYPE *pPortType,
+    const WSDXML_NAME *pPortName,
+    const WSDXML_ELEMENT *pAny,
+    IUnknown *pService);
+void __RPC_STUB IWSDDeviceHost_AddDynamicService_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_RemoveDynamicService_Proxy(
+    IWSDDeviceHost* This,
+    LPCWSTR pszServiceId);
+void __RPC_STUB IWSDDeviceHost_RemoveDynamicService_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_SetServiceDiscoverable_Proxy(
+    IWSDDeviceHost* This,
+    LPCWSTR pszServiceId,
+    WINBOOL fDiscoverable);
+void __RPC_STUB IWSDDeviceHost_SetServiceDiscoverable_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDDeviceHost_SignalEvent_Proxy(
+    IWSDDeviceHost* This,
+    LPCWSTR pszServiceId,
+    const void *pBody,
+    const WSD_OPERATION *pOperation);
+void __RPC_STUB IWSDDeviceHost_SignalEvent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDDeviceHost_INTERFACE_DEFINED__ */
+
+HRESULT WINAPI WSDCreateDeviceHost(LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDDeviceHost **ppDeviceHost);
+#if WINVER >= 0x601
+HRESULT WINAPI WSDCreateDeviceHost2(LPCWSTR pszLocalId, IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDDeviceHost **ppDeviceHost);
+#endif
+HRESULT WINAPI WSDCreateDeviceHostAdvanced(LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDAddress** ppHostAddresses, DWORD dwHostAddressCount, IWSDDeviceHost **ppDeviceHost);
+#endif
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_WSDHOST*/
+#endif /* __wsdhost_h__ */
diff --git a/mingw-w64-headers/include/wsdhost.idl b/mingw-w64-headers/include/wsdhost.idl
new file mode 100644
index 0000000..28d93a3
--- /dev/null
+++ b/mingw-w64-headers/include/wsdhost.idl
@@ -0,0 +1,54 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "oaidl.idl";
+import "ocidl.idl";
+import "wsdxmldom.h";
+import "wsdtypes.h";
+
+cpp_quote("")
+interface IWSDAddress;
+interface IWSDXMLContext;
+interface IWSDDeviceHost;
+interface IWSDDeviceHostNotify;
+interface IWSDServiceMessaging;
+
+[object, restricted, uuid (b5bee9f9-eeda-41fe-96f7-f45e14990fb0), pointer_default (unique)]
+interface IWSDDeviceHostNotify : IUnknown {
+  HRESULT GetService ([in] LPCWSTR pszServiceId,[out] IUnknown **ppService);
+};
+
+[object, local, restricted, uuid (94974cf4-0cab-460d-a3f6-7a0ad623c0e6), pointer_default (unique)]
+interface IWSDServiceMessaging : IUnknown {
+  HRESULT SendResponse ([in] void *pBody,[in] WSD_OPERATION *pOperation,[in] IWSDMessageParameters *pMessageParameters);
+  HRESULT FaultRequest ([in] WSD_SOAP_HEADER *pRequestHeader,[in] IWSDMessageParameters *pMessageParameters,[in, optional] WSD_SOAP_FAULT *pFault);
+};
+
+[object, local, restricted, uuid (917fe891-3d13-4138-9809-934c8abeb12c), pointer_default (unique)]
+interface IWSDDeviceHost : IUnknown {
+  HRESULT Init ([in] LPCWSTR pszLocalId,[in, optional] IWSDXMLContext *pContext,[in, optional] IWSDAddress **ppHostAddresses,[in, optional] DWORD dwHostAddressCount);
+  HRESULT Start ([in] ULONGLONG ullInstanceId,[in] const WSD_URI_LIST *pScopeList,[in, optional] IWSDDeviceHostNotify *pNotificationSink);
+  HRESULT Stop ();
+  HRESULT Terminate ();
+  HRESULT RegisterPortType ([in] const WSD_PORT_TYPE *pPortType);
+  HRESULT SetMetadata ([in] const WSD_THIS_MODEL_METADATA *pThisModelMetadata,[in] const WSD_THIS_DEVICE_METADATA *pThisDeviceMetadata,[in, optional] const WSD_HOST_METADATA *pHostMetadata,[in, optional] const WSD_METADATA_SECTION_LIST *pCustomMetadata);
+  HRESULT RegisterService ([in] LPCWSTR pszServiceId,[in] IUnknown *pService);
+  HRESULT RetireService ([in] LPCWSTR pszServiceId);
+  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);
+  HRESULT RemoveDynamicService ([in] LPCWSTR pszServiceId);
+  HRESULT SetServiceDiscoverable ([in] LPCWSTR pszServiceId,[in] BOOL fDiscoverable);
+  HRESULT SignalEvent ([in] LPCWSTR pszServiceId,[in] const void *pBody,[in] const WSD_OPERATION *pOperation);
+};
+
+cpp_quote("HRESULT WINAPI WSDCreateDeviceHost(LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDDeviceHost **ppDeviceHost);")
+cpp_quote("#if WINVER >= 0x601")
+cpp_quote("HRESULT WINAPI WSDCreateDeviceHost2(LPCWSTR pszLocalId, IWSDXMLContext *pContext, WSD_CONFIG_PARAM *pConfigParams, DWORD dwConfigParamCount, IWSDDeviceHost **ppDeviceHost);")
+cpp_quote("#endif")
+cpp_quote("HRESULT WINAPI WSDCreateDeviceHostAdvanced(LPCWSTR pszLocalId, IWSDXMLContext *pContext, IWSDAddress** ppHostAddresses, DWORD dwHostAddressCount, IWSDDeviceHost **ppDeviceHost);")
+
+cpp_quote("#endif")
diff --git a/mingw-w64-headers/include/wsdxml.h b/mingw-w64-headers/include/wsdxml.h
index f623ae5..a04f45f 100644
--- a/mingw-w64-headers/include/wsdxml.h
+++ b/mingw-w64-headers/include/wsdxml.h
@@ -1,46 +1,347 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+/*** Autogenerated by WIDL 1.6 from wsdxml.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __wsdxml_h__
+#define __wsdxml_h__
+
+/* Forward declarations */
+
+#ifndef __IWSDXMLContext_FWD_DEFINED__
+#define __IWSDXMLContext_FWD_DEFINED__
+typedef interface IWSDXMLContext IWSDXMLContext;
+#endif
+
+/* Headers for imported files */
+
+#include <oaidl.h>
+#include <ocidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <winapifamily.h>
+
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#ifndef __IWSDXMLContext_FWD_DEFINED__
+#define __IWSDXMLContext_FWD_DEFINED__
+typedef interface IWSDXMLContext IWSDXMLContext;
+#endif
+
+enum {
+    OpNone = 0,
+    OpEndOfTable = 1,
+    OpBeginElement_ = 2,
+    OpBeginAnyElement = 3,
+    OpEndElement = 4,
+    OpElement_ = 5,
+    OpAnyElement = 6,
+    OpAnyElements = 7,
+    OpAnyText = 8,
+    OpAttribute_ = 9,
+    OpBeginChoice = 10,
+    OpEndChoice = 11,
+    OpBeginSequence = 12,
+    OpEndSequence = 13,
+    OpBeginAll = 14,
+    OpEndAll = 15,
+    OpAnything = 16,
+    OpAnyNumber = 17,
+    OpOneOrMore = 18,
+    OpOptional = 19,
+    OpFormatBool_ = 20,
+    OpFormatInt8_ = 21,
+    OpFormatInt16_ = 22,
+    OpFormatInt32_ = 23,
+    OpFormatInt64_ = 24,
+    OpFormatUInt8_ = 25,
+    OpFormatUInt16_ = 26,
+    OpFormatUInt32_ = 27,
+    OpFormatUInt64_ = 28,
+    OpFormatUnicodeString_ = 29,
+    OpFormatDom_ = 30,
+    OpFormatStruct_ = 31,
+    OpFormatUri_ = 32,
+    OpFormatUuidUri_ = 33,
+    OpFormatName_ = 34,
+    OpFormatListInsertTail_ = 35,
+    OpFormatType_ = 36,
+    OpFormatDynamicType_ = 37,
+    OpFormatLookupType_ = 38,
+    OpFormatDuration_ = 39,
+    OpFormatDateTime_ = 40,
+    OpFormatFloat_ = 41,
+    OpFormatDouble_ = 42,
+    OpProcess_ = 43,
+    OpQualifiedAttribute_ = 44,
+    OpFormatXMLDeclaration_ = 45,
+    OpFormatMax = 46
+};
+
+typedef struct _WSDXML_NAMESPACE WSDXML_NAMESPACE;
+typedef const WSDXML_NAMESPACE *PCWSDXML_NAMESPACE;
+typedef struct _WSDXML_NAME WSDXML_NAME;
+typedef struct _WSDXML_TYPE WSDXML_TYPE;
+typedef const WSDXML_TYPE *PCWSDXML_TYPE;
+typedef struct _WSDXML_PREFIX_MAPPING WSDXML_PREFIX_MAPPING;
+typedef struct _WSDXML_ATTRIBUTE WSDXML_ATTRIBUTE;
+typedef struct _WSDXML_NODE WSDXML_NODE;
+typedef struct _WSDXML_ELEMENT WSDXML_ELEMENT;
+typedef struct _WSDXML_TEXT WSDXML_TEXT;
+typedef struct _WSDXML_ELEMENT_LIST WSDXML_ELEMENT_LIST;
+typedef struct _WSD_DATETIME {
+    WINBOOL isPositive;
+    ULONG year;
+    UCHAR month;
+    UCHAR day;
+    UCHAR hour;
+    UCHAR minute;
+    UCHAR second;
+    UINT millisecond;
+    WINBOOL TZIsLocal;
+    WINBOOL TZIsPositive;
+    UCHAR TZHour;
+    UCHAR TZMinute;
+} WSD_DATETIME;
+typedef struct _WSD_DURATION {
+    WINBOOL isPositive;
+    ULONG year;
+    ULONG month;
+    ULONG day;
+    ULONG hour;
+    ULONG minute;
+    ULONG second;
+    ULONG millisecond;
+} WSD_DURATION;
+
+#define WSDXML_TYPE_ENCODING(tidx,lno) ((((DWORD) lno) << 28) | tidx)
+#define WSDXML_NAMESPACE_ENCODING(nsidx, lno) ((((WORD) lno) << 12) | nsidx)
+#define WSDXML_NAME_ENCODING(nidx, nsenc) ((((DWORD) nsenc) << 16) | nidx)
+
+#define OFFSET(type,field) ((DWORD_PTR) (&((type *)0)->field))
+#define BYTE0(n) (BYTE) (((DWORD) n) & 0xff)
+#define BYTE1(n) (BYTE) ((((DWORD) n) >> 8) & 0xff)
+#define BYTE2(n) (BYTE) ((((DWORD) n) >> 16) & 0xff)
+#define BYTE3(n) (BYTE)((((DWORD) n) >> 24) & 0xff)
+#define BYTES(n) BYTE0(n), BYTE1(n), BYTE2(n), BYTE3(n)
+
+#define OpAttribute(name) OpAttribute_, BYTES(name)
+#define OpBeginElement(name) OpBeginElement_, BYTES(name)
+#define OpElement(name) OpElement_, BYTES(name)
+#define OpFormatBool(type,field,isptr) OpFormatBool_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatDateTime(type,field) OpFormatDateTime_, BYTES(OFFSET(type,field))
+#define OpFormatDom(type,field) OpFormatDom_, BYTES(OFFSET(type,field))
+#define OpFormatDouble(type,field,isptr) OpFormatDouble_, BYTES(isptr),BYTES(OFFSET(type,field))
+#define OpFormatDuration(type,field) OpFormatDuration_, BYTES(OFFSET(type,field))
+#define OpFormatDynamicType(name,type,field) OpFormatDynamicType_, BYTES(name),BYTES(OFFSET(type,field))
+#define OpFormatFloat(type,field,isptr) OpFormatFloat_, BYTES(isptr),BYTES(OFFSET(type,field))
+#define OpFormatInt8(type,field,isptr) OpFormatInt8_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatInt16(type,field,isptr) OpFormatInt16_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatInt32(type,field,isptr) OpFormatInt32_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatInt64(type,field,isptr) OpFormatInt64_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatListInsertTail(s,type,field) OpFormatListInsertTail_,BYTES(sizeof(s)),BYTES(OFFSET(type,field))
+#define OpFormatLookupType(uriField,type,field) OpFormatLookupType_, BYTES(OFFSET(type,uriField)),BYTES(OFFSET(type,field))
+#define OpFormatName(type,field) OpFormatName_, BYTES(OFFSET(type,field))
+#define OpFormatPointerToStruct(sType) OpFormatStruct_, BYTES(sizeof(sType)),BYTES(0)
+#define OpFormatStruct(sType,type,field) OpFormatStruct_, BYTES(sizeof(sType)),BYTES(OFFSET(type,field))
+#define OpFormatType(table,type,field) OpFormatType_, BYTES(table),BYTES(OFFSET(type,field))
+#define OpFormatUInt8(type,field,isptr) OpFormatUInt8_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatUInt16(type,field,isptr) OpFormatUInt16_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatUInt32(type,field,isptr) OpFormatUInt32_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatUInt64(type,field,isptr) OpFormatUInt64_, BYTES(isptr), BYTES(OFFSET(type,field))
+#define OpFormatUnicodeString(type,field) OpFormatUnicodeString_, BYTES(OFFSET(type,field))
+#define OpFormatUri(type,field) OpFormatUri_, BYTES(OFFSET(type,field))
+#define OpFormatUuidUri(type,field,isptr) OpFormatUuidUri_, BYTES(isptr),BYTES(OFFSET(type,field))
+#define OpFormatXMLDeclaration(type,field) OpFormatXMLDeclaration_, BYTES(OFFSET(type,field))
+#define OpProcess(type,field) OpProcess_, BYTES(OFFSET(type,field))
+#define OpQualifiedAttribute(name) OpQualifiedAttribute_, BYTES(name)
+/*****************************************************************************
+ * IWSDXMLContext interface
  */
-#ifndef _INC_WSDXML
-#define _INC_WSDXML
+#ifndef __IWSDXMLContext_INTERFACE_DEFINED__
+#define __IWSDXMLContext_INTERFACE_DEFINED__
 
-#ifndef _INC_WSDAPI
-#error Please include wsdapi.h instead of this header. This header cannot be used directly.
+DEFINE_GUID(IID_IWSDXMLContext, 0x75d8f3ee, 0x3e5a, 0x43b4, 0xa1,0x5a, 0xbc,0xf6,0x88,0x74,0x60,0xc0);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("75d8f3ee-3e5a-43b4-a15a-bcf6887460c0")
+IWSDXMLContext : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE AddNamespace(
+        LPCWSTR pszUri,
+        LPCWSTR pszSuggestedPrefix,
+        WSDXML_NAMESPACE **ppNamespace) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddNameToNamespace(
+        LPCWSTR pszUri,
+        LPCWSTR pszName,
+        WSDXML_NAME **ppName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetNamespaces(
+        const PCWSDXML_NAMESPACE *pNamespaces,
+        WORD wNamespacesCount,
+        BYTE bLayerNumber) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTypes(
+        const PCWSDXML_TYPE *pTypes,
+        DWORD dwTypesCount,
+        BYTE bLayerNumber) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IWSDXMLContext, 0x75d8f3ee, 0x3e5a, 0x43b4, 0xa1,0x5a, 0xbc,0xf6,0x88,0x74,0x60,0xc0)
 #endif
-
-#if (_WIN32_WINNT >= 0x0600)
-#undef  INTERFACE
-#define INTERFACE IWSDXMLContext
-DECLARE_INTERFACE_(IWSDXMLContext,IUnknown) {
+#else
+typedef struct IWSDXMLContextVtbl {
     BEGIN_INTERFACE
-#ifndef __cplusplus
-    /* IUnknown methods */
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
-    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG, Release)(THIS) PURE;
-#endif
-    /* IWSDXMLContext methods */
-    STDMETHOD_(HRESULT,AddNamespace)(THIS_ const LPCWSTR *pszUri,const LPCWSTR *pszSuggestedPrefix,WSDXML_NAMESPACE **ppNamespace) PURE;
-    STDMETHOD_(HRESULT,AddNameToNamespace) (THIS_ LPCWSTR pszUri, LPCWSTR pszName, WSDXML_NAME **ppName);
-    STDMETHOD_(HRESULT,SetNamespaces)(THIS_ const PCWSDXML_NAMESPACE *pNamespaces,WORD wNamespacesCount,BYTE bLayerNumber) PURE;
-    STDMETHOD_(HRESULT,SetTypes)(THIS_ const PCWSDXML_TYPE *pTypes,DWORD dwTypesCount,BYTE bLayerNumber) PURE;
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IWSDXMLContext* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IWSDXMLContext* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IWSDXMLContext* This);
+
+    /*** IWSDXMLContext methods ***/
+    HRESULT (STDMETHODCALLTYPE *AddNamespace)(
+        IWSDXMLContext* This,
+        LPCWSTR pszUri,
+        LPCWSTR pszSuggestedPrefix,
+        WSDXML_NAMESPACE **ppNamespace);
+
+    HRESULT (STDMETHODCALLTYPE *AddNameToNamespace)(
+        IWSDXMLContext* This,
+        LPCWSTR pszUri,
+        LPCWSTR pszName,
+        WSDXML_NAME **ppName);
+
+    HRESULT (STDMETHODCALLTYPE *SetNamespaces)(
+        IWSDXMLContext* This,
+        const PCWSDXML_NAMESPACE *pNamespaces,
+        WORD wNamespacesCount,
+        BYTE bLayerNumber);
+
+    HRESULT (STDMETHODCALLTYPE *SetTypes)(
+        IWSDXMLContext* This,
+        const PCWSDXML_TYPE *pTypes,
+        DWORD dwTypesCount,
+        BYTE bLayerNumber);
 
     END_INTERFACE
+} IWSDXMLContextVtbl;
+interface IWSDXMLContext {
+    CONST_VTBL IWSDXMLContextVtbl* lpVtbl;
 };
+
 #ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
 #define IWSDXMLContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
 #define IWSDXMLContext_AddRef(This) (This)->lpVtbl->AddRef(This)
 #define IWSDXMLContext_Release(This) (This)->lpVtbl->Release(This)
+/*** IWSDXMLContext methods ***/
+#define IWSDXMLContext_AddNamespace(This,pszUri,pszSuggestedPrefix,ppNamespace) (This)->lpVtbl->AddNamespace(This,pszUri,pszSuggestedPrefix,ppNamespace)
+#define IWSDXMLContext_AddNameToNamespace(This,pszUri,pszName,ppName) (This)->lpVtbl->AddNameToNamespace(This,pszUri,pszName,ppName)
 #define IWSDXMLContext_SetNamespaces(This,pNamespaces,wNamespacesCount,bLayerNumber) (This)->lpVtbl->SetNamespaces(This,pNamespaces,wNamespacesCount,bLayerNumber)
 #define IWSDXMLContext_SetTypes(This,pTypes,dwTypesCount,bLayerNumber) (This)->lpVtbl->SetTypes(This,pTypes,dwTypesCount,bLayerNumber)
-#define IWSDXMLContext_AddNamespace(This,pszUri,pszSuggestedPrefix,ppNamespace) (This)->lpVtbl->AddNamespace(This,pszUri,pszSuggestedPrefix,ppNamespace)
-#endif /*COBJMACROS*/
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IWSDXMLContext_QueryInterface(IWSDXMLContext* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IWSDXMLContext_AddRef(IWSDXMLContext* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IWSDXMLContext_Release(IWSDXMLContext* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IWSDXMLContext methods ***/
+static FORCEINLINE HRESULT IWSDXMLContext_AddNamespace(IWSDXMLContext* This,LPCWSTR pszUri,LPCWSTR pszSuggestedPrefix,WSDXML_NAMESPACE **ppNamespace) {
+    return This->lpVtbl->AddNamespace(This,pszUri,pszSuggestedPrefix,ppNamespace);
+}
+static FORCEINLINE HRESULT IWSDXMLContext_AddNameToNamespace(IWSDXMLContext* This,LPCWSTR pszUri,LPCWSTR pszName,WSDXML_NAME **ppName) {
+    return This->lpVtbl->AddNameToNamespace(This,pszUri,pszName,ppName);
+}
+static FORCEINLINE HRESULT IWSDXMLContext_SetNamespaces(IWSDXMLContext* This,const PCWSDXML_NAMESPACE *pNamespaces,WORD wNamespacesCount,BYTE bLayerNumber) {
+    return This->lpVtbl->SetNamespaces(This,pNamespaces,wNamespacesCount,bLayerNumber);
+}
+static FORCEINLINE HRESULT IWSDXMLContext_SetTypes(IWSDXMLContext* This,const PCWSDXML_TYPE *pTypes,DWORD dwTypesCount,BYTE bLayerNumber) {
+    return This->lpVtbl->SetTypes(This,pTypes,dwTypesCount,bLayerNumber);
+}
+#endif
+#endif
 
-HRESULT WINAPI WSDXMLGetNameFromBuiltinNamespace(LPCWSTR pszNamespace, LPCWSTR pszName, WSDXML_NAME **ppName);
+#endif
+
+HRESULT STDMETHODCALLTYPE IWSDXMLContext_AddNamespace_Proxy(
+    IWSDXMLContext* This,
+    LPCWSTR pszUri,
+    LPCWSTR pszSuggestedPrefix,
+    WSDXML_NAMESPACE **ppNamespace);
+void __RPC_STUB IWSDXMLContext_AddNamespace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDXMLContext_AddNameToNamespace_Proxy(
+    IWSDXMLContext* This,
+    LPCWSTR pszUri,
+    LPCWSTR pszName,
+    WSDXML_NAME **ppName);
+void __RPC_STUB IWSDXMLContext_AddNameToNamespace_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDXMLContext_SetNamespaces_Proxy(
+    IWSDXMLContext* This,
+    const PCWSDXML_NAMESPACE *pNamespaces,
+    WORD wNamespacesCount,
+    BYTE bLayerNumber);
+void __RPC_STUB IWSDXMLContext_SetNamespaces_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IWSDXMLContext_SetTypes_Proxy(
+    IWSDXMLContext* This,
+    const PCWSDXML_TYPE *pTypes,
+    DWORD dwTypesCount,
+    BYTE bLayerNumber);
+void __RPC_STUB IWSDXMLContext_SetTypes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IWSDXMLContext_INTERFACE_DEFINED__ */
+
 HRESULT WINAPI WSDXMLGetNameFromBuiltinNamespace(LPCWSTR pszNamespace, LPCWSTR pszName, WSDXML_NAME **ppName);
 HRESULT WINAPI WSDXMLCreateContext(IWSDXMLContext **ppContext);
+#endif
+/* Begin additional prototypes for all interfaces */
 
-#endif /*(_WIN32_WINNT >= 0x0600)*/
-#endif /*_INC_WSDXML*/
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __wsdxml_h__ */
diff --git a/mingw-w64-headers/include/wsdxml.idl b/mingw-w64-headers/include/wsdxml.idl
new file mode 100644
index 0000000..22b7cdf
--- /dev/null
+++ b/mingw-w64-headers/include/wsdxml.idl
@@ -0,0 +1,158 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+cpp_quote("#include <winapifamily.h>")
+cpp_quote("")
+cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
+
+import "oaidl.idl";
+import "ocidl.idl";
+
+cpp_quote("")
+interface IWSDXMLContext;
+
+enum {
+  OpNone,
+  OpEndOfTable,
+  OpBeginElement_,
+  OpBeginAnyElement,
+  OpEndElement,
+  OpElement_,
+  OpAnyElement,
+  OpAnyElements,
+  OpAnyText,
+  OpAttribute_,
+  OpBeginChoice,
+  OpEndChoice,
+  OpBeginSequence,
+  OpEndSequence,
+  OpBeginAll,
+  OpEndAll,
+  OpAnything,
+  OpAnyNumber,
+  OpOneOrMore,
+  OpOptional,
+  OpFormatBool_,
+  OpFormatInt8_,
+  OpFormatInt16_,
+  OpFormatInt32_,
+  OpFormatInt64_,
+  OpFormatUInt8_,
+  OpFormatUInt16_,
+  OpFormatUInt32_,
+  OpFormatUInt64_,
+  OpFormatUnicodeString_,
+  OpFormatDom_,
+  OpFormatStruct_,
+  OpFormatUri_,
+  OpFormatUuidUri_,
+  OpFormatName_,
+  OpFormatListInsertTail_,
+  OpFormatType_,
+  OpFormatDynamicType_,
+  OpFormatLookupType_,
+  OpFormatDuration_,
+  OpFormatDateTime_,
+  OpFormatFloat_,
+  OpFormatDouble_,
+  OpProcess_,
+  OpQualifiedAttribute_,
+  OpFormatXMLDeclaration_,
+  OpFormatMax
+};
+
+typedef struct _WSDXML_NAMESPACE WSDXML_NAMESPACE;
+typedef const WSDXML_NAMESPACE *PCWSDXML_NAMESPACE;
+typedef struct _WSDXML_NAME WSDXML_NAME;
+typedef struct _WSDXML_TYPE WSDXML_TYPE;
+typedef const WSDXML_TYPE *PCWSDXML_TYPE;
+typedef struct _WSDXML_PREFIX_MAPPING WSDXML_PREFIX_MAPPING;
+typedef struct _WSDXML_ATTRIBUTE WSDXML_ATTRIBUTE;
+typedef struct _WSDXML_NODE WSDXML_NODE;
+typedef struct _WSDXML_ELEMENT WSDXML_ELEMENT;
+typedef struct _WSDXML_TEXT WSDXML_TEXT;
+typedef struct _WSDXML_ELEMENT_LIST WSDXML_ELEMENT_LIST;
+
+typedef struct _WSD_DATETIME {
+  BOOL isPositive;
+  ULONG year;
+  UCHAR month;
+  UCHAR day;
+  UCHAR hour;
+  UCHAR minute;
+  UCHAR second;
+  UINT millisecond;
+  BOOL TZIsLocal;
+  BOOL TZIsPositive;
+  UCHAR TZHour;
+  UCHAR TZMinute;
+} WSD_DATETIME;
+
+typedef struct _WSD_DURATION {
+  BOOL isPositive;
+  ULONG year;
+  ULONG month;
+  ULONG day;
+  ULONG hour;
+  ULONG minute;
+  ULONG second;
+  ULONG millisecond;
+} WSD_DURATION;
+
+cpp_quote("")
+cpp_quote("#define WSDXML_TYPE_ENCODING(tidx,lno) ((((DWORD) lno) << 28) | tidx)")
+cpp_quote("#define WSDXML_NAMESPACE_ENCODING(nsidx, lno) ((((WORD) lno) << 12) | nsidx)")
+cpp_quote("#define WSDXML_NAME_ENCODING(nidx, nsenc) ((((DWORD) nsenc) << 16) | nidx)")
+cpp_quote("")
+cpp_quote("#define OFFSET(type,field) ((DWORD_PTR) (&((type *)0)->field))")
+cpp_quote("#define BYTE0(n) (BYTE) (((DWORD) n) & 0xff)")
+cpp_quote("#define BYTE1(n) (BYTE) ((((DWORD) n) >> 8) & 0xff)")
+cpp_quote("#define BYTE2(n) (BYTE) ((((DWORD) n) >> 16) & 0xff)")
+cpp_quote("#define BYTE3(n) (BYTE)((((DWORD) n) >> 24) & 0xff)")
+cpp_quote("#define BYTES(n) BYTE0(n), BYTE1(n), BYTE2(n), BYTE3(n)")
+cpp_quote("")
+cpp_quote("#define OpAttribute(name) OpAttribute_, BYTES(name)")
+cpp_quote("#define OpBeginElement(name) OpBeginElement_, BYTES(name)")
+cpp_quote("#define OpElement(name) OpElement_, BYTES(name)")
+cpp_quote("#define OpFormatBool(type,field,isptr) OpFormatBool_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatDateTime(type,field) OpFormatDateTime_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatDom(type,field) OpFormatDom_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatDouble(type,field,isptr) OpFormatDouble_, BYTES(isptr),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatDuration(type,field) OpFormatDuration_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatDynamicType(name,type,field) OpFormatDynamicType_, BYTES(name),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatFloat(type,field,isptr) OpFormatFloat_, BYTES(isptr),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatInt8(type,field,isptr) OpFormatInt8_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatInt16(type,field,isptr) OpFormatInt16_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatInt32(type,field,isptr) OpFormatInt32_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatInt64(type,field,isptr) OpFormatInt64_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatListInsertTail(s,type,field) OpFormatListInsertTail_,BYTES(sizeof(s)),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatLookupType(uriField,type,field) OpFormatLookupType_, BYTES(OFFSET(type,uriField)),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatName(type,field) OpFormatName_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatPointerToStruct(sType) OpFormatStruct_, BYTES(sizeof(sType)),BYTES(0)")
+cpp_quote("#define OpFormatStruct(sType,type,field) OpFormatStruct_, BYTES(sizeof(sType)),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatType(table,type,field) OpFormatType_, BYTES(table),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatUInt8(type,field,isptr) OpFormatUInt8_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatUInt16(type,field,isptr) OpFormatUInt16_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatUInt32(type,field,isptr) OpFormatUInt32_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatUInt64(type,field,isptr) OpFormatUInt64_, BYTES(isptr), BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatUnicodeString(type,field) OpFormatUnicodeString_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatUri(type,field) OpFormatUri_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatUuidUri(type,field,isptr) OpFormatUuidUri_, BYTES(isptr),BYTES(OFFSET(type,field))")
+cpp_quote("#define OpFormatXMLDeclaration(type,field) OpFormatXMLDeclaration_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpProcess(type,field) OpProcess_, BYTES(OFFSET(type,field))")
+cpp_quote("#define OpQualifiedAttribute(name) OpQualifiedAttribute_, BYTES(name)")
+
+[object, local, restricted, uuid (75d8f3ee-3e5a-43b4-a15a-bcf6887460c0), pointer_default (unique)]
+interface IWSDXMLContext : IUnknown {
+  HRESULT AddNamespace ([in] LPCWSTR pszUri,[in] LPCWSTR pszSuggestedPrefix,[out] WSDXML_NAMESPACE **ppNamespace);
+  HRESULT AddNameToNamespace ([in] LPCWSTR pszUri,[in] LPCWSTR pszName,[out] WSDXML_NAME **ppName);
+  HRESULT SetNamespaces ([in, size_is (wNamespacesCount)] const PCWSDXML_NAMESPACE *pNamespaces,[in] WORD wNamespacesCount,[in] BYTE bLayerNumber);
+  HRESULT SetTypes ([in, size_is (dwTypesCount)] const PCWSDXML_TYPE *pTypes,[in] DWORD dwTypesCount,[in] BYTE bLayerNumber);
+};
+
+cpp_quote("HRESULT WINAPI WSDXMLGetNameFromBuiltinNamespace(LPCWSTR pszNamespace, LPCWSTR pszName, WSDXML_NAME **ppName);")
+cpp_quote("HRESULT WINAPI WSDXMLCreateContext(IWSDXMLContext **ppContext);")
+
+cpp_quote("#endif")