diff -Naur configure.in configure.in
--- configure.in	2016-10-30 02:23:04.000000000 +0100
+++ configure.in	2017-05-29 22:20:15.000000000 +0200
@@ -346,7 +346,7 @@
             add_objects src/hostapi/wasapi/pa_win_wasapi.o src/common/pa_ringbuffer.o src/os/win/pa_win_hostapis.o src/os/win/pa_win_util.o src/os/win/pa_win_coinitialize.o src/os/win/pa_win_waveformat.o
             LIBS="${LIBS} -lwinmm -lm -lole32 -luuid"
             DLL_LIBS="${DLL_LIBS} -lwinmm -lole32"
-            CFLAGS="$CFLAGS -I\$(top_srcdir)/src/hostapi/wasapi/mingw-include -UPA_USE_WASAPI -DPA_USE_WASAPI=1"
+            CFLAGS="$CFLAGS -UPA_USE_WASAPI -DPA_USE_WASAPI=1"
         fi
         ;;
 
diff -Naur src/hostapi/dsound/pa_win_ds.c src/hostapi/dsound/pa_win_ds.c
--- src/hostapi/dsound/pa_win_ds.c	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/dsound/pa_win_ds.c	2017-05-29 22:20:15.000000000 +0200
@@ -904,7 +904,10 @@
                             case DSSPEAKER_STEREO:           count = 2; break;
                             case DSSPEAKER_SURROUND:         count = 4; break;
                             case DSSPEAKER_5POINT1:          count = 6; break;
-                            case DSSPEAKER_7POINT1:          count = 8; break;
+#ifndef DSSPEAKER_7POINT1
+#define DSSPEAKER_7POINT1 0x00000007
+#endif			     
+			    case DSSPEAKER_7POINT1:          count = 8; break;
 #ifndef DSSPEAKER_7POINT1_SURROUND
 #define DSSPEAKER_7POINT1_SURROUND 0x00000008
 #endif                            
@@ -2136,7 +2139,7 @@
         }
         else
         {
-            CalculateBufferSettings( &stream->hostBufferSizeFrames, &pollingPeriodFrames,
+            CalculateBufferSettings( (unsigned long*)&stream->hostBufferSizeFrames, &pollingPeriodFrames,
                     /* isFullDuplex = */ (inputParameters && outputParameters),
                     suggestedInputLatencyFrames,
                     suggestedOutputLatencyFrames, 
diff -Naur src/hostapi/wasapi/mingw-include/audioclient.h src/hostapi/wasapi/mingw-include/audioclient.h
--- src/hostapi/wasapi/mingw-include/audioclient.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/audioclient.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,1177 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0499 */
-/* Compiler settings for audioclient.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data 
-    VC __declspec() decoration level: 
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 500
-#endif
-
-/* verify that the <rpcsal.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCSAL_H_VERSION__
-#define __REQUIRED_RPCSAL_H_VERSION__ 100
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __audioclient_h__
-#define __audioclient_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */ 
-
-#ifndef __IAudioClient_FWD_DEFINED__
-#define __IAudioClient_FWD_DEFINED__
-typedef interface IAudioClient IAudioClient;
-#endif 	/* __IAudioClient_FWD_DEFINED__ */
-
-
-#ifndef __IAudioRenderClient_FWD_DEFINED__
-#define __IAudioRenderClient_FWD_DEFINED__
-typedef interface IAudioRenderClient IAudioRenderClient;
-#endif 	/* __IAudioRenderClient_FWD_DEFINED__ */
-
-
-#ifndef __IAudioCaptureClient_FWD_DEFINED__
-#define __IAudioCaptureClient_FWD_DEFINED__
-typedef interface IAudioCaptureClient IAudioCaptureClient;
-#endif 	/* __IAudioCaptureClient_FWD_DEFINED__ */
-
-
-#ifndef __IAudioClock_FWD_DEFINED__
-#define __IAudioClock_FWD_DEFINED__
-typedef interface IAudioClock IAudioClock;
-#endif 	/* __IAudioClock_FWD_DEFINED__ */
-
-
-#ifndef __ISimpleAudioVolume_FWD_DEFINED__
-#define __ISimpleAudioVolume_FWD_DEFINED__
-typedef interface ISimpleAudioVolume ISimpleAudioVolume;
-#endif 	/* __ISimpleAudioVolume_FWD_DEFINED__ */
-
-
-#ifndef __IAudioStreamVolume_FWD_DEFINED__
-#define __IAudioStreamVolume_FWD_DEFINED__
-typedef interface IAudioStreamVolume IAudioStreamVolume;
-#endif 	/* __IAudioStreamVolume_FWD_DEFINED__ */
-
-
-#ifndef __IChannelAudioVolume_FWD_DEFINED__
-#define __IChannelAudioVolume_FWD_DEFINED__
-typedef interface IChannelAudioVolume IChannelAudioVolume;
-#endif 	/* __IChannelAudioVolume_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "wtypes.h"
-#include "unknwn.h"
-#include "AudioSessionTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif 
-
-
-/* interface __MIDL_itf_audioclient_0000_0000 */
-/* [local] */ 
-
-#if 0
-typedef /* [hidden][restricted] */ struct WAVEFORMATEX
-    {
-    WORD wFormatTag;
-    WORD nChannels;
-    DWORD nSamplesPerSec;
-    DWORD nAvgBytesPerSec;
-    WORD nBlockAlign;
-    WORD wBitsPerSample;
-    WORD cbSize;
-    } 	WAVEFORMATEX;
-
-#else
-#include <mmreg.h>
-#endif
-#if 0
-typedef /* [hidden][restricted] */ LONGLONG REFERENCE_TIME;
-
-#else
-#define _IKsControl_
-#include <ks.h>
-#include <ksmedia.h>
-#endif
-
-enum _AUDCLNT_BUFFERFLAGS
-    {	AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY	= 0x1,
-	AUDCLNT_BUFFERFLAGS_SILENT	= 0x2,
-	AUDCLNT_BUFFERFLAGS_TIMESTAMP_ERROR	= 0x4
-    } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAudioClient_INTERFACE_DEFINED__
-#define __IAudioClient_INTERFACE_DEFINED__
-
-/* interface IAudioClient */
-/* [local][unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IAudioClient;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("1CB9AD4C-DBFA-4c32-B178-C2F568A703B2")
-    IAudioClient : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Initialize( 
-            /* [in] */ 
-            __in  AUDCLNT_SHAREMODE ShareMode,
-            /* [in] */ 
-            __in  DWORD StreamFlags,
-            /* [in] */ 
-            __in  REFERENCE_TIME hnsBufferDuration,
-            /* [in] */ 
-            __in  REFERENCE_TIME hnsPeriodicity,
-            /* [in] */ 
-            __in  const WAVEFORMATEX *pFormat,
-            /* [in] */ 
-            __in_opt  LPCGUID AudioSessionGuid) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetBufferSize( 
-            /* [out] */ 
-            __out  UINT32 *pNumBufferFrames) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetStreamLatency( 
-            /* [out] */ 
-            __out  REFERENCE_TIME *phnsLatency) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetCurrentPadding( 
-            /* [out] */ 
-            __out  UINT32 *pNumPaddingFrames) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE IsFormatSupported( 
-            /* [in] */ 
-            __in  AUDCLNT_SHAREMODE ShareMode,
-            /* [in] */ 
-            __in  const WAVEFORMATEX *pFormat,
-            /* [unique][out] */ 
-            __out_opt  WAVEFORMATEX **ppClosestMatch) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetMixFormat( 
-            /* [out] */ 
-            __out  WAVEFORMATEX **ppDeviceFormat) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetDevicePeriod( 
-            /* [out] */ 
-            __out_opt  REFERENCE_TIME *phnsDefaultDevicePeriod,
-            /* [out] */ 
-            __out_opt  REFERENCE_TIME *phnsMinimumDevicePeriod) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Start( void) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Stop( void) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetEventHandle( 
-            /* [in] */ HANDLE eventHandle) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetService( 
-            /* [in] */ 
-            __in  REFIID riid,
-            /* [iid_is][out] */ 
-            __out  void **ppv) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioClientVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioClient * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioClient * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioClient * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
-            IAudioClient * This,
-            /* [in] */ 
-            __in  AUDCLNT_SHAREMODE ShareMode,
-            /* [in] */ 
-            __in  DWORD StreamFlags,
-            /* [in] */ 
-            __in  REFERENCE_TIME hnsBufferDuration,
-            /* [in] */ 
-            __in  REFERENCE_TIME hnsPeriodicity,
-            /* [in] */ 
-            __in  const WAVEFORMATEX *pFormat,
-            /* [in] */ 
-            __in_opt  LPCGUID AudioSessionGuid);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetBufferSize )( 
-            IAudioClient * This,
-            /* [out] */ 
-            __out  UINT32 *pNumBufferFrames);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetStreamLatency )( 
-            IAudioClient * This,
-            /* [out] */ 
-            __out  REFERENCE_TIME *phnsLatency);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCurrentPadding )( 
-            IAudioClient * This,
-            /* [out] */ 
-            __out  UINT32 *pNumPaddingFrames);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( 
-            IAudioClient * This,
-            /* [in] */ 
-            __in  AUDCLNT_SHAREMODE ShareMode,
-            /* [in] */ 
-            __in  const WAVEFORMATEX *pFormat,
-            /* [unique][out] */ 
-            __out_opt  WAVEFORMATEX **ppClosestMatch);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetMixFormat )( 
-            IAudioClient * This,
-            /* [out] */ 
-            __out  WAVEFORMATEX **ppDeviceFormat);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDevicePeriod )( 
-            IAudioClient * This,
-            /* [out] */ 
-            __out_opt  REFERENCE_TIME *phnsDefaultDevicePeriod,
-            /* [out] */ 
-            __out_opt  REFERENCE_TIME *phnsMinimumDevicePeriod);
-        
-        HRESULT ( STDMETHODCALLTYPE *Start )( 
-            IAudioClient * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Stop )( 
-            IAudioClient * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Reset )( 
-            IAudioClient * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetEventHandle )( 
-            IAudioClient * This,
-            /* [in] */ HANDLE eventHandle);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetService )( 
-            IAudioClient * This,
-            /* [in] */ 
-            __in  REFIID riid,
-            /* [iid_is][out] */ 
-            __out  void **ppv);
-        
-        END_INTERFACE
-    } IAudioClientVtbl;
-
-    interface IAudioClient
-    {
-        CONST_VTBL struct IAudioClientVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioClient_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioClient_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioClient_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioClient_Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid)	\
-    ( (This)->lpVtbl -> Initialize(This,ShareMode,StreamFlags,hnsBufferDuration,hnsPeriodicity,pFormat,AudioSessionGuid) ) 
-
-#define IAudioClient_GetBufferSize(This,pNumBufferFrames)	\
-    ( (This)->lpVtbl -> GetBufferSize(This,pNumBufferFrames) ) 
-
-#define IAudioClient_GetStreamLatency(This,phnsLatency)	\
-    ( (This)->lpVtbl -> GetStreamLatency(This,phnsLatency) ) 
-
-#define IAudioClient_GetCurrentPadding(This,pNumPaddingFrames)	\
-    ( (This)->lpVtbl -> GetCurrentPadding(This,pNumPaddingFrames) ) 
-
-#define IAudioClient_IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch)	\
-    ( (This)->lpVtbl -> IsFormatSupported(This,ShareMode,pFormat,ppClosestMatch) ) 
-
-#define IAudioClient_GetMixFormat(This,ppDeviceFormat)	\
-    ( (This)->lpVtbl -> GetMixFormat(This,ppDeviceFormat) ) 
-
-#define IAudioClient_GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod)	\
-    ( (This)->lpVtbl -> GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ) 
-
-#define IAudioClient_Start(This)	\
-    ( (This)->lpVtbl -> Start(This) ) 
-
-#define IAudioClient_Stop(This)	\
-    ( (This)->lpVtbl -> Stop(This) ) 
-
-#define IAudioClient_Reset(This)	\
-    ( (This)->lpVtbl -> Reset(This) ) 
-
-#define IAudioClient_SetEventHandle(This,eventHandle)	\
-    ( (This)->lpVtbl -> SetEventHandle(This,eventHandle) ) 
-
-#define IAudioClient_GetService(This,riid,ppv)	\
-    ( (This)->lpVtbl -> GetService(This,riid,ppv) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioClient_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioRenderClient_INTERFACE_DEFINED__
-#define __IAudioRenderClient_INTERFACE_DEFINED__
-
-/* interface IAudioRenderClient */
-/* [local][unique][helpstring][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IAudioRenderClient;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("F294ACFC-3146-4483-A7BF-ADDCA7C260E2")
-    IAudioRenderClient : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetBuffer( 
-            /* [in] */ 
-            __in  UINT32 NumFramesRequested,
-            /* [out] */ 
-            __out  BYTE **ppData) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( 
-            /* [in] */ 
-            __in  UINT32 NumFramesWritten,
-            /* [in] */ 
-            __in  DWORD dwFlags) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioRenderClientVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioRenderClient * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioRenderClient * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioRenderClient * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetBuffer )( 
-            IAudioRenderClient * This,
-            /* [in] */ 
-            __in  UINT32 NumFramesRequested,
-            /* [out] */ 
-            __out  BYTE **ppData);
-        
-        HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( 
-            IAudioRenderClient * This,
-            /* [in] */ 
-            __in  UINT32 NumFramesWritten,
-            /* [in] */ 
-            __in  DWORD dwFlags);
-        
-        END_INTERFACE
-    } IAudioRenderClientVtbl;
-
-    interface IAudioRenderClient
-    {
-        CONST_VTBL struct IAudioRenderClientVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioRenderClient_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioRenderClient_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioRenderClient_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioRenderClient_GetBuffer(This,NumFramesRequested,ppData)	\
-    ( (This)->lpVtbl -> GetBuffer(This,NumFramesRequested,ppData) ) 
-
-#define IAudioRenderClient_ReleaseBuffer(This,NumFramesWritten,dwFlags)	\
-    ( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesWritten,dwFlags) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioRenderClient_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioCaptureClient_INTERFACE_DEFINED__
-#define __IAudioCaptureClient_INTERFACE_DEFINED__
-
-/* interface IAudioCaptureClient */
-/* [local][unique][helpstring][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IAudioCaptureClient;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("C8ADBD64-E71E-48a0-A4DE-185C395CD317")
-    IAudioCaptureClient : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetBuffer( 
-            /* [out] */ 
-            __out  BYTE **ppData,
-            /* [out] */ 
-            __out  UINT32 *pNumFramesToRead,
-            /* [out] */ 
-            __out  DWORD *pdwFlags,
-            /* [unique][out] */ 
-            __out_opt  UINT64 *pu64DevicePosition,
-            /* [unique][out] */ 
-            __out_opt  UINT64 *pu64QPCPosition) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( 
-            /* [in] */ 
-            __in  UINT32 NumFramesRead) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetNextPacketSize( 
-            /* [out] */ 
-            __out  UINT32 *pNumFramesInNextPacket) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioCaptureClientVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioCaptureClient * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioCaptureClient * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioCaptureClient * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetBuffer )( 
-            IAudioCaptureClient * This,
-            /* [out] */ 
-            __out  BYTE **ppData,
-            /* [out] */ 
-            __out  UINT32 *pNumFramesToRead,
-            /* [out] */ 
-            __out  DWORD *pdwFlags,
-            /* [unique][out] */ 
-            __out_opt  UINT64 *pu64DevicePosition,
-            /* [unique][out] */ 
-            __out_opt  UINT64 *pu64QPCPosition);
-        
-        HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( 
-            IAudioCaptureClient * This,
-            /* [in] */ 
-            __in  UINT32 NumFramesRead);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetNextPacketSize )( 
-            IAudioCaptureClient * This,
-            /* [out] */ 
-            __out  UINT32 *pNumFramesInNextPacket);
-        
-        END_INTERFACE
-    } IAudioCaptureClientVtbl;
-
-    interface IAudioCaptureClient
-    {
-        CONST_VTBL struct IAudioCaptureClientVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioCaptureClient_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioCaptureClient_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioCaptureClient_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioCaptureClient_GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition)	\
-    ( (This)->lpVtbl -> GetBuffer(This,ppData,pNumFramesToRead,pdwFlags,pu64DevicePosition,pu64QPCPosition) ) 
-
-#define IAudioCaptureClient_ReleaseBuffer(This,NumFramesRead)	\
-    ( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesRead) ) 
-
-#define IAudioCaptureClient_GetNextPacketSize(This,pNumFramesInNextPacket)	\
-    ( (This)->lpVtbl -> GetNextPacketSize(This,pNumFramesInNextPacket) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioCaptureClient_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_audioclient_0000_0003 */
-/* [local] */ 
-
-#define AUDIOCLOCK_CHARACTERISTIC_FIXED_FREQ  0x00000001
-
-
-extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0003_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0003_v0_0_s_ifspec;
-
-#ifndef __IAudioClock_INTERFACE_DEFINED__
-#define __IAudioClock_INTERFACE_DEFINED__
-
-/* interface IAudioClock */
-/* [local][unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IAudioClock;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("CD63314F-3FBA-4a1b-812C-EF96358728E7")
-    IAudioClock : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetFrequency( 
-            /* [out] */ 
-            __out  UINT64 *pu64Frequency) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetPosition( 
-            /* [out] */ 
-            __out  UINT64 *pu64Position,
-            /* [unique][out] */ 
-            __out_opt  UINT64 *pu64QPCPosition) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetCharacteristics( 
-            /* [out] */ 
-            __out  DWORD *pdwCharacteristics) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioClockVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioClock * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioClock * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioClock * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetFrequency )( 
-            IAudioClock * This,
-            /* [out] */ 
-            __out  UINT64 *pu64Frequency);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPosition )( 
-            IAudioClock * This,
-            /* [out] */ 
-            __out  UINT64 *pu64Position,
-            /* [unique][out] */ 
-            __out_opt  UINT64 *pu64QPCPosition);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCharacteristics )( 
-            IAudioClock * This,
-            /* [out] */ 
-            __out  DWORD *pdwCharacteristics);
-        
-        END_INTERFACE
-    } IAudioClockVtbl;
-
-    interface IAudioClock
-    {
-        CONST_VTBL struct IAudioClockVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioClock_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioClock_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioClock_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioClock_GetFrequency(This,pu64Frequency)	\
-    ( (This)->lpVtbl -> GetFrequency(This,pu64Frequency) ) 
-
-#define IAudioClock_GetPosition(This,pu64Position,pu64QPCPosition)	\
-    ( (This)->lpVtbl -> GetPosition(This,pu64Position,pu64QPCPosition) ) 
-
-#define IAudioClock_GetCharacteristics(This,pdwCharacteristics)	\
-    ( (This)->lpVtbl -> GetCharacteristics(This,pdwCharacteristics) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioClock_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISimpleAudioVolume_INTERFACE_DEFINED__
-#define __ISimpleAudioVolume_INTERFACE_DEFINED__
-
-/* interface ISimpleAudioVolume */
-/* [local][unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_ISimpleAudioVolume;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("87CE5498-68D6-44E5-9215-6DA47EF883D8")
-    ISimpleAudioVolume : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE SetMasterVolume( 
-            /* [in] */ 
-            __in  float fLevel,
-            /* [unique][in] */ LPCGUID EventContext) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetMasterVolume( 
-            /* [out] */ 
-            __out  float *pfLevel) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetMute( 
-            /* [in] */ 
-            __in  const BOOL bMute,
-            /* [unique][in] */ LPCGUID EventContext) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetMute( 
-            /* [out] */ 
-            __out  BOOL *pbMute) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct ISimpleAudioVolumeVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ISimpleAudioVolume * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ISimpleAudioVolume * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ISimpleAudioVolume * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetMasterVolume )( 
-            ISimpleAudioVolume * This,
-            /* [in] */ 
-            __in  float fLevel,
-            /* [unique][in] */ LPCGUID EventContext);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetMasterVolume )( 
-            ISimpleAudioVolume * This,
-            /* [out] */ 
-            __out  float *pfLevel);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetMute )( 
-            ISimpleAudioVolume * This,
-            /* [in] */ 
-            __in  const BOOL bMute,
-            /* [unique][in] */ LPCGUID EventContext);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetMute )( 
-            ISimpleAudioVolume * This,
-            /* [out] */ 
-            __out  BOOL *pbMute);
-        
-        END_INTERFACE
-    } ISimpleAudioVolumeVtbl;
-
-    interface ISimpleAudioVolume
-    {
-        CONST_VTBL struct ISimpleAudioVolumeVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ISimpleAudioVolume_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ISimpleAudioVolume_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ISimpleAudioVolume_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define ISimpleAudioVolume_SetMasterVolume(This,fLevel,EventContext)	\
-    ( (This)->lpVtbl -> SetMasterVolume(This,fLevel,EventContext) ) 
-
-#define ISimpleAudioVolume_GetMasterVolume(This,pfLevel)	\
-    ( (This)->lpVtbl -> GetMasterVolume(This,pfLevel) ) 
-
-#define ISimpleAudioVolume_SetMute(This,bMute,EventContext)	\
-    ( (This)->lpVtbl -> SetMute(This,bMute,EventContext) ) 
-
-#define ISimpleAudioVolume_GetMute(This,pbMute)	\
-    ( (This)->lpVtbl -> GetMute(This,pbMute) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __ISimpleAudioVolume_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioStreamVolume_INTERFACE_DEFINED__
-#define __IAudioStreamVolume_INTERFACE_DEFINED__
-
-/* interface IAudioStreamVolume */
-/* [local][unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IAudioStreamVolume;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("93014887-242D-4068-8A15-CF5E93B90FE3")
-    IAudioStreamVolume : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetChannelCount( 
-            /* [out] */ 
-            __out  UINT32 *pdwCount) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetChannelVolume( 
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [in] */ 
-            __in  const float fLevel) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetChannelVolume( 
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [out] */ 
-            __out  float *pfLevel) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetAllVolumes( 
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][in] */ 
-            __in_ecount(dwCount)  const float *pfVolumes) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAllVolumes( 
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][out] */ 
-            __out_ecount(dwCount)  float *pfVolumes) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioStreamVolumeVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioStreamVolume * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioStreamVolume * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioStreamVolume * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IAudioStreamVolume * This,
-            /* [out] */ 
-            __out  UINT32 *pdwCount);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetChannelVolume )( 
-            IAudioStreamVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [in] */ 
-            __in  const float fLevel);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetChannelVolume )( 
-            IAudioStreamVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [out] */ 
-            __out  float *pfLevel);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetAllVolumes )( 
-            IAudioStreamVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][in] */ 
-            __in_ecount(dwCount)  const float *pfVolumes);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAllVolumes )( 
-            IAudioStreamVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][out] */ 
-            __out_ecount(dwCount)  float *pfVolumes);
-        
-        END_INTERFACE
-    } IAudioStreamVolumeVtbl;
-
-    interface IAudioStreamVolume
-    {
-        CONST_VTBL struct IAudioStreamVolumeVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioStreamVolume_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioStreamVolume_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioStreamVolume_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioStreamVolume_GetChannelCount(This,pdwCount)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pdwCount) ) 
-
-#define IAudioStreamVolume_SetChannelVolume(This,dwIndex,fLevel)	\
-    ( (This)->lpVtbl -> SetChannelVolume(This,dwIndex,fLevel) ) 
-
-#define IAudioStreamVolume_GetChannelVolume(This,dwIndex,pfLevel)	\
-    ( (This)->lpVtbl -> GetChannelVolume(This,dwIndex,pfLevel) ) 
-
-#define IAudioStreamVolume_SetAllVolumes(This,dwCount,pfVolumes)	\
-    ( (This)->lpVtbl -> SetAllVolumes(This,dwCount,pfVolumes) ) 
-
-#define IAudioStreamVolume_GetAllVolumes(This,dwCount,pfVolumes)	\
-    ( (This)->lpVtbl -> GetAllVolumes(This,dwCount,pfVolumes) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioStreamVolume_INTERFACE_DEFINED__ */
-
-
-#ifndef __IChannelAudioVolume_INTERFACE_DEFINED__
-#define __IChannelAudioVolume_INTERFACE_DEFINED__
-
-/* interface IChannelAudioVolume */
-/* [local][unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IChannelAudioVolume;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("1C158861-B533-4B30-B1CF-E853E51C59B8")
-    IChannelAudioVolume : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetChannelCount( 
-            /* [out] */ 
-            __out  UINT32 *pdwCount) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetChannelVolume( 
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [in] */ 
-            __in  const float fLevel,
-            /* [unique][in] */ LPCGUID EventContext) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetChannelVolume( 
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [out] */ 
-            __out  float *pfLevel) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetAllVolumes( 
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][in] */ 
-            __in_ecount(dwCount)  const float *pfVolumes,
-            /* [unique][in] */ LPCGUID EventContext) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAllVolumes( 
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][out] */ 
-            __out_ecount(dwCount)  float *pfVolumes) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IChannelAudioVolumeVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IChannelAudioVolume * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IChannelAudioVolume * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IChannelAudioVolume * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IChannelAudioVolume * This,
-            /* [out] */ 
-            __out  UINT32 *pdwCount);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetChannelVolume )( 
-            IChannelAudioVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [in] */ 
-            __in  const float fLevel,
-            /* [unique][in] */ LPCGUID EventContext);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetChannelVolume )( 
-            IChannelAudioVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwIndex,
-            /* [out] */ 
-            __out  float *pfLevel);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetAllVolumes )( 
-            IChannelAudioVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][in] */ 
-            __in_ecount(dwCount)  const float *pfVolumes,
-            /* [unique][in] */ LPCGUID EventContext);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAllVolumes )( 
-            IChannelAudioVolume * This,
-            /* [in] */ 
-            __in  UINT32 dwCount,
-            /* [size_is][out] */ 
-            __out_ecount(dwCount)  float *pfVolumes);
-        
-        END_INTERFACE
-    } IChannelAudioVolumeVtbl;
-
-    interface IChannelAudioVolume
-    {
-        CONST_VTBL struct IChannelAudioVolumeVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IChannelAudioVolume_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IChannelAudioVolume_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IChannelAudioVolume_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IChannelAudioVolume_GetChannelCount(This,pdwCount)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pdwCount) ) 
-
-#define IChannelAudioVolume_SetChannelVolume(This,dwIndex,fLevel,EventContext)	\
-    ( (This)->lpVtbl -> SetChannelVolume(This,dwIndex,fLevel,EventContext) ) 
-
-#define IChannelAudioVolume_GetChannelVolume(This,dwIndex,pfLevel)	\
-    ( (This)->lpVtbl -> GetChannelVolume(This,dwIndex,pfLevel) ) 
-
-#define IChannelAudioVolume_SetAllVolumes(This,dwCount,pfVolumes,EventContext)	\
-    ( (This)->lpVtbl -> SetAllVolumes(This,dwCount,pfVolumes,EventContext) ) 
-
-#define IChannelAudioVolume_GetAllVolumes(This,dwCount,pfVolumes)	\
-    ( (This)->lpVtbl -> GetAllVolumes(This,dwCount,pfVolumes) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IChannelAudioVolume_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_audioclient_0000_0007 */
-/* [local] */ 
-
-#define FACILITY_AUDCLNT 0x889
-#define AUDCLNT_ERR(n) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_AUDCLNT, n)
-#define AUDCLNT_SUCCESS(n) MAKE_SCODE(SEVERITY_SUCCESS, FACILITY_AUDCLNT, n)
-#define AUDCLNT_E_NOT_INITIALIZED            AUDCLNT_ERR(0x001)
-#define AUDCLNT_E_ALREADY_INITIALIZED        AUDCLNT_ERR(0x002)
-#define AUDCLNT_E_WRONG_ENDPOINT_TYPE        AUDCLNT_ERR(0x003)
-#define AUDCLNT_E_DEVICE_INVALIDATED         AUDCLNT_ERR(0x004)
-#define AUDCLNT_E_NOT_STOPPED                AUDCLNT_ERR(0x005)
-#define AUDCLNT_E_BUFFER_TOO_LARGE           AUDCLNT_ERR(0x006)
-#define AUDCLNT_E_OUT_OF_ORDER               AUDCLNT_ERR(0x007)
-#define AUDCLNT_E_UNSUPPORTED_FORMAT         AUDCLNT_ERR(0x008)
-#define AUDCLNT_E_INVALID_SIZE               AUDCLNT_ERR(0x009)
-#define AUDCLNT_E_DEVICE_IN_USE              AUDCLNT_ERR(0x00a)
-#define AUDCLNT_E_BUFFER_OPERATION_PENDING   AUDCLNT_ERR(0x00b)
-#define AUDCLNT_E_THREAD_NOT_REGISTERED      AUDCLNT_ERR(0x00c)
-#define AUDCLNT_E_EXCLUSIVE_MODE_NOT_ALLOWED AUDCLNT_ERR(0x00e)
-#define AUDCLNT_E_ENDPOINT_CREATE_FAILED     AUDCLNT_ERR(0x00f)
-#define AUDCLNT_E_SERVICE_NOT_RUNNING        AUDCLNT_ERR(0x010)
-#define AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED     AUDCLNT_ERR(0x011)
-#define AUDCLNT_E_EXCLUSIVE_MODE_ONLY          AUDCLNT_ERR(0x012)
-#define AUDCLNT_E_BUFDURATION_PERIOD_NOT_EQUAL AUDCLNT_ERR(0x013)
-#define AUDCLNT_E_EVENTHANDLE_NOT_SET          AUDCLNT_ERR(0x014)
-#define AUDCLNT_E_INCORRECT_BUFFER_SIZE        AUDCLNT_ERR(0x015)
-#define AUDCLNT_E_BUFFER_SIZE_ERROR            AUDCLNT_ERR(0x016)
-#define AUDCLNT_E_CPUUSAGE_EXCEEDED            AUDCLNT_ERR(0x017)
-#define AUDCLNT_S_BUFFER_EMPTY              AUDCLNT_SUCCESS(0x001)
-#define AUDCLNT_S_THREAD_ALREADY_REGISTERED AUDCLNT_SUCCESS(0x002)
-#define AUDCLNT_S_POSITION_STALLED		   AUDCLNT_SUCCESS(0x003)
-
-
-extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0007_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_audioclient_0000_0007_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
-
diff -Naur src/hostapi/wasapi/mingw-include/devicetopology.h src/hostapi/wasapi/mingw-include/devicetopology.h
--- src/hostapi/wasapi/mingw-include/devicetopology.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/devicetopology.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,3275 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0499 */
-/* Compiler settings for devicetopology.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data 
-    VC __declspec() decoration level: 
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 500
-#endif
-
-/* verify that the <rpcsal.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCSAL_H_VERSION__
-#define __REQUIRED_RPCSAL_H_VERSION__ 100
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __devicetopology_h__
-#define __devicetopology_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */ 
-
-#ifndef __IKsControl_FWD_DEFINED__
-#define __IKsControl_FWD_DEFINED__
-typedef interface IKsControl IKsControl;
-#endif 	/* __IKsControl_FWD_DEFINED__ */
-
-
-#ifndef __IPerChannelDbLevel_FWD_DEFINED__
-#define __IPerChannelDbLevel_FWD_DEFINED__
-typedef interface IPerChannelDbLevel IPerChannelDbLevel;
-#endif 	/* __IPerChannelDbLevel_FWD_DEFINED__ */
-
-
-#ifndef __IAudioVolumeLevel_FWD_DEFINED__
-#define __IAudioVolumeLevel_FWD_DEFINED__
-typedef interface IAudioVolumeLevel IAudioVolumeLevel;
-#endif 	/* __IAudioVolumeLevel_FWD_DEFINED__ */
-
-
-#ifndef __IAudioChannelConfig_FWD_DEFINED__
-#define __IAudioChannelConfig_FWD_DEFINED__
-typedef interface IAudioChannelConfig IAudioChannelConfig;
-#endif 	/* __IAudioChannelConfig_FWD_DEFINED__ */
-
-
-#ifndef __IAudioLoudness_FWD_DEFINED__
-#define __IAudioLoudness_FWD_DEFINED__
-typedef interface IAudioLoudness IAudioLoudness;
-#endif 	/* __IAudioLoudness_FWD_DEFINED__ */
-
-
-#ifndef __IAudioInputSelector_FWD_DEFINED__
-#define __IAudioInputSelector_FWD_DEFINED__
-typedef interface IAudioInputSelector IAudioInputSelector;
-#endif 	/* __IAudioInputSelector_FWD_DEFINED__ */
-
-
-#ifndef __IAudioOutputSelector_FWD_DEFINED__
-#define __IAudioOutputSelector_FWD_DEFINED__
-typedef interface IAudioOutputSelector IAudioOutputSelector;
-#endif 	/* __IAudioOutputSelector_FWD_DEFINED__ */
-
-
-#ifndef __IAudioMute_FWD_DEFINED__
-#define __IAudioMute_FWD_DEFINED__
-typedef interface IAudioMute IAudioMute;
-#endif 	/* __IAudioMute_FWD_DEFINED__ */
-
-
-#ifndef __IAudioBass_FWD_DEFINED__
-#define __IAudioBass_FWD_DEFINED__
-typedef interface IAudioBass IAudioBass;
-#endif 	/* __IAudioBass_FWD_DEFINED__ */
-
-
-#ifndef __IAudioMidrange_FWD_DEFINED__
-#define __IAudioMidrange_FWD_DEFINED__
-typedef interface IAudioMidrange IAudioMidrange;
-#endif 	/* __IAudioMidrange_FWD_DEFINED__ */
-
-
-#ifndef __IAudioTreble_FWD_DEFINED__
-#define __IAudioTreble_FWD_DEFINED__
-typedef interface IAudioTreble IAudioTreble;
-#endif 	/* __IAudioTreble_FWD_DEFINED__ */
-
-
-#ifndef __IAudioAutoGainControl_FWD_DEFINED__
-#define __IAudioAutoGainControl_FWD_DEFINED__
-typedef interface IAudioAutoGainControl IAudioAutoGainControl;
-#endif 	/* __IAudioAutoGainControl_FWD_DEFINED__ */
-
-
-#ifndef __IAudioPeakMeter_FWD_DEFINED__
-#define __IAudioPeakMeter_FWD_DEFINED__
-typedef interface IAudioPeakMeter IAudioPeakMeter;
-#endif 	/* __IAudioPeakMeter_FWD_DEFINED__ */
-
-
-#ifndef __IDeviceSpecificProperty_FWD_DEFINED__
-#define __IDeviceSpecificProperty_FWD_DEFINED__
-typedef interface IDeviceSpecificProperty IDeviceSpecificProperty;
-#endif 	/* __IDeviceSpecificProperty_FWD_DEFINED__ */
-
-
-#ifndef __IKsFormatSupport_FWD_DEFINED__
-#define __IKsFormatSupport_FWD_DEFINED__
-typedef interface IKsFormatSupport IKsFormatSupport;
-#endif 	/* __IKsFormatSupport_FWD_DEFINED__ */
-
-
-#ifndef __IKsJackDescription_FWD_DEFINED__
-#define __IKsJackDescription_FWD_DEFINED__
-typedef interface IKsJackDescription IKsJackDescription;
-#endif 	/* __IKsJackDescription_FWD_DEFINED__ */
-
-
-#ifndef __IPartsList_FWD_DEFINED__
-#define __IPartsList_FWD_DEFINED__
-typedef interface IPartsList IPartsList;
-#endif 	/* __IPartsList_FWD_DEFINED__ */
-
-
-#ifndef __IPart_FWD_DEFINED__
-#define __IPart_FWD_DEFINED__
-typedef interface IPart IPart;
-#endif 	/* __IPart_FWD_DEFINED__ */
-
-
-#ifndef __IConnector_FWD_DEFINED__
-#define __IConnector_FWD_DEFINED__
-typedef interface IConnector IConnector;
-#endif 	/* __IConnector_FWD_DEFINED__ */
-
-
-#ifndef __ISubunit_FWD_DEFINED__
-#define __ISubunit_FWD_DEFINED__
-typedef interface ISubunit ISubunit;
-#endif 	/* __ISubunit_FWD_DEFINED__ */
-
-
-#ifndef __IControlInterface_FWD_DEFINED__
-#define __IControlInterface_FWD_DEFINED__
-typedef interface IControlInterface IControlInterface;
-#endif 	/* __IControlInterface_FWD_DEFINED__ */
-
-
-#ifndef __IControlChangeNotify_FWD_DEFINED__
-#define __IControlChangeNotify_FWD_DEFINED__
-typedef interface IControlChangeNotify IControlChangeNotify;
-#endif 	/* __IControlChangeNotify_FWD_DEFINED__ */
-
-
-#ifndef __IDeviceTopology_FWD_DEFINED__
-#define __IDeviceTopology_FWD_DEFINED__
-typedef interface IDeviceTopology IDeviceTopology;
-#endif 	/* __IDeviceTopology_FWD_DEFINED__ */
-
-
-#ifndef __DeviceTopology_FWD_DEFINED__
-#define __DeviceTopology_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class DeviceTopology DeviceTopology;
-#else
-typedef struct DeviceTopology DeviceTopology;
-#endif /* __cplusplus */
-
-#endif 	/* __DeviceTopology_FWD_DEFINED__ */
-
-
-#ifndef __IPartsList_FWD_DEFINED__
-#define __IPartsList_FWD_DEFINED__
-typedef interface IPartsList IPartsList;
-#endif 	/* __IPartsList_FWD_DEFINED__ */
-
-
-#ifndef __IPerChannelDbLevel_FWD_DEFINED__
-#define __IPerChannelDbLevel_FWD_DEFINED__
-typedef interface IPerChannelDbLevel IPerChannelDbLevel;
-#endif 	/* __IPerChannelDbLevel_FWD_DEFINED__ */
-
-
-#ifndef __IAudioVolumeLevel_FWD_DEFINED__
-#define __IAudioVolumeLevel_FWD_DEFINED__
-typedef interface IAudioVolumeLevel IAudioVolumeLevel;
-#endif 	/* __IAudioVolumeLevel_FWD_DEFINED__ */
-
-
-#ifndef __IAudioLoudness_FWD_DEFINED__
-#define __IAudioLoudness_FWD_DEFINED__
-typedef interface IAudioLoudness IAudioLoudness;
-#endif 	/* __IAudioLoudness_FWD_DEFINED__ */
-
-
-#ifndef __IAudioInputSelector_FWD_DEFINED__
-#define __IAudioInputSelector_FWD_DEFINED__
-typedef interface IAudioInputSelector IAudioInputSelector;
-#endif 	/* __IAudioInputSelector_FWD_DEFINED__ */
-
-
-#ifndef __IAudioMute_FWD_DEFINED__
-#define __IAudioMute_FWD_DEFINED__
-typedef interface IAudioMute IAudioMute;
-#endif 	/* __IAudioMute_FWD_DEFINED__ */
-
-
-#ifndef __IAudioBass_FWD_DEFINED__
-#define __IAudioBass_FWD_DEFINED__
-typedef interface IAudioBass IAudioBass;
-#endif 	/* __IAudioBass_FWD_DEFINED__ */
-
-
-#ifndef __IAudioMidrange_FWD_DEFINED__
-#define __IAudioMidrange_FWD_DEFINED__
-typedef interface IAudioMidrange IAudioMidrange;
-#endif 	/* __IAudioMidrange_FWD_DEFINED__ */
-
-
-#ifndef __IAudioTreble_FWD_DEFINED__
-#define __IAudioTreble_FWD_DEFINED__
-typedef interface IAudioTreble IAudioTreble;
-#endif 	/* __IAudioTreble_FWD_DEFINED__ */
-
-
-#ifndef __IAudioAutoGainControl_FWD_DEFINED__
-#define __IAudioAutoGainControl_FWD_DEFINED__
-typedef interface IAudioAutoGainControl IAudioAutoGainControl;
-#endif 	/* __IAudioAutoGainControl_FWD_DEFINED__ */
-
-
-#ifndef __IAudioOutputSelector_FWD_DEFINED__
-#define __IAudioOutputSelector_FWD_DEFINED__
-typedef interface IAudioOutputSelector IAudioOutputSelector;
-#endif 	/* __IAudioOutputSelector_FWD_DEFINED__ */
-
-
-#ifndef __IAudioPeakMeter_FWD_DEFINED__
-#define __IAudioPeakMeter_FWD_DEFINED__
-typedef interface IAudioPeakMeter IAudioPeakMeter;
-#endif 	/* __IAudioPeakMeter_FWD_DEFINED__ */
-
-
-#ifndef __IDeviceSpecificProperty_FWD_DEFINED__
-#define __IDeviceSpecificProperty_FWD_DEFINED__
-typedef interface IDeviceSpecificProperty IDeviceSpecificProperty;
-#endif 	/* __IDeviceSpecificProperty_FWD_DEFINED__ */
-
-
-#ifndef __IKsFormatSupport_FWD_DEFINED__
-#define __IKsFormatSupport_FWD_DEFINED__
-typedef interface IKsFormatSupport IKsFormatSupport;
-#endif 	/* __IKsFormatSupport_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "oaidl.h"
-#include "ocidl.h"
-#include "propidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif 
-
-
-/* interface __MIDL_itf_devicetopology_0000_0000 */
-/* [local] */ 
-
-#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
-//
-//   Flag for clients of IControlChangeNotify::OnNotify to allow those clients to identify hardware initiated notifications
-//
-#define DEVTOPO_HARDWARE_INITIATED_EVENTCONTEXT 'draH'
-/* E2C2E9DE-09B1-4B04-84E5-07931225EE04 */
-DEFINE_GUID(EVENTCONTEXT_VOLUMESLIDER, 0xE2C2E9DE,0x09B1,0x4B04,0x84, 0xE5, 0x07, 0x93, 0x12, 0x25, 0xEE, 0x04);
-#define _IKsControl_
-#include "ks.h"
-#include "ksmedia.h"
-#ifndef _KS_
-typedef /* [public] */ struct __MIDL___MIDL_itf_devicetopology_0000_0000_0001
-    {
-    ULONG FormatSize;
-    ULONG Flags;
-    ULONG SampleSize;
-    ULONG Reserved;
-    GUID MajorFormat;
-    GUID SubFormat;
-    GUID Specifier;
-    } 	KSDATAFORMAT;
-
-typedef struct __MIDL___MIDL_itf_devicetopology_0000_0000_0001 *PKSDATAFORMAT;
-
-typedef /* [public][public][public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_devicetopology_0000_0000_0002
-    {
-    union 
-        {
-        struct 
-            {
-            GUID Set;
-            ULONG Id;
-            ULONG Flags;
-            } 	;
-        LONGLONG Alignment;
-        } 	;
-    } 	KSIDENTIFIER;
-
-typedef struct __MIDL___MIDL_itf_devicetopology_0000_0000_0002 *PKSIDENTIFIER;
-
-typedef /* [public][public][public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0005
-    {	ePcxChanMap_FL_FR	= 0,
-	ePcxChanMap_FC_LFE	= ( ePcxChanMap_FL_FR + 1 ) ,
-	ePcxChanMap_BL_BR	= ( ePcxChanMap_FC_LFE + 1 ) ,
-	ePcxChanMap_FLC_FRC	= ( ePcxChanMap_BL_BR + 1 ) ,
-	ePcxChanMap_SL_SR	= ( ePcxChanMap_FLC_FRC + 1 ) ,
-	ePcxChanMap_Unknown	= ( ePcxChanMap_SL_SR + 1 ) 
-    } 	EChannelMapping;
-
-typedef /* [public][public][public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0006
-    {	eConnTypeUnknown	= 0,
-	eConnTypeEighth	= ( eConnTypeUnknown + 1 ) ,
-	eConnTypeQuarter	= ( eConnTypeEighth + 1 ) ,
-	eConnTypeAtapiInternal	= ( eConnTypeQuarter + 1 ) ,
-	eConnTypeRCA	= ( eConnTypeAtapiInternal + 1 ) ,
-	eConnTypeOptical	= ( eConnTypeRCA + 1 ) ,
-	eConnTypeOtherDigital	= ( eConnTypeOptical + 1 ) ,
-	eConnTypeOtherAnalog	= ( eConnTypeOtherDigital + 1 ) ,
-	eConnTypeMultichannelAnalogDIN	= ( eConnTypeOtherAnalog + 1 ) ,
-	eConnTypeXlrProfessional	= ( eConnTypeMultichannelAnalogDIN + 1 ) ,
-	eConnTypeRJ11Modem	= ( eConnTypeXlrProfessional + 1 ) ,
-	eConnTypeCombination	= ( eConnTypeRJ11Modem + 1 ) 
-    } 	EPcxConnectionType;
-
-typedef /* [public][public][public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0007
-    {	eGeoLocRear	= 0x1,
-	eGeoLocFront	= ( eGeoLocRear + 1 ) ,
-	eGeoLocLeft	= ( eGeoLocFront + 1 ) ,
-	eGeoLocRight	= ( eGeoLocLeft + 1 ) ,
-	eGeoLocTop	= ( eGeoLocRight + 1 ) ,
-	eGeoLocBottom	= ( eGeoLocTop + 1 ) ,
-	eGeoLocRearOPanel	= ( eGeoLocBottom + 1 ) ,
-	eGeoLocRiser	= ( eGeoLocRearOPanel + 1 ) ,
-	eGeoLocInsideMobileLid	= ( eGeoLocRiser + 1 ) ,
-	eGeoLocDrivebay	= ( eGeoLocInsideMobileLid + 1 ) ,
-	eGeoLocHDMI	= ( eGeoLocDrivebay + 1 ) ,
-	eGeoLocOutsideMobileLid	= ( eGeoLocHDMI + 1 ) ,
-	eGeoLocATAPI	= ( eGeoLocOutsideMobileLid + 1 ) ,
-	eGeoLocReserved5	= ( eGeoLocATAPI + 1 ) ,
-	eGeoLocReserved6	= ( eGeoLocReserved5 + 1 ) 
-    } 	EPcxGeoLocation;
-
-typedef /* [public][public][public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0008
-    {	eGenLocPrimaryBox	= 0,
-	eGenLocInternal	= ( eGenLocPrimaryBox + 1 ) ,
-	eGenLocSeperate	= ( eGenLocInternal + 1 ) ,
-	eGenLocOther	= ( eGenLocSeperate + 1 ) 
-    } 	EPcxGenLocation;
-
-typedef /* [public][public][public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0009
-    {	ePortConnJack	= 0,
-	ePortConnIntegratedDevice	= ( ePortConnJack + 1 ) ,
-	ePortConnBothIntegratedAndJack	= ( ePortConnIntegratedDevice + 1 ) ,
-	ePortConnUnknown	= ( ePortConnBothIntegratedAndJack + 1 ) 
-    } 	EPxcPortConnection;
-
-typedef /* [public][public] */ struct __MIDL___MIDL_itf_devicetopology_0000_0000_0010
-    {
-    EChannelMapping ChannelMapping;
-    COLORREF Color;
-    EPcxConnectionType ConnectionType;
-    EPcxGeoLocation GeoLocation;
-    EPcxGenLocation GenLocation;
-    EPxcPortConnection PortConnection;
-    BOOL IsConnected;
-    } 	KSJACK_DESCRIPTION;
-
-typedef struct __MIDL___MIDL_itf_devicetopology_0000_0000_0010 *PKSJACK_DESCRIPTION;
-
-typedef KSIDENTIFIER KSPROPERTY;
-
-typedef KSIDENTIFIER *PKSPROPERTY;
-
-typedef KSIDENTIFIER KSMETHOD;
-
-typedef KSIDENTIFIER *PKSMETHOD;
-
-typedef KSIDENTIFIER KSEVENT;
-
-typedef KSIDENTIFIER *PKSEVENT;
-
-#endif
-
-
-
-
-
-
-
-
-typedef /* [public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0011
-    {	In	= 0,
-	Out	= ( In + 1 ) 
-    } 	DataFlow;
-
-typedef /* [public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0012
-    {	Connector	= 0,
-	Subunit	= ( Connector + 1 ) 
-    } 	PartType;
-
-#define PARTTYPE_FLAG_CONNECTOR 0x00010000
-#define PARTTYPE_FLAG_SUBUNIT   0x00020000
-#define PARTTYPE_MASK           0x00030000
-#define PARTID_MASK             0x0000ffff
-typedef /* [public][public] */ 
-enum __MIDL___MIDL_itf_devicetopology_0000_0000_0013
-    {	Unknown_Connector	= 0,
-	Physical_Internal	= ( Unknown_Connector + 1 ) ,
-	Physical_External	= ( Physical_Internal + 1 ) ,
-	Software_IO	= ( Physical_External + 1 ) ,
-	Software_Fixed	= ( Software_IO + 1 ) ,
-	Network	= ( Software_Fixed + 1 ) 
-    } 	ConnectorType;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_devicetopology_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_devicetopology_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IKsControl_INTERFACE_DEFINED__
-#define __IKsControl_INTERFACE_DEFINED__
-
-/* interface IKsControl */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IKsControl;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("28F54685-06FD-11D2-B27A-00A0C9223196")
-    IKsControl : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE KsProperty( 
-            /* [in] */ PKSPROPERTY Property,
-            /* [in] */ ULONG PropertyLength,
-            /* [out][in] */ void *PropertyData,
-            /* [in] */ ULONG DataLength,
-            /* [out] */ ULONG *BytesReturned) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE KsMethod( 
-            /* [in] */ PKSMETHOD Method,
-            /* [in] */ ULONG MethodLength,
-            /* [out][in] */ void *MethodData,
-            /* [in] */ ULONG DataLength,
-            /* [out] */ ULONG *BytesReturned) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE KsEvent( 
-            /* [in] */ PKSEVENT Event,
-            /* [in] */ ULONG EventLength,
-            /* [out][in] */ void *EventData,
-            /* [in] */ ULONG DataLength,
-            /* [out] */ ULONG *BytesReturned) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IKsControlVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IKsControl * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IKsControl * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IKsControl * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *KsProperty )( 
-            IKsControl * This,
-            /* [in] */ PKSPROPERTY Property,
-            /* [in] */ ULONG PropertyLength,
-            /* [out][in] */ void *PropertyData,
-            /* [in] */ ULONG DataLength,
-            /* [out] */ ULONG *BytesReturned);
-        
-        HRESULT ( STDMETHODCALLTYPE *KsMethod )( 
-            IKsControl * This,
-            /* [in] */ PKSMETHOD Method,
-            /* [in] */ ULONG MethodLength,
-            /* [out][in] */ void *MethodData,
-            /* [in] */ ULONG DataLength,
-            /* [out] */ ULONG *BytesReturned);
-        
-        HRESULT ( STDMETHODCALLTYPE *KsEvent )( 
-            IKsControl * This,
-            /* [in] */ PKSEVENT Event,
-            /* [in] */ ULONG EventLength,
-            /* [out][in] */ void *EventData,
-            /* [in] */ ULONG DataLength,
-            /* [out] */ ULONG *BytesReturned);
-        
-        END_INTERFACE
-    } IKsControlVtbl;
-
-    interface IKsControl
-    {
-        CONST_VTBL struct IKsControlVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IKsControl_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IKsControl_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IKsControl_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IKsControl_KsProperty(This,Property,PropertyLength,PropertyData,DataLength,BytesReturned)	\
-    ( (This)->lpVtbl -> KsProperty(This,Property,PropertyLength,PropertyData,DataLength,BytesReturned) ) 
-
-#define IKsControl_KsMethod(This,Method,MethodLength,MethodData,DataLength,BytesReturned)	\
-    ( (This)->lpVtbl -> KsMethod(This,Method,MethodLength,MethodData,DataLength,BytesReturned) ) 
-
-#define IKsControl_KsEvent(This,Event,EventLength,EventData,DataLength,BytesReturned)	\
-    ( (This)->lpVtbl -> KsEvent(This,Event,EventLength,EventData,DataLength,BytesReturned) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IKsControl_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPerChannelDbLevel_INTERFACE_DEFINED__
-#define __IPerChannelDbLevel_INTERFACE_DEFINED__
-
-/* interface IPerChannelDbLevel */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IPerChannelDbLevel;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("C2F8E001-F205-4BC9-99BC-C13B1E048CCB")
-    IPerChannelDbLevel : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetChannelCount( 
-            /* [out] */ 
-            __out  UINT *pcChannels) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLevelRange( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfMinLevelDB,
-            /* [out] */ 
-            __out  float *pfMaxLevelDB,
-            /* [out] */ 
-            __out  float *pfStepping) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLevel( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetLevel( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetLevelUniform( 
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetLevelAllChannels( 
-            /* [size_is][in] */ 
-            __in_ecount(cChannels)  float aLevelsDB[  ],
-            /* [in] */ 
-            __in  ULONG cChannels,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPerChannelDbLevelVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPerChannelDbLevel * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPerChannelDbLevel * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPerChannelDbLevel * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IPerChannelDbLevel * This,
-            /* [out] */ 
-            __out  UINT *pcChannels);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( 
-            IPerChannelDbLevel * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfMinLevelDB,
-            /* [out] */ 
-            __out  float *pfMaxLevelDB,
-            /* [out] */ 
-            __out  float *pfStepping);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( 
-            IPerChannelDbLevel * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( 
-            IPerChannelDbLevel * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( 
-            IPerChannelDbLevel * This,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( 
-            IPerChannelDbLevel * This,
-            /* [size_is][in] */ 
-            __in_ecount(cChannels)  float aLevelsDB[  ],
-            /* [in] */ 
-            __in  ULONG cChannels,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IPerChannelDbLevelVtbl;
-
-    interface IPerChannelDbLevel
-    {
-        CONST_VTBL struct IPerChannelDbLevelVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPerChannelDbLevel_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPerChannelDbLevel_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPerChannelDbLevel_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPerChannelDbLevel_GetChannelCount(This,pcChannels)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) 
-
-#define IPerChannelDbLevel_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)	\
-    ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) 
-
-#define IPerChannelDbLevel_GetLevel(This,nChannel,pfLevelDB)	\
-    ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) 
-
-#define IPerChannelDbLevel_SetLevel(This,nChannel,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) 
-
-#define IPerChannelDbLevel_SetLevelUniform(This,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) 
-
-#define IPerChannelDbLevel_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPerChannelDbLevel_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioVolumeLevel_INTERFACE_DEFINED__
-#define __IAudioVolumeLevel_INTERFACE_DEFINED__
-
-/* interface IAudioVolumeLevel */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioVolumeLevel;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("7FB7B48F-531D-44A2-BCB3-5AD5A134B3DC")
-    IAudioVolumeLevel : public IPerChannelDbLevel
-    {
-    public:
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioVolumeLevelVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioVolumeLevel * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioVolumeLevel * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioVolumeLevel * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IAudioVolumeLevel * This,
-            /* [out] */ 
-            __out  UINT *pcChannels);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( 
-            IAudioVolumeLevel * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfMinLevelDB,
-            /* [out] */ 
-            __out  float *pfMaxLevelDB,
-            /* [out] */ 
-            __out  float *pfStepping);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( 
-            IAudioVolumeLevel * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( 
-            IAudioVolumeLevel * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( 
-            IAudioVolumeLevel * This,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( 
-            IAudioVolumeLevel * This,
-            /* [size_is][in] */ 
-            __in_ecount(cChannels)  float aLevelsDB[  ],
-            /* [in] */ 
-            __in  ULONG cChannels,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioVolumeLevelVtbl;
-
-    interface IAudioVolumeLevel
-    {
-        CONST_VTBL struct IAudioVolumeLevelVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioVolumeLevel_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioVolumeLevel_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioVolumeLevel_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioVolumeLevel_GetChannelCount(This,pcChannels)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) 
-
-#define IAudioVolumeLevel_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)	\
-    ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) 
-
-#define IAudioVolumeLevel_GetLevel(This,nChannel,pfLevelDB)	\
-    ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) 
-
-#define IAudioVolumeLevel_SetLevel(This,nChannel,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) 
-
-#define IAudioVolumeLevel_SetLevelUniform(This,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) 
-
-#define IAudioVolumeLevel_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) 
-
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioVolumeLevel_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioChannelConfig_INTERFACE_DEFINED__
-#define __IAudioChannelConfig_INTERFACE_DEFINED__
-
-/* interface IAudioChannelConfig */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioChannelConfig;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("BB11C46F-EC28-493C-B88A-5DB88062CE98")
-    IAudioChannelConfig : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetChannelConfig( 
-            /* [in] */ DWORD dwConfig,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetChannelConfig( 
-            /* [retval][out] */ DWORD *pdwConfig) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioChannelConfigVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioChannelConfig * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioChannelConfig * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioChannelConfig * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetChannelConfig )( 
-            IAudioChannelConfig * This,
-            /* [in] */ DWORD dwConfig,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelConfig )( 
-            IAudioChannelConfig * This,
-            /* [retval][out] */ DWORD *pdwConfig);
-        
-        END_INTERFACE
-    } IAudioChannelConfigVtbl;
-
-    interface IAudioChannelConfig
-    {
-        CONST_VTBL struct IAudioChannelConfigVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioChannelConfig_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioChannelConfig_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioChannelConfig_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioChannelConfig_SetChannelConfig(This,dwConfig,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetChannelConfig(This,dwConfig,pguidEventContext) ) 
-
-#define IAudioChannelConfig_GetChannelConfig(This,pdwConfig)	\
-    ( (This)->lpVtbl -> GetChannelConfig(This,pdwConfig) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioChannelConfig_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioLoudness_INTERFACE_DEFINED__
-#define __IAudioLoudness_INTERFACE_DEFINED__
-
-/* interface IAudioLoudness */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioLoudness;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("7D8B1437-DD53-4350-9C1B-1EE2890BD938")
-    IAudioLoudness : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetEnabled( 
-            /* [out] */ 
-            __out  BOOL *pbEnabled) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetEnabled( 
-            /* [in] */ 
-            __in  BOOL bEnable,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioLoudnessVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioLoudness * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioLoudness * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioLoudness * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetEnabled )( 
-            IAudioLoudness * This,
-            /* [out] */ 
-            __out  BOOL *pbEnabled);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetEnabled )( 
-            IAudioLoudness * This,
-            /* [in] */ 
-            __in  BOOL bEnable,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioLoudnessVtbl;
-
-    interface IAudioLoudness
-    {
-        CONST_VTBL struct IAudioLoudnessVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioLoudness_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioLoudness_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioLoudness_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioLoudness_GetEnabled(This,pbEnabled)	\
-    ( (This)->lpVtbl -> GetEnabled(This,pbEnabled) ) 
-
-#define IAudioLoudness_SetEnabled(This,bEnable,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetEnabled(This,bEnable,pguidEventContext) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioLoudness_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioInputSelector_INTERFACE_DEFINED__
-#define __IAudioInputSelector_INTERFACE_DEFINED__
-
-/* interface IAudioInputSelector */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioInputSelector;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("4F03DC02-5E6E-4653-8F72-A030C123D598")
-    IAudioInputSelector : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSelection( 
-            /* [out] */ 
-            __out  UINT *pnIdSelected) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetSelection( 
-            /* [in] */ 
-            __in  UINT nIdSelect,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioInputSelectorVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioInputSelector * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioInputSelector * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioInputSelector * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSelection )( 
-            IAudioInputSelector * This,
-            /* [out] */ 
-            __out  UINT *pnIdSelected);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetSelection )( 
-            IAudioInputSelector * This,
-            /* [in] */ 
-            __in  UINT nIdSelect,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioInputSelectorVtbl;
-
-    interface IAudioInputSelector
-    {
-        CONST_VTBL struct IAudioInputSelectorVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioInputSelector_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioInputSelector_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioInputSelector_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioInputSelector_GetSelection(This,pnIdSelected)	\
-    ( (This)->lpVtbl -> GetSelection(This,pnIdSelected) ) 
-
-#define IAudioInputSelector_SetSelection(This,nIdSelect,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetSelection(This,nIdSelect,pguidEventContext) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioInputSelector_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioOutputSelector_INTERFACE_DEFINED__
-#define __IAudioOutputSelector_INTERFACE_DEFINED__
-
-/* interface IAudioOutputSelector */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioOutputSelector;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("BB515F69-94A7-429e-8B9C-271B3F11A3AB")
-    IAudioOutputSelector : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSelection( 
-            /* [out] */ 
-            __out  UINT *pnIdSelected) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetSelection( 
-            /* [in] */ 
-            __in  UINT nIdSelect,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioOutputSelectorVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioOutputSelector * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioOutputSelector * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioOutputSelector * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSelection )( 
-            IAudioOutputSelector * This,
-            /* [out] */ 
-            __out  UINT *pnIdSelected);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetSelection )( 
-            IAudioOutputSelector * This,
-            /* [in] */ 
-            __in  UINT nIdSelect,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioOutputSelectorVtbl;
-
-    interface IAudioOutputSelector
-    {
-        CONST_VTBL struct IAudioOutputSelectorVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioOutputSelector_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioOutputSelector_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioOutputSelector_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioOutputSelector_GetSelection(This,pnIdSelected)	\
-    ( (This)->lpVtbl -> GetSelection(This,pnIdSelected) ) 
-
-#define IAudioOutputSelector_SetSelection(This,nIdSelect,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetSelection(This,nIdSelect,pguidEventContext) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioOutputSelector_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioMute_INTERFACE_DEFINED__
-#define __IAudioMute_INTERFACE_DEFINED__
-
-/* interface IAudioMute */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioMute;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("DF45AEEA-B74A-4B6B-AFAD-2366B6AA012E")
-    IAudioMute : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetMute( 
-            /* [in] */ 
-            __in  BOOL bMuted,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetMute( 
-            /* [out] */ 
-            __out  BOOL *pbMuted) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioMuteVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioMute * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioMute * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioMute * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetMute )( 
-            IAudioMute * This,
-            /* [in] */ 
-            __in  BOOL bMuted,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetMute )( 
-            IAudioMute * This,
-            /* [out] */ 
-            __out  BOOL *pbMuted);
-        
-        END_INTERFACE
-    } IAudioMuteVtbl;
-
-    interface IAudioMute
-    {
-        CONST_VTBL struct IAudioMuteVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioMute_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioMute_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioMute_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioMute_SetMute(This,bMuted,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetMute(This,bMuted,pguidEventContext) ) 
-
-#define IAudioMute_GetMute(This,pbMuted)	\
-    ( (This)->lpVtbl -> GetMute(This,pbMuted) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioMute_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioBass_INTERFACE_DEFINED__
-#define __IAudioBass_INTERFACE_DEFINED__
-
-/* interface IAudioBass */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioBass;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("A2B1A1D9-4DB3-425D-A2B2-BD335CB3E2E5")
-    IAudioBass : public IPerChannelDbLevel
-    {
-    public:
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioBassVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioBass * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioBass * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioBass * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IAudioBass * This,
-            /* [out] */ 
-            __out  UINT *pcChannels);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( 
-            IAudioBass * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfMinLevelDB,
-            /* [out] */ 
-            __out  float *pfMaxLevelDB,
-            /* [out] */ 
-            __out  float *pfStepping);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( 
-            IAudioBass * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( 
-            IAudioBass * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( 
-            IAudioBass * This,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( 
-            IAudioBass * This,
-            /* [size_is][in] */ 
-            __in_ecount(cChannels)  float aLevelsDB[  ],
-            /* [in] */ 
-            __in  ULONG cChannels,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioBassVtbl;
-
-    interface IAudioBass
-    {
-        CONST_VTBL struct IAudioBassVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioBass_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioBass_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioBass_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioBass_GetChannelCount(This,pcChannels)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) 
-
-#define IAudioBass_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)	\
-    ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) 
-
-#define IAudioBass_GetLevel(This,nChannel,pfLevelDB)	\
-    ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) 
-
-#define IAudioBass_SetLevel(This,nChannel,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) 
-
-#define IAudioBass_SetLevelUniform(This,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) 
-
-#define IAudioBass_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) 
-
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioBass_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioMidrange_INTERFACE_DEFINED__
-#define __IAudioMidrange_INTERFACE_DEFINED__
-
-/* interface IAudioMidrange */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioMidrange;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("5E54B6D7-B44B-40D9-9A9E-E691D9CE6EDF")
-    IAudioMidrange : public IPerChannelDbLevel
-    {
-    public:
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioMidrangeVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioMidrange * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioMidrange * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioMidrange * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IAudioMidrange * This,
-            /* [out] */ 
-            __out  UINT *pcChannels);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( 
-            IAudioMidrange * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfMinLevelDB,
-            /* [out] */ 
-            __out  float *pfMaxLevelDB,
-            /* [out] */ 
-            __out  float *pfStepping);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( 
-            IAudioMidrange * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( 
-            IAudioMidrange * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( 
-            IAudioMidrange * This,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( 
-            IAudioMidrange * This,
-            /* [size_is][in] */ 
-            __in_ecount(cChannels)  float aLevelsDB[  ],
-            /* [in] */ 
-            __in  ULONG cChannels,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioMidrangeVtbl;
-
-    interface IAudioMidrange
-    {
-        CONST_VTBL struct IAudioMidrangeVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioMidrange_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioMidrange_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioMidrange_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioMidrange_GetChannelCount(This,pcChannels)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) 
-
-#define IAudioMidrange_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)	\
-    ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) 
-
-#define IAudioMidrange_GetLevel(This,nChannel,pfLevelDB)	\
-    ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) 
-
-#define IAudioMidrange_SetLevel(This,nChannel,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) 
-
-#define IAudioMidrange_SetLevelUniform(This,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) 
-
-#define IAudioMidrange_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) 
-
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioMidrange_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioTreble_INTERFACE_DEFINED__
-#define __IAudioTreble_INTERFACE_DEFINED__
-
-/* interface IAudioTreble */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioTreble;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("0A717812-694E-4907-B74B-BAFA5CFDCA7B")
-    IAudioTreble : public IPerChannelDbLevel
-    {
-    public:
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioTrebleVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioTreble * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioTreble * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioTreble * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IAudioTreble * This,
-            /* [out] */ 
-            __out  UINT *pcChannels);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevelRange )( 
-            IAudioTreble * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfMinLevelDB,
-            /* [out] */ 
-            __out  float *pfMaxLevelDB,
-            /* [out] */ 
-            __out  float *pfStepping);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( 
-            IAudioTreble * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevel )( 
-            IAudioTreble * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelUniform )( 
-            IAudioTreble * This,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetLevelAllChannels )( 
-            IAudioTreble * This,
-            /* [size_is][in] */ 
-            __in_ecount(cChannels)  float aLevelsDB[  ],
-            /* [in] */ 
-            __in  ULONG cChannels,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioTrebleVtbl;
-
-    interface IAudioTreble
-    {
-        CONST_VTBL struct IAudioTrebleVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioTreble_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioTreble_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioTreble_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioTreble_GetChannelCount(This,pcChannels)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) 
-
-#define IAudioTreble_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)	\
-    ( (This)->lpVtbl -> GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) ) 
-
-#define IAudioTreble_GetLevel(This,nChannel,pfLevelDB)	\
-    ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevelDB) ) 
-
-#define IAudioTreble_SetLevel(This,nChannel,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevel(This,nChannel,fLevelDB,pguidEventContext) ) 
-
-#define IAudioTreble_SetLevelUniform(This,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelUniform(This,fLevelDB,pguidEventContext) ) 
-
-#define IAudioTreble_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) ) 
-
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioTreble_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioAutoGainControl_INTERFACE_DEFINED__
-#define __IAudioAutoGainControl_INTERFACE_DEFINED__
-
-/* interface IAudioAutoGainControl */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioAutoGainControl;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("85401FD4-6DE4-4b9d-9869-2D6753A82F3C")
-    IAudioAutoGainControl : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetEnabled( 
-            /* [out] */ 
-            __out  BOOL *pbEnabled) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetEnabled( 
-            /* [in] */ 
-            __in  BOOL bEnable,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioAutoGainControlVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioAutoGainControl * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioAutoGainControl * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioAutoGainControl * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetEnabled )( 
-            IAudioAutoGainControl * This,
-            /* [out] */ 
-            __out  BOOL *pbEnabled);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetEnabled )( 
-            IAudioAutoGainControl * This,
-            /* [in] */ 
-            __in  BOOL bEnable,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IAudioAutoGainControlVtbl;
-
-    interface IAudioAutoGainControl
-    {
-        CONST_VTBL struct IAudioAutoGainControlVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioAutoGainControl_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioAutoGainControl_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioAutoGainControl_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioAutoGainControl_GetEnabled(This,pbEnabled)	\
-    ( (This)->lpVtbl -> GetEnabled(This,pbEnabled) ) 
-
-#define IAudioAutoGainControl_SetEnabled(This,bEnable,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetEnabled(This,bEnable,pguidEventContext) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioAutoGainControl_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioPeakMeter_INTERFACE_DEFINED__
-#define __IAudioPeakMeter_INTERFACE_DEFINED__
-
-/* interface IAudioPeakMeter */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioPeakMeter;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("DD79923C-0599-45e0-B8B6-C8DF7DB6E796")
-    IAudioPeakMeter : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetChannelCount( 
-            /* [out] */ 
-            __out  UINT *pcChannels) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLevel( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevel) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioPeakMeterVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioPeakMeter * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioPeakMeter * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioPeakMeter * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IAudioPeakMeter * This,
-            /* [out] */ 
-            __out  UINT *pcChannels);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLevel )( 
-            IAudioPeakMeter * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevel);
-        
-        END_INTERFACE
-    } IAudioPeakMeterVtbl;
-
-    interface IAudioPeakMeter
-    {
-        CONST_VTBL struct IAudioPeakMeterVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioPeakMeter_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioPeakMeter_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioPeakMeter_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioPeakMeter_GetChannelCount(This,pcChannels)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pcChannels) ) 
-
-#define IAudioPeakMeter_GetLevel(This,nChannel,pfLevel)	\
-    ( (This)->lpVtbl -> GetLevel(This,nChannel,pfLevel) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioPeakMeter_INTERFACE_DEFINED__ */
-
-
-#ifndef __IDeviceSpecificProperty_INTERFACE_DEFINED__
-#define __IDeviceSpecificProperty_INTERFACE_DEFINED__
-
-/* interface IDeviceSpecificProperty */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IDeviceSpecificProperty;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("3B22BCBF-2586-4af0-8583-205D391B807C")
-    IDeviceSpecificProperty : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetType( 
-            /* [out] */ 
-            __deref_out  VARTYPE *pVType) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetValue( 
-            /* [out] */ 
-            __out  void *pvValue,
-            /* [out][in] */ 
-            __inout  DWORD *pcbValue) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SetValue( 
-            /* [in] */ 
-            __in  void *pvValue,
-            /* [in] */ DWORD cbValue,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Get4BRange( 
-            /* [out] */ 
-            __deref_out  LONG *plMin,
-            /* [out] */ 
-            __deref_out  LONG *plMax,
-            /* [out] */ 
-            __deref_out  LONG *plStepping) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IDeviceSpecificPropertyVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeviceSpecificProperty * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeviceSpecificProperty * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeviceSpecificProperty * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetType )( 
-            IDeviceSpecificProperty * This,
-            /* [out] */ 
-            __deref_out  VARTYPE *pVType);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetValue )( 
-            IDeviceSpecificProperty * This,
-            /* [out] */ 
-            __out  void *pvValue,
-            /* [out][in] */ 
-            __inout  DWORD *pcbValue);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *SetValue )( 
-            IDeviceSpecificProperty * This,
-            /* [in] */ 
-            __in  void *pvValue,
-            /* [in] */ DWORD cbValue,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Get4BRange )( 
-            IDeviceSpecificProperty * This,
-            /* [out] */ 
-            __deref_out  LONG *plMin,
-            /* [out] */ 
-            __deref_out  LONG *plMax,
-            /* [out] */ 
-            __deref_out  LONG *plStepping);
-        
-        END_INTERFACE
-    } IDeviceSpecificPropertyVtbl;
-
-    interface IDeviceSpecificProperty
-    {
-        CONST_VTBL struct IDeviceSpecificPropertyVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IDeviceSpecificProperty_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IDeviceSpecificProperty_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IDeviceSpecificProperty_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IDeviceSpecificProperty_GetType(This,pVType)	\
-    ( (This)->lpVtbl -> GetType(This,pVType) ) 
-
-#define IDeviceSpecificProperty_GetValue(This,pvValue,pcbValue)	\
-    ( (This)->lpVtbl -> GetValue(This,pvValue,pcbValue) ) 
-
-#define IDeviceSpecificProperty_SetValue(This,pvValue,cbValue,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetValue(This,pvValue,cbValue,pguidEventContext) ) 
-
-#define IDeviceSpecificProperty_Get4BRange(This,plMin,plMax,plStepping)	\
-    ( (This)->lpVtbl -> Get4BRange(This,plMin,plMax,plStepping) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IDeviceSpecificProperty_INTERFACE_DEFINED__ */
-
-
-#ifndef __IKsFormatSupport_INTERFACE_DEFINED__
-#define __IKsFormatSupport_INTERFACE_DEFINED__
-
-/* interface IKsFormatSupport */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IKsFormatSupport;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("3CB4A69D-BB6F-4D2B-95B7-452D2C155DB5")
-    IKsFormatSupport : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsFormatSupported( 
-            /* [size_is][in] */ PKSDATAFORMAT pKsFormat,
-            /* [in] */ 
-            __in  DWORD cbFormat,
-            /* [out] */ 
-            __out  BOOL *pbSupported) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDevicePreferredFormat( 
-            /* [out] */ PKSDATAFORMAT *ppKsFormat) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IKsFormatSupportVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IKsFormatSupport * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IKsFormatSupport * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IKsFormatSupport * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsFormatSupported )( 
-            IKsFormatSupport * This,
-            /* [size_is][in] */ PKSDATAFORMAT pKsFormat,
-            /* [in] */ 
-            __in  DWORD cbFormat,
-            /* [out] */ 
-            __out  BOOL *pbSupported);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDevicePreferredFormat )( 
-            IKsFormatSupport * This,
-            /* [out] */ PKSDATAFORMAT *ppKsFormat);
-        
-        END_INTERFACE
-    } IKsFormatSupportVtbl;
-
-    interface IKsFormatSupport
-    {
-        CONST_VTBL struct IKsFormatSupportVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IKsFormatSupport_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IKsFormatSupport_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IKsFormatSupport_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IKsFormatSupport_IsFormatSupported(This,pKsFormat,cbFormat,pbSupported)	\
-    ( (This)->lpVtbl -> IsFormatSupported(This,pKsFormat,cbFormat,pbSupported) ) 
-
-#define IKsFormatSupport_GetDevicePreferredFormat(This,ppKsFormat)	\
-    ( (This)->lpVtbl -> GetDevicePreferredFormat(This,ppKsFormat) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IKsFormatSupport_INTERFACE_DEFINED__ */
-
-
-#ifndef __IKsJackDescription_INTERFACE_DEFINED__
-#define __IKsJackDescription_INTERFACE_DEFINED__
-
-/* interface IKsJackDescription */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IKsJackDescription;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("4509F757-2D46-4637-8E62-CE7DB944F57B")
-    IKsJackDescription : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetJackCount( 
-            /* [out] */ 
-            __out  UINT *pcJacks) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetJackDescription( 
-            /* [in] */ UINT nJack,
-            /* [out] */ 
-            __out  KSJACK_DESCRIPTION *pDescription) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IKsJackDescriptionVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IKsJackDescription * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IKsJackDescription * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IKsJackDescription * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetJackCount )( 
-            IKsJackDescription * This,
-            /* [out] */ 
-            __out  UINT *pcJacks);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetJackDescription )( 
-            IKsJackDescription * This,
-            /* [in] */ UINT nJack,
-            /* [out] */ 
-            __out  KSJACK_DESCRIPTION *pDescription);
-        
-        END_INTERFACE
-    } IKsJackDescriptionVtbl;
-
-    interface IKsJackDescription
-    {
-        CONST_VTBL struct IKsJackDescriptionVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IKsJackDescription_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IKsJackDescription_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IKsJackDescription_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IKsJackDescription_GetJackCount(This,pcJacks)	\
-    ( (This)->lpVtbl -> GetJackCount(This,pcJacks) ) 
-
-#define IKsJackDescription_GetJackDescription(This,nJack,pDescription)	\
-    ( (This)->lpVtbl -> GetJackDescription(This,nJack,pDescription) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IKsJackDescription_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPartsList_INTERFACE_DEFINED__
-#define __IPartsList_INTERFACE_DEFINED__
-
-/* interface IPartsList */
-/* [object][unique][helpstring][uuid][local] */ 
-
-
-EXTERN_C const IID IID_IPartsList;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("6DAA848C-5EB0-45CC-AEA5-998A2CDA1FFB")
-    IPartsList : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ 
-            __out  UINT *pCount) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetPart( 
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __out  IPart **ppPart) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPartsListVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPartsList * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPartsList * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPartsList * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            IPartsList * This,
-            /* [out] */ 
-            __out  UINT *pCount);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPart )( 
-            IPartsList * This,
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __out  IPart **ppPart);
-        
-        END_INTERFACE
-    } IPartsListVtbl;
-
-    interface IPartsList
-    {
-        CONST_VTBL struct IPartsListVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPartsList_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPartsList_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPartsList_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPartsList_GetCount(This,pCount)	\
-    ( (This)->lpVtbl -> GetCount(This,pCount) ) 
-
-#define IPartsList_GetPart(This,nIndex,ppPart)	\
-    ( (This)->lpVtbl -> GetPart(This,nIndex,ppPart) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPartsList_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPart_INTERFACE_DEFINED__
-#define __IPart_INTERFACE_DEFINED__
-
-/* interface IPart */
-/* [object][unique][helpstring][uuid][local] */ 
-
-
-EXTERN_C const IID IID_IPart;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("AE2DE0E4-5BCA-4F2D-AA46-5D13F8FDB3A9")
-    IPart : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetName( 
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrName) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetLocalId( 
-            /* [out] */ 
-            __out  UINT *pnId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetGlobalId( 
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrGlobalId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetPartType( 
-            /* [out] */ 
-            __out  PartType *pPartType) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSubType( 
-            /* [out] */ GUID *pSubType) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetControlInterfaceCount( 
-            /* [out] */ 
-            __out  UINT *pCount) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetControlInterface( 
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __out  IControlInterface **ppInterfaceDesc) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumPartsIncoming( 
-            /* [out] */ 
-            __out  IPartsList **ppParts) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumPartsOutgoing( 
-            /* [out] */ 
-            __out  IPartsList **ppParts) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetTopologyObject( 
-            /* [out] */ 
-            __out  IDeviceTopology **ppTopology) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( 
-            /* [in] */ 
-            __in  DWORD dwClsContext,
-            /* [in] */ 
-            __in  REFIID refiid,
-            /* [iid_is][out] */ 
-            __out_opt  void **ppvObject) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RegisterControlChangeCallback( 
-            /* [in] */ 
-            __in  REFGUID riid,
-            /* [in] */ 
-            __in  IControlChangeNotify *pNotify) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE UnregisterControlChangeCallback( 
-            /* [in] */ 
-            __in  IControlChangeNotify *pNotify) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPartVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPart * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPart * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPart * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetName )( 
-            IPart * This,
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrName);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetLocalId )( 
-            IPart * This,
-            /* [out] */ 
-            __out  UINT *pnId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetGlobalId )( 
-            IPart * This,
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrGlobalId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPartType )( 
-            IPart * This,
-            /* [out] */ 
-            __out  PartType *pPartType);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSubType )( 
-            IPart * This,
-            /* [out] */ GUID *pSubType);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetControlInterfaceCount )( 
-            IPart * This,
-            /* [out] */ 
-            __out  UINT *pCount);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetControlInterface )( 
-            IPart * This,
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __out  IControlInterface **ppInterfaceDesc);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumPartsIncoming )( 
-            IPart * This,
-            /* [out] */ 
-            __out  IPartsList **ppParts);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumPartsOutgoing )( 
-            IPart * This,
-            /* [out] */ 
-            __out  IPartsList **ppParts);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetTopologyObject )( 
-            IPart * This,
-            /* [out] */ 
-            __out  IDeviceTopology **ppTopology);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( 
-            IPart * This,
-            /* [in] */ 
-            __in  DWORD dwClsContext,
-            /* [in] */ 
-            __in  REFIID refiid,
-            /* [iid_is][out] */ 
-            __out_opt  void **ppvObject);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterControlChangeCallback )( 
-            IPart * This,
-            /* [in] */ 
-            __in  REFGUID riid,
-            /* [in] */ 
-            __in  IControlChangeNotify *pNotify);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterControlChangeCallback )( 
-            IPart * This,
-            /* [in] */ 
-            __in  IControlChangeNotify *pNotify);
-        
-        END_INTERFACE
-    } IPartVtbl;
-
-    interface IPart
-    {
-        CONST_VTBL struct IPartVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPart_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPart_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPart_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPart_GetName(This,ppwstrName)	\
-    ( (This)->lpVtbl -> GetName(This,ppwstrName) ) 
-
-#define IPart_GetLocalId(This,pnId)	\
-    ( (This)->lpVtbl -> GetLocalId(This,pnId) ) 
-
-#define IPart_GetGlobalId(This,ppwstrGlobalId)	\
-    ( (This)->lpVtbl -> GetGlobalId(This,ppwstrGlobalId) ) 
-
-#define IPart_GetPartType(This,pPartType)	\
-    ( (This)->lpVtbl -> GetPartType(This,pPartType) ) 
-
-#define IPart_GetSubType(This,pSubType)	\
-    ( (This)->lpVtbl -> GetSubType(This,pSubType) ) 
-
-#define IPart_GetControlInterfaceCount(This,pCount)	\
-    ( (This)->lpVtbl -> GetControlInterfaceCount(This,pCount) ) 
-
-#define IPart_GetControlInterface(This,nIndex,ppInterfaceDesc)	\
-    ( (This)->lpVtbl -> GetControlInterface(This,nIndex,ppInterfaceDesc) ) 
-
-#define IPart_EnumPartsIncoming(This,ppParts)	\
-    ( (This)->lpVtbl -> EnumPartsIncoming(This,ppParts) ) 
-
-#define IPart_EnumPartsOutgoing(This,ppParts)	\
-    ( (This)->lpVtbl -> EnumPartsOutgoing(This,ppParts) ) 
-
-#define IPart_GetTopologyObject(This,ppTopology)	\
-    ( (This)->lpVtbl -> GetTopologyObject(This,ppTopology) ) 
-
-#define IPart_Activate(This,dwClsContext,refiid,ppvObject)	\
-    ( (This)->lpVtbl -> Activate(This,dwClsContext,refiid,ppvObject) ) 
-
-#define IPart_RegisterControlChangeCallback(This,riid,pNotify)	\
-    ( (This)->lpVtbl -> RegisterControlChangeCallback(This,riid,pNotify) ) 
-
-#define IPart_UnregisterControlChangeCallback(This,pNotify)	\
-    ( (This)->lpVtbl -> UnregisterControlChangeCallback(This,pNotify) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPart_INTERFACE_DEFINED__ */
-
-
-#ifndef __IConnector_INTERFACE_DEFINED__
-#define __IConnector_INTERFACE_DEFINED__
-
-/* interface IConnector */
-/* [object][unique][helpstring][uuid][local] */ 
-
-
-EXTERN_C const IID IID_IConnector;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("9c2c4058-23f5-41de-877a-df3af236a09e")
-    IConnector : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetType( 
-            /* [out] */ 
-            __out  ConnectorType *pType) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDataFlow( 
-            /* [out] */ 
-            __out  DataFlow *pFlow) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE ConnectTo( 
-            /* [in] */ 
-            __in  IConnector *pConnectTo) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Disconnect( void) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE IsConnected( 
-            /* [out] */ 
-            __out  BOOL *pbConnected) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnectedTo( 
-            /* [out] */ 
-            __out  IConnector **ppConTo) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnectorIdConnectedTo( 
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrConnectorId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDeviceIdConnectedTo( 
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrDeviceId) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IConnectorVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IConnector * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IConnector * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IConnector * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetType )( 
-            IConnector * This,
-            /* [out] */ 
-            __out  ConnectorType *pType);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDataFlow )( 
-            IConnector * This,
-            /* [out] */ 
-            __out  DataFlow *pFlow);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *ConnectTo )( 
-            IConnector * This,
-            /* [in] */ 
-            __in  IConnector *pConnectTo);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Disconnect )( 
-            IConnector * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *IsConnected )( 
-            IConnector * This,
-            /* [out] */ 
-            __out  BOOL *pbConnected);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnectedTo )( 
-            IConnector * This,
-            /* [out] */ 
-            __out  IConnector **ppConTo);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnectorIdConnectedTo )( 
-            IConnector * This,
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrConnectorId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDeviceIdConnectedTo )( 
-            IConnector * This,
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrDeviceId);
-        
-        END_INTERFACE
-    } IConnectorVtbl;
-
-    interface IConnector
-    {
-        CONST_VTBL struct IConnectorVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IConnector_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IConnector_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IConnector_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IConnector_GetType(This,pType)	\
-    ( (This)->lpVtbl -> GetType(This,pType) ) 
-
-#define IConnector_GetDataFlow(This,pFlow)	\
-    ( (This)->lpVtbl -> GetDataFlow(This,pFlow) ) 
-
-#define IConnector_ConnectTo(This,pConnectTo)	\
-    ( (This)->lpVtbl -> ConnectTo(This,pConnectTo) ) 
-
-#define IConnector_Disconnect(This)	\
-    ( (This)->lpVtbl -> Disconnect(This) ) 
-
-#define IConnector_IsConnected(This,pbConnected)	\
-    ( (This)->lpVtbl -> IsConnected(This,pbConnected) ) 
-
-#define IConnector_GetConnectedTo(This,ppConTo)	\
-    ( (This)->lpVtbl -> GetConnectedTo(This,ppConTo) ) 
-
-#define IConnector_GetConnectorIdConnectedTo(This,ppwstrConnectorId)	\
-    ( (This)->lpVtbl -> GetConnectorIdConnectedTo(This,ppwstrConnectorId) ) 
-
-#define IConnector_GetDeviceIdConnectedTo(This,ppwstrDeviceId)	\
-    ( (This)->lpVtbl -> GetDeviceIdConnectedTo(This,ppwstrDeviceId) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IConnector_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISubunit_INTERFACE_DEFINED__
-#define __ISubunit_INTERFACE_DEFINED__
-
-/* interface ISubunit */
-/* [object][unique][helpstring][uuid][local] */ 
-
-
-EXTERN_C const IID IID_ISubunit;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("82149A85-DBA6-4487-86BB-EA8F7FEFCC71")
-    ISubunit : public IUnknown
-    {
-    public:
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct ISubunitVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ISubunit * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ISubunit * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ISubunit * This);
-        
-        END_INTERFACE
-    } ISubunitVtbl;
-
-    interface ISubunit
-    {
-        CONST_VTBL struct ISubunitVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ISubunit_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ISubunit_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ISubunit_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __ISubunit_INTERFACE_DEFINED__ */
-
-
-#ifndef __IControlInterface_INTERFACE_DEFINED__
-#define __IControlInterface_INTERFACE_DEFINED__
-
-/* interface IControlInterface */
-/* [object][unique][helpstring][uuid][local] */ 
-
-
-EXTERN_C const IID IID_IControlInterface;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("45d37c3f-5140-444a-ae24-400789f3cbf3")
-    IControlInterface : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetName( 
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrName) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetIID( 
-            /* [out] */ 
-            __out  GUID *pIID) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IControlInterfaceVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IControlInterface * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IControlInterface * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IControlInterface * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetName )( 
-            IControlInterface * This,
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrName);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetIID )( 
-            IControlInterface * This,
-            /* [out] */ 
-            __out  GUID *pIID);
-        
-        END_INTERFACE
-    } IControlInterfaceVtbl;
-
-    interface IControlInterface
-    {
-        CONST_VTBL struct IControlInterfaceVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IControlInterface_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IControlInterface_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IControlInterface_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IControlInterface_GetName(This,ppwstrName)	\
-    ( (This)->lpVtbl -> GetName(This,ppwstrName) ) 
-
-#define IControlInterface_GetIID(This,pIID)	\
-    ( (This)->lpVtbl -> GetIID(This,pIID) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IControlInterface_INTERFACE_DEFINED__ */
-
-
-#ifndef __IControlChangeNotify_INTERFACE_DEFINED__
-#define __IControlChangeNotify_INTERFACE_DEFINED__
-
-/* interface IControlChangeNotify */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IControlChangeNotify;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("A09513ED-C709-4d21-BD7B-5F34C47F3947")
-    IControlChangeNotify : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnNotify( 
-            /* [in] */ 
-            __in  DWORD dwSenderProcessId,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IControlChangeNotifyVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IControlChangeNotify * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IControlChangeNotify * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IControlChangeNotify * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnNotify )( 
-            IControlChangeNotify * This,
-            /* [in] */ 
-            __in  DWORD dwSenderProcessId,
-            /* [unique][in] */ 
-            __in_opt  LPCGUID pguidEventContext);
-        
-        END_INTERFACE
-    } IControlChangeNotifyVtbl;
-
-    interface IControlChangeNotify
-    {
-        CONST_VTBL struct IControlChangeNotifyVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IControlChangeNotify_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IControlChangeNotify_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IControlChangeNotify_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IControlChangeNotify_OnNotify(This,dwSenderProcessId,pguidEventContext)	\
-    ( (This)->lpVtbl -> OnNotify(This,dwSenderProcessId,pguidEventContext) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IControlChangeNotify_INTERFACE_DEFINED__ */
-
-
-#ifndef __IDeviceTopology_INTERFACE_DEFINED__
-#define __IDeviceTopology_INTERFACE_DEFINED__
-
-/* interface IDeviceTopology */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IDeviceTopology;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("2A07407E-6497-4A18-9787-32F79BD0D98F")
-    IDeviceTopology : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnectorCount( 
-            /* [out] */ 
-            __out  UINT *pCount) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetConnector( 
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __out  IConnector **ppConnector) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSubunitCount( 
-            /* [out] */ 
-            __out  UINT *pCount) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSubunit( 
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __deref_out  ISubunit **ppSubunit) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetPartById( 
-            /* [in] */ 
-            __in  UINT nId,
-            /* [out] */ 
-            __deref_out  IPart **ppPart) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDeviceId( 
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrDeviceId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetSignalPath( 
-            /* [in] */ 
-            __in  IPart *pIPartFrom,
-            /* [in] */ 
-            __in  IPart *pIPartTo,
-            /* [in] */ 
-            __in  BOOL bRejectMixedPaths,
-            /* [out] */ 
-            __deref_out  IPartsList **ppParts) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IDeviceTopologyVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeviceTopology * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeviceTopology * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeviceTopology * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnectorCount )( 
-            IDeviceTopology * This,
-            /* [out] */ 
-            __out  UINT *pCount);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetConnector )( 
-            IDeviceTopology * This,
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __out  IConnector **ppConnector);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSubunitCount )( 
-            IDeviceTopology * This,
-            /* [out] */ 
-            __out  UINT *pCount);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSubunit )( 
-            IDeviceTopology * This,
-            /* [in] */ 
-            __in  UINT nIndex,
-            /* [out] */ 
-            __deref_out  ISubunit **ppSubunit);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetPartById )( 
-            IDeviceTopology * This,
-            /* [in] */ 
-            __in  UINT nId,
-            /* [out] */ 
-            __deref_out  IPart **ppPart);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDeviceId )( 
-            IDeviceTopology * This,
-            /* [out] */ 
-            __deref_out  LPWSTR *ppwstrDeviceId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetSignalPath )( 
-            IDeviceTopology * This,
-            /* [in] */ 
-            __in  IPart *pIPartFrom,
-            /* [in] */ 
-            __in  IPart *pIPartTo,
-            /* [in] */ 
-            __in  BOOL bRejectMixedPaths,
-            /* [out] */ 
-            __deref_out  IPartsList **ppParts);
-        
-        END_INTERFACE
-    } IDeviceTopologyVtbl;
-
-    interface IDeviceTopology
-    {
-        CONST_VTBL struct IDeviceTopologyVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IDeviceTopology_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IDeviceTopology_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IDeviceTopology_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IDeviceTopology_GetConnectorCount(This,pCount)	\
-    ( (This)->lpVtbl -> GetConnectorCount(This,pCount) ) 
-
-#define IDeviceTopology_GetConnector(This,nIndex,ppConnector)	\
-    ( (This)->lpVtbl -> GetConnector(This,nIndex,ppConnector) ) 
-
-#define IDeviceTopology_GetSubunitCount(This,pCount)	\
-    ( (This)->lpVtbl -> GetSubunitCount(This,pCount) ) 
-
-#define IDeviceTopology_GetSubunit(This,nIndex,ppSubunit)	\
-    ( (This)->lpVtbl -> GetSubunit(This,nIndex,ppSubunit) ) 
-
-#define IDeviceTopology_GetPartById(This,nId,ppPart)	\
-    ( (This)->lpVtbl -> GetPartById(This,nId,ppPart) ) 
-
-#define IDeviceTopology_GetDeviceId(This,ppwstrDeviceId)	\
-    ( (This)->lpVtbl -> GetDeviceId(This,ppwstrDeviceId) ) 
-
-#define IDeviceTopology_GetSignalPath(This,pIPartFrom,pIPartTo,bRejectMixedPaths,ppParts)	\
-    ( (This)->lpVtbl -> GetSignalPath(This,pIPartFrom,pIPartTo,bRejectMixedPaths,ppParts) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IDeviceTopology_INTERFACE_DEFINED__ */
-
-
-
-#ifndef __DevTopologyLib_LIBRARY_DEFINED__
-#define __DevTopologyLib_LIBRARY_DEFINED__
-
-/* library DevTopologyLib */
-/* [helpstring][version][uuid] */ 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-EXTERN_C const IID LIBID_DevTopologyLib;
-
-EXTERN_C const CLSID CLSID_DeviceTopology;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("1DF639D0-5EC1-47AA-9379-828DC1AA8C59")
-DeviceTopology;
-#endif
-#endif /* __DevTopologyLib_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
-
diff -Naur src/hostapi/wasapi/mingw-include/endpointvolume.h src/hostapi/wasapi/mingw-include/endpointvolume.h
--- src/hostapi/wasapi/mingw-include/endpointvolume.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/endpointvolume.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,620 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0499 */
-/* Compiler settings for endpointvolume.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data 
-    VC __declspec() decoration level: 
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 500
-#endif
-
-/* verify that the <rpcsal.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCSAL_H_VERSION__
-#define __REQUIRED_RPCSAL_H_VERSION__ 100
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __endpointvolume_h__
-#define __endpointvolume_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */ 
-
-#ifndef __IAudioEndpointVolumeCallback_FWD_DEFINED__
-#define __IAudioEndpointVolumeCallback_FWD_DEFINED__
-typedef interface IAudioEndpointVolumeCallback IAudioEndpointVolumeCallback;
-#endif 	/* __IAudioEndpointVolumeCallback_FWD_DEFINED__ */
-
-
-#ifndef __IAudioEndpointVolume_FWD_DEFINED__
-#define __IAudioEndpointVolume_FWD_DEFINED__
-typedef interface IAudioEndpointVolume IAudioEndpointVolume;
-#endif 	/* __IAudioEndpointVolume_FWD_DEFINED__ */
-
-
-#ifndef __IAudioMeterInformation_FWD_DEFINED__
-#define __IAudioMeterInformation_FWD_DEFINED__
-typedef interface IAudioMeterInformation IAudioMeterInformation;
-#endif 	/* __IAudioMeterInformation_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "unknwn.h"
-#include "devicetopology.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif 
-
-
-/* interface __MIDL_itf_endpointvolume_0000_0000 */
-/* [local] */ 
-
-typedef struct AUDIO_VOLUME_NOTIFICATION_DATA
-    {
-    GUID guidEventContext;
-    BOOL bMuted;
-    float fMasterVolume;
-    UINT nChannels;
-    float afChannelVolumes[ 1 ];
-    } 	AUDIO_VOLUME_NOTIFICATION_DATA;
-
-typedef struct AUDIO_VOLUME_NOTIFICATION_DATA *PAUDIO_VOLUME_NOTIFICATION_DATA;
-
-#define   ENDPOINT_HARDWARE_SUPPORT_VOLUME    0x00000001
-#define   ENDPOINT_HARDWARE_SUPPORT_MUTE      0x00000002
-#define   ENDPOINT_HARDWARE_SUPPORT_METER     0x00000004
-
-
-extern RPC_IF_HANDLE __MIDL_itf_endpointvolume_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_endpointvolume_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__
-#define __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__
-
-/* interface IAudioEndpointVolumeCallback */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioEndpointVolumeCallback;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("657804FA-D6AD-4496-8A60-352752AF4F89")
-    IAudioEndpointVolumeCallback : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE OnNotify( 
-            PAUDIO_VOLUME_NOTIFICATION_DATA pNotify) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioEndpointVolumeCallbackVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioEndpointVolumeCallback * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioEndpointVolumeCallback * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioEndpointVolumeCallback * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *OnNotify )( 
-            IAudioEndpointVolumeCallback * This,
-            PAUDIO_VOLUME_NOTIFICATION_DATA pNotify);
-        
-        END_INTERFACE
-    } IAudioEndpointVolumeCallbackVtbl;
-
-    interface IAudioEndpointVolumeCallback
-    {
-        CONST_VTBL struct IAudioEndpointVolumeCallbackVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioEndpointVolumeCallback_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioEndpointVolumeCallback_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioEndpointVolumeCallback_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioEndpointVolumeCallback_OnNotify(This,pNotify)	\
-    ( (This)->lpVtbl -> OnNotify(This,pNotify) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioEndpointVolumeCallback_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioEndpointVolume_INTERFACE_DEFINED__
-#define __IAudioEndpointVolume_INTERFACE_DEFINED__
-
-/* interface IAudioEndpointVolume */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioEndpointVolume;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("5CDF2C82-841E-4546-9722-0CF74078229A")
-    IAudioEndpointVolume : public IUnknown
-    {
-    public:
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE RegisterControlChangeNotify( 
-            /* [in] */ 
-            __in  IAudioEndpointVolumeCallback *pNotify) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE UnregisterControlChangeNotify( 
-            /* [in] */ 
-            __in  IAudioEndpointVolumeCallback *pNotify) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelCount( 
-            /* [out] */ 
-            __out  UINT *pnChannelCount) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMasterVolumeLevel( 
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMasterVolumeLevelScalar( 
-            /* [in] */ 
-            __in  float fLevel,
-            /* [unique][in] */ LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMasterVolumeLevel( 
-            /* [out] */ 
-            __out  float *pfLevelDB) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMasterVolumeLevelScalar( 
-            /* [out] */ 
-            __out  float *pfLevel) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelVolumeLevel( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            float fLevelDB,
-            /* [unique][in] */ LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetChannelVolumeLevelScalar( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            float fLevel,
-            /* [unique][in] */ LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelVolumeLevel( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelVolumeLevelScalar( 
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevel) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE SetMute( 
-            /* [in] */ 
-            __in  BOOL bMute,
-            /* [unique][in] */ LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMute( 
-            /* [out] */ 
-            __out  BOOL *pbMute) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetVolumeStepInfo( 
-            /* [out] */ 
-            __out  UINT *pnStep,
-            /* [out] */ 
-            __out  UINT *pnStepCount) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VolumeStepUp( 
-            /* [unique][in] */ LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE VolumeStepDown( 
-            /* [unique][in] */ LPCGUID pguidEventContext) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE QueryHardwareSupport( 
-            /* [out] */ 
-            __out  DWORD *pdwHardwareSupportMask) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetVolumeRange( 
-            /* [out] */ 
-            __out  float *pflVolumeMindB,
-            /* [out] */ 
-            __out  float *pflVolumeMaxdB,
-            /* [out] */ 
-            __out  float *pflVolumeIncrementdB) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioEndpointVolumeVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioEndpointVolume * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioEndpointVolume * This);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *RegisterControlChangeNotify )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  IAudioEndpointVolumeCallback *pNotify);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *UnregisterControlChangeNotify )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  IAudioEndpointVolumeCallback *pNotify);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelCount )( 
-            IAudioEndpointVolume * This,
-            /* [out] */ 
-            __out  UINT *pnChannelCount);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMasterVolumeLevel )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  float fLevelDB,
-            /* [unique][in] */ LPCGUID pguidEventContext);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMasterVolumeLevelScalar )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  float fLevel,
-            /* [unique][in] */ LPCGUID pguidEventContext);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMasterVolumeLevel )( 
-            IAudioEndpointVolume * This,
-            /* [out] */ 
-            __out  float *pfLevelDB);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMasterVolumeLevelScalar )( 
-            IAudioEndpointVolume * This,
-            /* [out] */ 
-            __out  float *pfLevel);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelVolumeLevel )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            float fLevelDB,
-            /* [unique][in] */ LPCGUID pguidEventContext);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetChannelVolumeLevelScalar )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            float fLevel,
-            /* [unique][in] */ LPCGUID pguidEventContext);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelVolumeLevel )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevelDB);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelVolumeLevelScalar )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  UINT nChannel,
-            /* [out] */ 
-            __out  float *pfLevel);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *SetMute )( 
-            IAudioEndpointVolume * This,
-            /* [in] */ 
-            __in  BOOL bMute,
-            /* [unique][in] */ LPCGUID pguidEventContext);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMute )( 
-            IAudioEndpointVolume * This,
-            /* [out] */ 
-            __out  BOOL *pbMute);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetVolumeStepInfo )( 
-            IAudioEndpointVolume * This,
-            /* [out] */ 
-            __out  UINT *pnStep,
-            /* [out] */ 
-            __out  UINT *pnStepCount);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VolumeStepUp )( 
-            IAudioEndpointVolume * This,
-            /* [unique][in] */ LPCGUID pguidEventContext);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *VolumeStepDown )( 
-            IAudioEndpointVolume * This,
-            /* [unique][in] */ LPCGUID pguidEventContext);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *QueryHardwareSupport )( 
-            IAudioEndpointVolume * This,
-            /* [out] */ 
-            __out  DWORD *pdwHardwareSupportMask);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetVolumeRange )( 
-            IAudioEndpointVolume * This,
-            /* [out] */ 
-            __out  float *pflVolumeMindB,
-            /* [out] */ 
-            __out  float *pflVolumeMaxdB,
-            /* [out] */ 
-            __out  float *pflVolumeIncrementdB);
-        
-        END_INTERFACE
-    } IAudioEndpointVolumeVtbl;
-
-    interface IAudioEndpointVolume
-    {
-        CONST_VTBL struct IAudioEndpointVolumeVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioEndpointVolume_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioEndpointVolume_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioEndpointVolume_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioEndpointVolume_RegisterControlChangeNotify(This,pNotify)	\
-    ( (This)->lpVtbl -> RegisterControlChangeNotify(This,pNotify) ) 
-
-#define IAudioEndpointVolume_UnregisterControlChangeNotify(This,pNotify)	\
-    ( (This)->lpVtbl -> UnregisterControlChangeNotify(This,pNotify) ) 
-
-#define IAudioEndpointVolume_GetChannelCount(This,pnChannelCount)	\
-    ( (This)->lpVtbl -> GetChannelCount(This,pnChannelCount) ) 
-
-#define IAudioEndpointVolume_SetMasterVolumeLevel(This,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetMasterVolumeLevel(This,fLevelDB,pguidEventContext) ) 
-
-#define IAudioEndpointVolume_SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetMasterVolumeLevelScalar(This,fLevel,pguidEventContext) ) 
-
-#define IAudioEndpointVolume_GetMasterVolumeLevel(This,pfLevelDB)	\
-    ( (This)->lpVtbl -> GetMasterVolumeLevel(This,pfLevelDB) ) 
-
-#define IAudioEndpointVolume_GetMasterVolumeLevelScalar(This,pfLevel)	\
-    ( (This)->lpVtbl -> GetMasterVolumeLevelScalar(This,pfLevel) ) 
-
-#define IAudioEndpointVolume_SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetChannelVolumeLevel(This,nChannel,fLevelDB,pguidEventContext) ) 
-
-#define IAudioEndpointVolume_SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetChannelVolumeLevelScalar(This,nChannel,fLevel,pguidEventContext) ) 
-
-#define IAudioEndpointVolume_GetChannelVolumeLevel(This,nChannel,pfLevelDB)	\
-    ( (This)->lpVtbl -> GetChannelVolumeLevel(This,nChannel,pfLevelDB) ) 
-
-#define IAudioEndpointVolume_GetChannelVolumeLevelScalar(This,nChannel,pfLevel)	\
-    ( (This)->lpVtbl -> GetChannelVolumeLevelScalar(This,nChannel,pfLevel) ) 
-
-#define IAudioEndpointVolume_SetMute(This,bMute,pguidEventContext)	\
-    ( (This)->lpVtbl -> SetMute(This,bMute,pguidEventContext) ) 
-
-#define IAudioEndpointVolume_GetMute(This,pbMute)	\
-    ( (This)->lpVtbl -> GetMute(This,pbMute) ) 
-
-#define IAudioEndpointVolume_GetVolumeStepInfo(This,pnStep,pnStepCount)	\
-    ( (This)->lpVtbl -> GetVolumeStepInfo(This,pnStep,pnStepCount) ) 
-
-#define IAudioEndpointVolume_VolumeStepUp(This,pguidEventContext)	\
-    ( (This)->lpVtbl -> VolumeStepUp(This,pguidEventContext) ) 
-
-#define IAudioEndpointVolume_VolumeStepDown(This,pguidEventContext)	\
-    ( (This)->lpVtbl -> VolumeStepDown(This,pguidEventContext) ) 
-
-#define IAudioEndpointVolume_QueryHardwareSupport(This,pdwHardwareSupportMask)	\
-    ( (This)->lpVtbl -> QueryHardwareSupport(This,pdwHardwareSupportMask) ) 
-
-#define IAudioEndpointVolume_GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB)	\
-    ( (This)->lpVtbl -> GetVolumeRange(This,pflVolumeMindB,pflVolumeMaxdB,pflVolumeIncrementdB) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioEndpointVolume_INTERFACE_DEFINED__ */
-
-
-#ifndef __IAudioMeterInformation_INTERFACE_DEFINED__
-#define __IAudioMeterInformation_INTERFACE_DEFINED__
-
-/* interface IAudioMeterInformation */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IAudioMeterInformation;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("C02216F6-8C67-4B5B-9D00-D008E73E0064")
-    IAudioMeterInformation : public IUnknown
-    {
-    public:
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetPeakValue( 
-            /* [out] */ float *pfPeak) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetMeteringChannelCount( 
-            /* [out] */ 
-            __out  UINT *pnChannelCount) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChannelsPeakValues( 
-            /* [in] */ UINT32 u32ChannelCount,
-            /* [size_is][out] */ float *afPeakValues) = 0;
-        
-        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE QueryHardwareSupport( 
-            /* [out] */ 
-            __out  DWORD *pdwHardwareSupportMask) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IAudioMeterInformationVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IAudioMeterInformation * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IAudioMeterInformation * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IAudioMeterInformation * This);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetPeakValue )( 
-            IAudioMeterInformation * This,
-            /* [out] */ float *pfPeak);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetMeteringChannelCount )( 
-            IAudioMeterInformation * This,
-            /* [out] */ 
-            __out  UINT *pnChannelCount);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChannelsPeakValues )( 
-            IAudioMeterInformation * This,
-            /* [in] */ UINT32 u32ChannelCount,
-            /* [size_is][out] */ float *afPeakValues);
-        
-        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *QueryHardwareSupport )( 
-            IAudioMeterInformation * This,
-            /* [out] */ 
-            __out  DWORD *pdwHardwareSupportMask);
-        
-        END_INTERFACE
-    } IAudioMeterInformationVtbl;
-
-    interface IAudioMeterInformation
-    {
-        CONST_VTBL struct IAudioMeterInformationVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IAudioMeterInformation_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IAudioMeterInformation_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IAudioMeterInformation_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IAudioMeterInformation_GetPeakValue(This,pfPeak)	\
-    ( (This)->lpVtbl -> GetPeakValue(This,pfPeak) ) 
-
-#define IAudioMeterInformation_GetMeteringChannelCount(This,pnChannelCount)	\
-    ( (This)->lpVtbl -> GetMeteringChannelCount(This,pnChannelCount) ) 
-
-#define IAudioMeterInformation_GetChannelsPeakValues(This,u32ChannelCount,afPeakValues)	\
-    ( (This)->lpVtbl -> GetChannelsPeakValues(This,u32ChannelCount,afPeakValues) ) 
-
-#define IAudioMeterInformation_QueryHardwareSupport(This,pdwHardwareSupportMask)	\
-    ( (This)->lpVtbl -> QueryHardwareSupport(This,pdwHardwareSupportMask) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IAudioMeterInformation_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
-
diff -Naur src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h
--- src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/functiondiscoverykeys.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,255 +0,0 @@
-#pragma once
-
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-#ifndef DEFINE_API_PKEY
-#include <propkey.h>
-#endif
-
-#include <FunctionDiscoveryKeys_devpkey.h>
-
-// FMTID_FD = {904b03a2-471d-423c-a584-f3483238a146}
-DEFINE_GUID(FMTID_FD, 0x904b03a2, 0x471d, 0x423c, 0xa5, 0x84, 0xf3, 0x48, 0x32, 0x38, 0xa1, 0x46);
-DEFINE_API_PKEY(PKEY_FD_Visibility, VisibilityFlags, 0x904b03a2, 0x471d, 0x423c, 0xa5, 0x84, 0xf3, 0x48, 0x32, 0x38, 0xa1, 0x46, 0x00000001); //    VT_UINT
-#define FD_Visibility_Default   0
-#define FD_Visibility_Hidden    1
-
-// FMTID_Device = {78C34FC8-104A-4aca-9EA4-524D52996E57}
-DEFINE_GUID(FMTID_Device, 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57);
-
-DEFINE_API_PKEY(PKEY_Device_NotPresent,     DeviceNotPresent   , 0x904b03a2, 0x471d, 0x423c, 0xa5, 0x84, 0xf3, 0x48, 0x32, 0x38, 0xa1, 0x46, 0x00000002); //    VT_UINT
-DEFINE_API_PKEY(PKEY_Device_QueueSize,      DeviceQueueSize    , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000024); //    VT_UI4
-DEFINE_API_PKEY(PKEY_Device_Status,         DeviceStatus       , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000025); //    VT_LPWSTR
-DEFINE_API_PKEY(PKEY_Device_Comment,        DeviceComment      , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000026); //    VT_LPWSTR
-DEFINE_API_PKEY(PKEY_Device_Model,          DeviceModel        , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000027); //    VT_LPWSTR
-
-//  Name:     System.Device.BIOSVersion -- PKEY_Device_BIOSVersion
-//  Type:     String -- VT_LPWSTR  (For variants: VT_BSTR)  Legacy code may treat this as VT_BSTR.
-//  FormatID: EAEE7F1D-6A33-44D1-9441-5F46DEF23198, 9
-DEFINE_PROPERTYKEY(PKEY_Device_BIOSVersion, 0xEAEE7F1D, 0x6A33, 0x44D1, 0x94, 0x41, 0x5F, 0x46, 0xDE, 0xF2, 0x31, 0x98, 9);
-
-DEFINE_API_PKEY(PKEY_Write_Time,            WriteTime          , 0xf53b7e1c, 0x77e0, 0x4450, 0x8c, 0x5f, 0xa7, 0x6c, 0xc7, 0xfd, 0xe0, 0x58, 0x00000100); //    VT_FILETIME
-
-#ifdef FD_XP
-DEFINE_API_PKEY(PKEY_Device_InstanceId, DeviceInstanceId   , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000100); //    VT_LPWSTR
-#endif
-DEFINE_API_PKEY(PKEY_Device_Interface,  DeviceInterface    , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00000101); //    VT_CLSID
-
-DEFINE_API_PKEY(PKEY_ExposedIIDs,           ExposedIIDs       , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00003002); //  VT_VECTOR | VT_CLSID
-DEFINE_API_PKEY(PKEY_ExposedCLSIDs,         ExposedCLSIDs     , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00003003); //  VT_VECTOR | VT_CLSID
-DEFINE_API_PKEY(PKEY_InstanceValidatorClsid,InstanceValidator , 0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 0x00003004); // VT_CLSID
-
-// FMTID_WSD = {92506491-FF95-4724-A05A-5B81885A7C92}
-DEFINE_GUID(FMTID_WSD, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92);
-
-DEFINE_API_PKEY(PKEY_WSD_AddressURI, WSD_AddressURI, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001000);   // VT_LPWSTR
-DEFINE_API_PKEY(PKEY_WSD_Types, WSD_Types, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001001); // VT_LPWSTR
-DEFINE_API_PKEY(PKEY_WSD_Scopes, WSD_Scopes, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001002);   // VT_LPWSTR
-DEFINE_API_PKEY(PKEY_WSD_MetadataVersion, WSD_MetadataVersion, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001003); //VT_UI8
-DEFINE_API_PKEY(PKEY_WSD_AppSeqInstanceID, WSD_AppSeqInstanceID, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001004);   // VT_UI8
-DEFINE_API_PKEY(PKEY_WSD_AppSeqSessionID, WSD_AppSeqSessionID, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001005); // VT_LPWSTR
-DEFINE_API_PKEY(PKEY_WSD_AppSeqMessageNumber, WSD_AppSeqMessageNumber, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00001006); // VT_UI8
-DEFINE_API_PKEY(PKEY_WSD_XAddrs, WSD_XAddrs, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00002000); // VT_LPWSTR or VT_VECTOR | VT_LPWSTR
-
-DEFINE_API_PKEY(PKEY_WSD_MetadataClean, WSD_MetadataClean, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00000001);   // VT_BOOL
-DEFINE_API_PKEY(PKEY_WSD_ServiceInfo, WSD_ServiceInfo, 0x92506491, 0xFF95, 0x4724, 0xA0, 0x5A, 0x5B, 0x81, 0x88, 0x5A, 0x7C, 0x92, 0x00000002);   // VT_VECTOR|VT_VARIANT (variants are VT_UNKNOWN)
-
-DEFINE_API_PKEY(PKEY_PUBSVCS_TYPE, PUBSVCS_TYPE, 0xF1B88AD3, 0x109C, 0x4FD2, 0xBA, 0x3F, 0x53, 0x5A, 0x76, 0x5F, 0x82, 0xF4, 0x00005001); // VT_LPWSTR
-DEFINE_API_PKEY(PKEY_PUBSVCS_SCOPE, PUBSVCS_SCOPE, 0x2AE2B567, 0xEECB, 0x4A3E, 0xB7, 0x53, 0x54, 0xC7, 0x25, 0x49, 0x43, 0x66, 0x00005002);   // VT_LPWSTR | VT_VECTOR
-DEFINE_API_PKEY(PKEY_PUBSVCS_METADATA, PUBSVCS_METADATA, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005003); // VT_LPWSTR
-DEFINE_API_PKEY(PKEY_PUBSVCS_METADATA_VERSION, PUBSVCS_METADATA_VERSION, 0xC0C96C15, 0x1823, 0x4E5B, 0x93, 0x48, 0xE8, 0x25, 0x19, 0x92, 0x3F, 0x04, 0x00005004); // VT_UI8
-DEFINE_API_PKEY(PKEY_PUBSVCS_NETWORK_PROFILES_ALLOWED, PUBSVCS_NETWORK_PROFILES_ALLOWED, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005005); // VT_VECTOR | VT_LPWSTR
-DEFINE_API_PKEY(PKEY_PUBSVCS_NETWORK_PROFILES_DENIED, PUBSVCS_NETWORK_PROFILES_DENIED, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005006); // VT_VECTOR | VT_LPWSTR
-DEFINE_API_PKEY(PKEY_PUBSVCS_NETWORK_PROFILES_DEFAULT, PUBSVCS_NETWORK_PROFILES_DEFAULT, 0x63C6D5B8, 0xF73A, 0x4ACA, 0x96, 0x7E, 0x0C, 0xC7, 0x87, 0xE0, 0xB5, 0x59, 0x00005007); // VT_BOOL
-
-// FMTID_PNPX = {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}
-DEFINE_GUID(FMTID_PNPX, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD);
-        // from Discovery messages
-DEFINE_PROPERTYKEY(PKEY_PNPX_GlobalIdentity, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001000);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_Types, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001001);   // VT_LPWSTR | VT_VECTOR
-DEFINE_PROPERTYKEY(PKEY_PNPX_Scopes, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001002);   // VT_LPWSTR | VT_VECTOR
-DEFINE_PROPERTYKEY(PKEY_PNPX_XAddrs, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001003);   // VT_LPWSTR | VT_VECTOR
-DEFINE_PROPERTYKEY(PKEY_PNPX_MetadataVersion, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001004);   // VT_UI8
-DEFINE_PROPERTYKEY(PKEY_PNPX_ID, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001005);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_RootProxy, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001006);   // VT_BOOL
-
-        // for Directed Discovery
-DEFINE_PROPERTYKEY(PKEY_PNPX_RemoteAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00001006);   // VT_LPWSTR
-
-        // from ThisModel metadata
-DEFINE_PROPERTYKEY(PKEY_PNPX_Manufacturer, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002000);   // VT_LPWSTR (localizable)
-DEFINE_PROPERTYKEY(PKEY_PNPX_ManufacturerUrl, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002001);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_ModelName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002002);   // VT_LPWSTR (localizable)
-DEFINE_PROPERTYKEY(PKEY_PNPX_ModelNumber, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002003);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_ModelUrl, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002004);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_Upc, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002005);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_PresentationUrl, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00002006);   // VT_LPWSTR
-        // from ThisDevice metadata
-DEFINE_PROPERTYKEY(PKEY_PNPX_FriendlyName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003000);   // VT_LPWSTR (localizable)
-DEFINE_PROPERTYKEY(PKEY_PNPX_FirmwareVersion, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003001);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_SerialNumber, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003002);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_DeviceCategory, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003004);   // VT_LPWSTR | VT_VECTOR
-        // DeviceCategory values
-#define PNPX_DEVICECATEGORY_COMPUTER                            L"Computers"
-#define PNPX_DEVICECATEGORY_INPUTDEVICE                         L"Input"
-#define PNPX_DEVICECATEGORY_PRINTER                             L"Printers"
-#define PNPX_DEVICECATEGORY_SCANNER                             L"Scanners"
-#define PNPX_DEVICECATEGORY_FAX                                 L"FAX"
-#define PNPX_DEVICECATEGORY_MFP                                 L"MFP"
-#define PNPX_DEVICECATEGORY_CAMERA                              L"Cameras"
-#define PNPX_DEVICECATEGORY_STORAGE                             L"Storage"
-#define PNPX_DEVICECATEGORY_NETWORK_INFRASTRUCTURE              L"NetworkInfrastructure"
-#define PNPX_DEVICECATEGORY_DISPLAYS                            L"Displays"
-#define PNPX_DEVICECATEGORY_MULTIMEDIA_DEVICE                   L"MediaDevices"
-#define PNPX_DEVICECATEGORY_GAMING_DEVICE                       L"Gaming"
-#define PNPX_DEVICECATEGORY_TELEPHONE                           L"Phones"
-#define PNPX_DEVICECATEGORY_HOME_AUTOMATION_SYSTEM              L"HomeAutomation"
-#define PNPX_DEVICECATEGORY_HOME_SECURITY_SYSTEM                L"HomeSecurity"
-#define PNPX_DEVICECATEGORY_OTHER                               L"Other"
-DEFINE_PROPERTYKEY(PKEY_PNPX_DeviceCategory_Desc, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003005);   // VT_LPWSTR | VT_VECTOR
-
-DEFINE_PROPERTYKEY(PKEY_PNPX_PhysicalAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003006);   // VT_UI1 | VT_VECTOR
-DEFINE_PROPERTYKEY(PKEY_PNPX_NetworkInterfaceLuid, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003007);   // VT_UI8
-DEFINE_PROPERTYKEY(PKEY_PNPX_NetworkInterfaceGuid, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003008);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_IpAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00003009);   // VT_LPWSTR | VT_VECTOR
-        // from Relationship metadata
-DEFINE_PROPERTYKEY(PKEY_PNPX_ServiceAddress, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00004000);   // VT_LPWSTR | VT_VECTOR
-DEFINE_PROPERTYKEY(PKEY_PNPX_ServiceId, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00004001);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_ServiceTypes, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00004002);   // VT_LPWSTR | VT_VECTOR
-        // Association DB PKEYs
-DEFINE_API_PKEY(PKEY_PNPX_Devnode, PnPXDevNode, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00000001); // VT_BOOL
-DEFINE_API_PKEY(PKEY_PNPX_AssociationState, AssociationState, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00000002); // VT_UINT
-DEFINE_API_PKEY(PKEY_PNPX_AssociatedInstanceId, AssociatedInstanceId, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00000003); // VT_LPWSTR
-        // for Computer Discovery
-DEFINE_PROPERTYKEY(PKEY_PNPX_DomainName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00005000);   // VT_LPWSTR
-// Use PKEY_ComputerName (propkey.h) DEFINE_PROPERTYKEY(PKEY_PNPX_MachineName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00005001);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_PNPX_ShareName, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00005002);   // VT_LPWSTR
-
-    // SSDP Provider custom properties
-DEFINE_PROPERTYKEY(PKEY_SSDP_AltLocationInfo, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00006000);   // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_SSDP_DevLifeTime, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00006001);   // VT_UI4
-DEFINE_PROPERTYKEY(PKEY_SSDP_NetworkInterface, 0x656A3BB3, 0xECC0, 0x43FD, 0x84, 0x77, 0x4A, 0xE0, 0x40, 0x4A, 0x96, 0xCD, 0x00006002);   // VT_BOOL
-
-// FMTID_PNPXDynamicProperty = {4FC5077E-B686-44BE-93E3-86CAFE368CCD}
-DEFINE_GUID(FMTID_PNPXDynamicProperty, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD);
-
-DEFINE_PROPERTYKEY(PKEY_PNPX_Installable, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD, 0x00000001); // VT_BOOL
-DEFINE_PROPERTYKEY(PKEY_PNPX_Associated, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD, 0x00000002); // VT_BOOL
-// PKEY_PNPX_Installed to be deprecated in Longhorn Server timeframe
-// this PKEY really represents Associated state
-#define PKEY_PNPX_Installed PKEY_PNPX_Associated    // Deprecated! Please use PKEY_PNPX_Associated
-DEFINE_PROPERTYKEY(PKEY_PNPX_CompatibleTypes, 0x4FC5077E, 0xB686, 0x44BE, 0x93, 0xE3, 0x86, 0xCA, 0xFE, 0x36, 0x8C, 0xCD, 0x00000003); // VT_LPWSTR | VT_VECTOR
-
-    // WNET Provider properties
-DEFINE_PROPERTYKEY(PKEY_WNET_Scope, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000001); // VT_UINT
-DEFINE_PROPERTYKEY(PKEY_WNET_Type, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000002); // VT_UINT
-DEFINE_PROPERTYKEY(PKEY_WNET_DisplayType, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000003); // VT_UINT
-DEFINE_PROPERTYKEY(PKEY_WNET_Usage, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000004); // VT_UINT
-DEFINE_PROPERTYKEY(PKEY_WNET_LocalName, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000005); // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_WNET_RemoteName, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000006); // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_WNET_Comment, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000007); // VT_LPWSTR
-DEFINE_PROPERTYKEY(PKEY_WNET_Provider, 0xdebda43a, 0x37b3, 0x4383, 0x91, 0xE7, 0x44, 0x98, 0xda, 0x29, 0x95, 0xab, 0x00000008); // VT_LPWSTR
-
-
-    // WCN Provider properties
-
-DEFINE_PROPERTYKEY(PKEY_WCN_Version, 0x88190b80, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000001); // VT_UI1
-DEFINE_PROPERTYKEY(PKEY_WCN_RequestType, 0x88190b81, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000002); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_AuthType, 0x88190b82, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000003); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_EncryptType, 0x88190b83, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000004); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_ConnType, 0x88190b84, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000005); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_ConfigMethods, 0x88190b85, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000006); // VT_INT
-// map WCN DeviceType to PKEY_PNPX_DeviceCategory
-//DEFINE_PROPERTYKEY(PKEY_WCN_DeviceType, 0x88190b86, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000007); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_RfBand, 0x88190b87, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000008); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_AssocState, 0x88190b88, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x00000009); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_ConfigError, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000a); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_ConfigState, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000b); // VT_UI1
-DEFINE_PROPERTYKEY(PKEY_WCN_DevicePasswordId, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000c); // VT_INT
-DEFINE_PROPERTYKEY(PKEY_WCN_OSVersion, 0x88190b89, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000d); // VT_UINT
-DEFINE_PROPERTYKEY(PKEY_WCN_VendorExtension, 0x88190b8a, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000e); // VT_UI1 | VT_VECTOR
-DEFINE_PROPERTYKEY(PKEY_WCN_RegistrarType, 0x88190b8b, 0x4684, 0x11da, 0xa2, 0x6a, 0x00, 0x02, 0xb3, 0x98, 0x8e, 0x81, 0x0000000f); // VT_INT
-
-//-----------------------------------------------------------------------------
-// DriverPackage properties
-
-#define PKEY_DriverPackage_Model                PKEY_DrvPkg_Model
-#define PKEY_DriverPackage_VendorWebSite        PKEY_DrvPkg_VendorWebSite
-#define PKEY_DriverPackage_DetailedDescription  PKEY_DrvPkg_DetailedDescription
-#define PKEY_DriverPackage_DocumentationLink    PKEY_DrvPkg_DocumentationLink
-#define PKEY_DriverPackage_Icon                 PKEY_DrvPkg_Icon
-#define PKEY_DriverPackage_BrandingIcon         PKEY_DrvPkg_BrandingIcon
-
-//-----------------------------------------------------------------------------
-// Hardware properties
-
-DEFINE_PROPERTYKEY(PKEY_Hardware_Devinst, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4097);
-
-//  Name:     System.Hardware.DisplayAttribute -- PKEY_Hardware_DisplayAttribute
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 5
-DEFINE_PROPERTYKEY(PKEY_Hardware_DisplayAttribute, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 5);
-
-//  Name:     System.Hardware.DriverDate -- PKEY_Hardware_DriverDate
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 11
-DEFINE_PROPERTYKEY(PKEY_Hardware_DriverDate, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 11);
-
-//  Name:     System.Hardware.DriverProvider -- PKEY_Hardware_DriverProvider
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 10
-DEFINE_PROPERTYKEY(PKEY_Hardware_DriverProvider, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 10);
-
-//  Name:     System.Hardware.DriverVersion -- PKEY_Hardware_DriverVersion
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 9
-DEFINE_PROPERTYKEY(PKEY_Hardware_DriverVersion, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 9);
-
-//  Name:     System.Hardware.Function -- PKEY_Hardware_Function
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4099
-DEFINE_PROPERTYKEY(PKEY_Hardware_Function, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4099);
-
-//  Name:     System.Hardware.Icon -- PKEY_Hardware_Icon
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 3
-DEFINE_PROPERTYKEY(PKEY_Hardware_Icon, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 3);
-
-//  Name:     System.Hardware.Image -- PKEY_Hardware_Image
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4098
-DEFINE_PROPERTYKEY(PKEY_Hardware_Image, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4098);
-
-//  Name:     System.Hardware.Manufacturer -- PKEY_Hardware_Manufacturer
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 6
-DEFINE_PROPERTYKEY(PKEY_Hardware_Manufacturer, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 6);
-
-//  Name:     System.Hardware.Model -- PKEY_Hardware_Model
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 7
-DEFINE_PROPERTYKEY(PKEY_Hardware_Model, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 7);
-
-//  Name:     System.Hardware.Name -- PKEY_Hardware_Name
-//  Type:     String -- VT_LPWSTR  (For variants: VT_BSTR)
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 2
-DEFINE_PROPERTYKEY(PKEY_Hardware_Name, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 2);
-
-//  Name:     System.Hardware.SerialNumber -- PKEY_Hardware_SerialNumber
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 8
-DEFINE_PROPERTYKEY(PKEY_Hardware_SerialNumber, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 8);
-
-//  Name:     System.Hardware.ShellAttributes -- PKEY_Hardware_ShellAttributes
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4100
-DEFINE_PROPERTYKEY(PKEY_Hardware_ShellAttributes, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4100);
-
-//  Name:     System.Hardware.Status -- PKEY_Hardware_Status
-//  Type:     Unspecified -- VT_NULL
-//  FormatID: 5EAF3EF2-E0CA-4598-BF06-71ED1D9DD953, 4096
-DEFINE_PROPERTYKEY(PKEY_Hardware_Status, 0x5EAF3EF2, 0xE0CA, 0x4598, 0xBF, 0x06, 0x71, 0xED, 0x1D, 0x9D, 0xD9, 0x53, 4096);
-
-
diff -Naur src/hostapi/wasapi/mingw-include/ksguid.h src/hostapi/wasapi/mingw-include/ksguid.h
--- src/hostapi/wasapi/mingw-include/ksguid.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/ksguid.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#define INITGUID
-#include <guiddef.h>
-
-#ifndef DECLSPEC_SELECTANY
-#define DECLSPEC_SELECTANY __declspec(selectany)
-#endif
-
-#ifdef DEFINE_GUIDEX
-#undef DEFINE_GUIDEX
-#endif
-
-#ifdef __cplusplus
-#define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID DECLSPEC_SELECTANY name = { STATICGUIDOF(name) }
-#else
-#define DEFINE_GUIDEX(name) const CDECL GUID DECLSPEC_SELECTANY name = { STATICGUIDOF(name) }
-#endif
-#ifndef STATICGUIDOF
-#define STATICGUIDOF(guid) STATIC_##guid
-#endif
-
-#ifndef DEFINE_WAVEFORMATEX_GUID
-#define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x),0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71
-#endif
diff -Naur src/hostapi/wasapi/mingw-include/ksproxy.h src/hostapi/wasapi/mingw-include/ksproxy.h
--- src/hostapi/wasapi/mingw-include/ksproxy.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/ksproxy.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,639 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-#ifndef __KSPROXY__
-#define __KSPROXY__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#undef KSDDKAPI
-#ifdef _KSDDK_
-#define KSDDKAPI
-#else
-#define KSDDKAPI DECLSPEC_IMPORT
-#endif
-
-#define STATIC_IID_IKsObject						\
-	0x423c13a2L,0x2070,0x11d0,0x9e,0xf7,0x00,0xaa,0x00,0xa2,0x16,0xa1
-
-#define STATIC_IID_IKsPinEx						\
-	0x7bb38260L,0xd19c,0x11d2,0xb3,0x8a,0x00,0xa0,0xc9,0x5e,0xc2,0x2e
-
-#define STATIC_IID_IKsPin						\
-	0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1
-
-#define STATIC_IID_IKsPinPipe						\
-	0xe539cd90L,0xa8b4,0x11d1,0x81,0x89,0x00,0xa0,0xc9,0x06,0x28,0x02
-
-#define STATIC_IID_IKsDataTypeHandler					\
-	0x5ffbaa02L,0x49a3,0x11d0,0x9f,0x36,0x00,0xaa,0x00,0xa2,0x16,0xa1
-
-#define STATIC_IID_IKsDataTypeCompletion				\
-	0x827D1A0EL,0x0F73,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
-
-#define STATIC_IID_IKsInterfaceHandler					\
-	0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96
-
-#define STATIC_IID_IKsClockPropertySet					\
-	0x5C5CBD84L,0xE755,0x11D0,0xAC,0x18,0x00,0xA0,0xC9,0x22,0x31,0x96
-
-#define STATIC_IID_IKsAllocator						\
-	0x8da64899L,0xc0d9,0x11d0,0x84,0x13,0x00,0x00,0xf8,0x22,0xfe,0x8a
-
-#define STATIC_IID_IKsAllocatorEx					\
-	0x091bb63aL,0x603f,0x11d1,0xb0,0x67,0x00,0xa0,0xc9,0x06,0x28,0x02
-
-#ifndef STATIC_IID_IKsPropertySet
-#define STATIC_IID_IKsPropertySet					\
-	0x31EFAC30L,0x515C,0x11d0,0xA9,0xAA,0x00,0xAA,0x00,0x61,0xBE,0x93
-#endif
-
-#define STATIC_IID_IKsTopology						\
-	0x28F54683L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
-
-#ifndef STATIC_IID_IKsControl
-#define STATIC_IID_IKsControl						\
-	0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96
-#endif
-
-#define STATIC_IID_IKsAggregateControl					\
-	0x7F40EAC0L,0x3947,0x11D2,0x87,0x4E,0x00,0xA0,0xC9,0x22,0x31,0x96
-
-#define STATIC_CLSID_Proxy						\
-	0x17CCA71BL,0xECD7,0x11D0,0xB9,0x08,0x00,0xA0,0xC9,0x22,0x31,0x96
-
-#ifdef _KS_
-
-DEFINE_GUIDEX(IID_IKsObject);
-
-DEFINE_GUIDEX(IID_IKsPin);
-
-DEFINE_GUIDEX(IID_IKsPinEx);
-
-DEFINE_GUIDEX(IID_IKsPinPipe);
-
-DEFINE_GUIDEX(IID_IKsDataTypeHandler);
-
-DEFINE_GUIDEX(IID_IKsDataTypeCompletion);
-
-DEFINE_GUIDEX(IID_IKsInterfaceHandler);
-
-DEFINE_GUIDEX(IID_IKsClockPropertySet);
-
-DEFINE_GUIDEX(IID_IKsAllocator);
-
-DEFINE_GUIDEX(IID_IKsAllocatorEx);
-
-#define IID_IKsQualityForwarder KSCATEGORY_QUALITY
-#define STATIC_IID_IKsQualityForwarder STATIC_KSCATEGORY_QUALITY
-
-typedef enum {
-  KsAllocatorMode_User,
-  KsAllocatorMode_Kernel
-} KSALLOCATORMODE;
-
-typedef enum {
-  FramingProp_Uninitialized,
-  FramingProp_None,
-  FramingProp_Old,
-  FramingProp_Ex
-} FRAMING_PROP;
-
-typedef FRAMING_PROP *PFRAMING_PROP;
-
-typedef enum {
-  Framing_Cache_Update,
-  Framing_Cache_ReadLast,
-  Framing_Cache_ReadOrig,
-  Framing_Cache_Write
-} FRAMING_CACHE_OPS;
-
-typedef struct {
-  LONGLONG MinTotalNominator;
-  LONGLONG MaxTotalNominator;
-  LONGLONG TotalDenominator;
-} OPTIMAL_WEIGHT_TOTALS;
-
-typedef struct IPin IPin;
-typedef struct IKsPin IKsPin;
-typedef struct IKsAllocator IKsAllocator;
-typedef struct IKsAllocatorEx IKsAllocatorEx;
-
-#define AllocatorStrategy_DontCare			0
-#define AllocatorStrategy_MinimizeNumberOfFrames	0x00000001
-#define AllocatorStrategy_MinimizeFrameSize		0x00000002
-#define AllocatorStrategy_MinimizeNumberOfAllocators	0x00000004
-#define AllocatorStrategy_MaximizeSpeed			0x00000008
-
-#define PipeFactor_None					0
-#define PipeFactor_UserModeUpstream			0x00000001
-#define PipeFactor_UserModeDownstream			0x00000002
-#define PipeFactor_MemoryTypes				0x00000004
-#define PipeFactor_Flags				0x00000008
-#define PipeFactor_PhysicalRanges			0x00000010
-#define PipeFactor_OptimalRanges			0x00000020
-#define PipeFactor_FixedCompression			0x00000040
-#define PipeFactor_UnknownCompression			0x00000080
-
-#define PipeFactor_Buffers				0x00000100
-#define PipeFactor_Align				0x00000200
-#define PipeFactor_PhysicalEnd				0x00000400
-#define PipeFactor_LogicalEnd				0x00000800
-
-typedef enum {
-  PipeState_DontCare,
-  PipeState_RangeNotFixed,
-  PipeState_RangeFixed,
-  PipeState_CompressionUnknown,
-  PipeState_Finalized
-} PIPE_STATE;
-
-typedef struct _PIPE_DIMENSIONS {
-  KS_COMPRESSION AllocatorPin;
-  KS_COMPRESSION MaxExpansionPin;
-  KS_COMPRESSION EndPin;
-} PIPE_DIMENSIONS,*PPIPE_DIMENSIONS;
-
-typedef enum {
-  Pipe_Allocator_None,
-  Pipe_Allocator_FirstPin,
-  Pipe_Allocator_LastPin,
-  Pipe_Allocator_MiddlePin
-} PIPE_ALLOCATOR_PLACE;
-
-typedef PIPE_ALLOCATOR_PLACE *PPIPE_ALLOCATOR_PLACE;
-
-typedef enum {
-  KS_MemoryTypeDontCare = 0,
-  KS_MemoryTypeKernelPaged,
-  KS_MemoryTypeKernelNonPaged,
-  KS_MemoryTypeDeviceHostMapped,
-  KS_MemoryTypeDeviceSpecific,
-  KS_MemoryTypeUser,
-  KS_MemoryTypeAnyHost
-} KS_LogicalMemoryType;
-
-typedef KS_LogicalMemoryType *PKS_LogicalMemoryType;
-
-typedef struct _PIPE_TERMINATION {
-  ULONG Flags;
-  ULONG OutsideFactors;
-  ULONG Weigth;
-  KS_FRAMING_RANGE PhysicalRange;
-  KS_FRAMING_RANGE_WEIGHTED OptimalRange;
-  KS_COMPRESSION Compression;
-} PIPE_TERMINATION;
-
-typedef struct _ALLOCATOR_PROPERTIES_EX
-{
-  long cBuffers;
-  long cbBuffer;
-  long cbAlign;
-  long cbPrefix;
-
-  GUID MemoryType;
-  GUID BusType;
-  PIPE_STATE State;
-  PIPE_TERMINATION Input;
-  PIPE_TERMINATION Output;
-  ULONG Strategy;
-  ULONG Flags;
-  ULONG Weight;
-  KS_LogicalMemoryType LogicalMemoryType;
-  PIPE_ALLOCATOR_PLACE AllocatorPlace;
-  PIPE_DIMENSIONS Dimensions;
-  KS_FRAMING_RANGE PhysicalRange;
-  IKsAllocatorEx *PrevSegment;
-  ULONG CountNextSegments;
-  IKsAllocatorEx **NextSegments;
-  ULONG InsideFactors;
-  ULONG NumberPins;
-} ALLOCATOR_PROPERTIES_EX;
-
-typedef ALLOCATOR_PROPERTIES_EX *PALLOCATOR_PROPERTIES_EX;
-
-#ifdef __STREAMS__
-
-struct IKsClockPropertySet;
-#undef INTERFACE
-#define INTERFACE IKsClockPropertySet
-DECLARE_INTERFACE_(IKsClockPropertySet,IUnknown)
-{
-  STDMETHOD(KsGetTime)			(THIS_
-						LONGLONG *Time
-					) PURE;
-  STDMETHOD(KsSetTime)			(THIS_
-						LONGLONG Time
-					) PURE;
-  STDMETHOD(KsGetPhysicalTime)		(THIS_
-						LONGLONG *Time
-					) PURE;
-  STDMETHOD(KsSetPhysicalTime)		(THIS_
-						LONGLONG Time
-					) PURE;
-  STDMETHOD(KsGetCorrelatedTime)	(THIS_
-						KSCORRELATED_TIME *CorrelatedTime
-					) PURE;
-  STDMETHOD(KsSetCorrelatedTime)	(THIS_
-						KSCORRELATED_TIME *CorrelatedTime
-					) PURE;
-  STDMETHOD(KsGetCorrelatedPhysicalTime)(THIS_
-						KSCORRELATED_TIME *CorrelatedTime
-					) PURE;
-  STDMETHOD(KsSetCorrelatedPhysicalTime)(THIS_
-						KSCORRELATED_TIME *CorrelatedTime
-					) PURE;
-  STDMETHOD(KsGetResolution)		(THIS_
-						KSRESOLUTION *Resolution
-					) PURE;
-  STDMETHOD(KsGetState)			(THIS_
-						KSSTATE *State
-					) PURE;
-};
-
-struct IKsAllocator;
-#undef INTERFACE
-#define INTERFACE IKsAllocator
-DECLARE_INTERFACE_(IKsAllocator,IUnknown)
-{
-  STDMETHOD_(HANDLE,KsGetAllocatorHandle)(THIS) PURE;
-  STDMETHOD_(KSALLOCATORMODE,KsGetAllocatorMode)(THIS) PURE;
-  STDMETHOD(KsGetAllocatorStatus)	(THIS_
-						PKSSTREAMALLOCATOR_STATUS AllocatorStatus
-					) PURE;
-  STDMETHOD_(VOID,KsSetAllocatorMode)	(THIS_
-						KSALLOCATORMODE Mode
-					) PURE;
-};
-
-struct IKsAllocatorEx;
-#undef INTERFACE
-#define INTERFACE IKsAllocatorEx
-DECLARE_INTERFACE_(IKsAllocatorEx,IKsAllocator)
-{
-  STDMETHOD_(PALLOCATOR_PROPERTIES_EX,KsGetProperties)(THIS) PURE;
-  STDMETHOD_(VOID,KsSetProperties)	(THIS_
-						PALLOCATOR_PROPERTIES_EX
-					) PURE;
-  STDMETHOD_(VOID,KsSetAllocatorHandle)	(THIS_
-						HANDLE AllocatorHandle
-					) PURE;
-  STDMETHOD_(HANDLE,KsCreateAllocatorAndGetHandle)(THIS_
-						IKsPin *KsPin
-					) PURE;
-};
-
-typedef enum {
-  KsPeekOperation_PeekOnly,
-  KsPeekOperation_AddRef
-} KSPEEKOPERATION;
-
-typedef struct _KSSTREAM_SEGMENT *PKSSTREAM_SEGMENT;
-struct IKsPin;
-
-#undef INTERFACE
-#define INTERFACE IKsPin
-DECLARE_INTERFACE_(IKsPin,IUnknown)
-{
-  STDMETHOD(KsQueryMediums)		(THIS_
-						PKSMULTIPLE_ITEM *MediumList
-					) PURE;
-  STDMETHOD(KsQueryInterfaces)		(THIS_
-						PKSMULTIPLE_ITEM *InterfaceList
-					) PURE;
-  STDMETHOD(KsCreateSinkPinHandle)	(THIS_
-						KSPIN_INTERFACE& Interface,
-						KSPIN_MEDIUM& Medium
-					) PURE;
-  STDMETHOD(KsGetCurrentCommunication)	(THIS_
-						KSPIN_COMMUNICATION *Communication,
-						KSPIN_INTERFACE *Interface,
-						KSPIN_MEDIUM *Medium
-					) PURE;
-  STDMETHOD(KsPropagateAcquire)		(THIS) PURE;
-  STDMETHOD(KsDeliver)			(THIS_
-						IMediaSample *Sample,
-						ULONG Flags
-					) PURE;
-  STDMETHOD(KsMediaSamplesCompleted)	(THIS_
-						PKSSTREAM_SEGMENT StreamSegment
-					) PURE;
-  STDMETHOD_(IMemAllocator *,KsPeekAllocator)(THIS_
-						KSPEEKOPERATION Operation
-					) PURE;
-  STDMETHOD(KsReceiveAllocator)		(THIS_
-						IMemAllocator *MemAllocator
-					) PURE;
-  STDMETHOD(KsRenegotiateAllocator)	(THIS) PURE;
-  STDMETHOD_(LONG,KsIncrementPendingIoCount)(THIS) PURE;
-  STDMETHOD_(LONG,KsDecrementPendingIoCount)(THIS) PURE;
-  STDMETHOD(KsQualityNotify)		(THIS_
-						ULONG Proportion,
-						REFERENCE_TIME TimeDelta
-					) PURE;
-};
-
-struct IKsPinEx;
-#undef INTERFACE
-#define INTERFACE IKsPinEx
-DECLARE_INTERFACE_(IKsPinEx,IKsPin)
-{
-  STDMETHOD_(VOID,KsNotifyError)	(THIS_
-						IMediaSample *Sample,
-						HRESULT hr
-					) PURE;
-};
-
-struct IKsPinPipe;
-#undef INTERFACE
-#define INTERFACE IKsPinPipe
-DECLARE_INTERFACE_(IKsPinPipe,IUnknown)
-{
-  STDMETHOD(KsGetPinFramingCache)	(THIS_
-						PKSALLOCATOR_FRAMING_EX *FramingEx,
-						PFRAMING_PROP FramingProp,
-						FRAMING_CACHE_OPS Option
-					) PURE;
-  STDMETHOD(KsSetPinFramingCache)	(THIS_
-						PKSALLOCATOR_FRAMING_EX FramingEx,
-						PFRAMING_PROP FramingProp,
-						FRAMING_CACHE_OPS Option
-					) PURE;
-  STDMETHOD_(IPin*,KsGetConnectedPin)	(THIS) PURE;
-  STDMETHOD_(IKsAllocatorEx*,KsGetPipe)	(THIS_
-						KSPEEKOPERATION Operation
-					) PURE;
-  STDMETHOD(KsSetPipe)			(THIS_
-						IKsAllocatorEx *KsAllocator
-					) PURE;
-  STDMETHOD_(ULONG,KsGetPipeAllocatorFlag)(THIS) PURE;
-  STDMETHOD(KsSetPipeAllocatorFlag)	(THIS_
-						ULONG Flag
-					) PURE;
-  STDMETHOD_(GUID,KsGetPinBusCache)	(THIS) PURE;
-  STDMETHOD(KsSetPinBusCache)		(THIS_
-						GUID Bus
-					) PURE;
-  STDMETHOD_(PWCHAR,KsGetPinName)	(THIS) PURE;
-  STDMETHOD_(PWCHAR,KsGetFilterName)	(THIS) PURE;
-};
-
-struct IKsPinFactory;
-#undef INTERFACE
-#define INTERFACE IKsPinFactory
-DECLARE_INTERFACE_(IKsPinFactory,IUnknown)
-{
-  STDMETHOD(KsPinFactory)		(THIS_
-						ULONG *PinFactory
-					) PURE;
-};
-
-typedef enum {
-  KsIoOperation_Write,
-  KsIoOperation_Read
-} KSIOOPERATION;
-
-struct IKsDataTypeHandler;
-#undef INTERFACE
-#define INTERFACE IKsDataTypeHandler
-DECLARE_INTERFACE_(IKsDataTypeHandler,IUnknown)
-{
-  STDMETHOD(KsCompleteIoOperation)	(THIS_
-						IMediaSample *Sample,
-						PVOID StreamHeader,
-						KSIOOPERATION IoOperation,
-						WINBOOL Cancelled
-					) PURE;
-  STDMETHOD(KsIsMediaTypeInRanges)	(THIS_
-						PVOID DataRanges
-					) PURE;
-  STDMETHOD(KsPrepareIoOperation)	(THIS_
-						IMediaSample *Sample,
-						PVOID StreamHeader,
-						KSIOOPERATION IoOperation
-					) PURE;
-  STDMETHOD(KsQueryExtendedSize)	(THIS_
-						ULONG *ExtendedSize
-					) PURE;
-  STDMETHOD(KsSetMediaType)		(THIS_
-						const AM_MEDIA_TYPE *AmMediaType
-					) PURE;
-};
-
-struct IKsDataTypeCompletion;
-#undef INTERFACE
-#define INTERFACE IKsDataTypeCompletion
-DECLARE_INTERFACE_(IKsDataTypeCompletion,IUnknown)
-{
-  STDMETHOD(KsCompleteMediaType)	(THIS_
-						HANDLE FilterHandle,
-						ULONG PinFactoryId,
-						AM_MEDIA_TYPE *AmMediaType
-					) PURE;
-};
-
-struct IKsInterfaceHandler;
-#undef INTERFACE
-#define INTERFACE IKsInterfaceHandler
-DECLARE_INTERFACE_(IKsInterfaceHandler,IUnknown)
-{
-  STDMETHOD(KsSetPin)			(THIS_
-						IKsPin *KsPin
-					) PURE;
-  STDMETHOD(KsProcessMediaSamples)	(THIS_
-						IKsDataTypeHandler *KsDataTypeHandler,
-						IMediaSample **SampleList,
-						PLONG SampleCount,
-						KSIOOPERATION IoOperation,
-						PKSSTREAM_SEGMENT *StreamSegment
-					) PURE;
-  STDMETHOD(KsCompleteIo)		(THIS_
-						PKSSTREAM_SEGMENT StreamSegment
-					) PURE;
-};
-
-typedef struct _KSSTREAM_SEGMENT {
-  IKsInterfaceHandler *KsInterfaceHandler;
-  IKsDataTypeHandler *KsDataTypeHandler;
-  KSIOOPERATION IoOperation;
-  HANDLE CompletionEvent;
-} KSSTREAM_SEGMENT;
-
-struct IKsObject;
-#undef INTERFACE
-#define INTERFACE IKsObject
-DECLARE_INTERFACE_(IKsObject,IUnknown)
-{
-  STDMETHOD_(HANDLE,KsGetObjectHandle)	(THIS) PURE;
-};
-
-struct IKsQualityForwarder;
-#undef INTERFACE
-#define INTERFACE IKsQualityForwarder
-DECLARE_INTERFACE_(IKsQualityForwarder,IKsObject)
-{
-  STDMETHOD_(VOID,KsFlushClient)	(THIS_
-						IKsPin *Pin
-					) PURE;
-};
-
-struct IKsNotifyEvent;
-#undef INTERFACE
-#define INTERFACE IKsNotifyEvent
-DECLARE_INTERFACE_(IKsNotifyEvent,IUnknown)
-{
-  STDMETHOD(KsNotifyEvent)		(THIS_
-						ULONG Event,
-						ULONG_PTR lParam1,
-						ULONG_PTR lParam2
-					) PURE;
-};
-
-KSDDKAPI HRESULT WINAPI KsResolveRequiredAttributes(PKSDATARANGE DataRange,PKSMULTIPLE_ITEM Attributes);
-KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice(REFGUID Category,ACCESS_MASK Access,PHANDLE DeviceHandle);
-KSDDKAPI HRESULT WINAPI KsSynchronousDeviceControl(HANDLE Handle,ULONG IoControl,PVOID InBuffer,ULONG InLength,PVOID OutBuffer,ULONG OutLength,PULONG BytesReturned);
-KSDDKAPI HRESULT WINAPI KsGetMultiplePinFactoryItems(HANDLE FilterHandle,ULONG PinFactoryId,ULONG PropertyId,PVOID *Items);
-KSDDKAPI HRESULT WINAPI KsGetMediaTypeCount(HANDLE FilterHandle,ULONG PinFactoryId,ULONG *MediaTypeCount);
-KSDDKAPI HRESULT WINAPI KsGetMediaType(int Position,AM_MEDIA_TYPE *AmMediaType,HANDLE FilterHandle,ULONG PinFactoryId);
-#endif /* __STREAMS__ */
-
-#ifndef _IKsPropertySet_
-DEFINE_GUIDEX(IID_IKsPropertySet);
-#endif
-
-#ifndef _IKsControl_
-DEFINE_GUIDEX(IID_IKsControl);
-#endif
-
-DEFINE_GUIDEX(IID_IKsAggregateControl);
-#ifndef _IKsTopology_
-DEFINE_GUIDEX(IID_IKsTopology);
-#endif
-DEFINE_GUIDSTRUCT("17CCA71B-ECD7-11D0-B908-00A0C9223196",CLSID_Proxy);
-#define CLSID_Proxy DEFINE_GUIDNAMED(CLSID_Proxy)
-
-#else /* _KS_ */
-
-#ifndef _IKsPropertySet_
-DEFINE_GUID(IID_IKsPropertySet,STATIC_IID_IKsPropertySet);
-#endif
-
-DEFINE_GUID(CLSID_Proxy,STATIC_CLSID_Proxy);
-
-#endif /* _KS_ */
-
-#ifndef _IKsPropertySet_
-#define _IKsPropertySet_
-#define KSPROPERTY_SUPPORT_GET 1
-#define KSPROPERTY_SUPPORT_SET 2
-
-#ifdef DECLARE_INTERFACE_
-struct IKsPropertySet;
-#undef INTERFACE
-#define INTERFACE IKsPropertySet
-DECLARE_INTERFACE_(IKsPropertySet,IUnknown)
-{
-  STDMETHOD(Set)			(THIS_
-						REFGUID PropSet,
-						ULONG Id,
-						LPVOID InstanceData,
-						ULONG InstanceLength,
-						LPVOID PropertyData,
-						ULONG DataLength
-					) PURE;
-  STDMETHOD(Get)			(THIS_
-						REFGUID PropSet,
-						ULONG Id,
-						LPVOID InstanceData,
-						ULONG InstanceLength,
-						LPVOID PropertyData,
-						ULONG DataLength,
-						ULONG *BytesReturned
-					) PURE;
-  STDMETHOD(QuerySupported)		(THIS_
-						REFGUID PropSet,
-						ULONG Id,
-						ULONG *TypeSupport
-					) PURE;
-};
-#endif /* DECLARE_INTERFACE_ */
-#endif /* _IKsPropertySet_ */
-
-#ifndef _IKsControl_
-#define _IKsControl_
-#ifdef DECLARE_INTERFACE_
-struct IKsControl;
-#undef INTERFACE
-#define INTERFACE IKsControl
-DECLARE_INTERFACE_(IKsControl,IUnknown)
-{
-  STDMETHOD(KsProperty)			(THIS_
-						PKSPROPERTY Property,
-						ULONG PropertyLength,
-						LPVOID PropertyData,
-						ULONG DataLength,
-						ULONG *BytesReturned
-					) PURE;
-  STDMETHOD(KsMethod)			(THIS_
-						PKSMETHOD Method,
-						ULONG MethodLength,
-						LPVOID MethodData,
-						ULONG DataLength,
-						ULONG *BytesReturned
-					) PURE;
-  STDMETHOD(KsEvent)			(THIS_
-						PKSEVENT Event,
-						ULONG EventLength,
-						LPVOID EventData,
-						ULONG DataLength,
-						ULONG *BytesReturned
-					) PURE;
-};
-#endif /* DECLARE_INTERFACE_ */
-#endif /* _IKsControl_ */
-
-#ifdef DECLARE_INTERFACE_
-struct IKsAggregateControl;
-#undef INTERFACE
-#define INTERFACE IKsAggregateControl
-DECLARE_INTERFACE_(IKsAggregateControl,IUnknown)
-{
-  STDMETHOD(KsAddAggregate)		(THIS_
-						REFGUID AggregateClass
-					) PURE;
-  STDMETHOD(KsRemoveAggregate)		(THIS_
-						REFGUID AggregateClass
-					) PURE;
-};
-#endif /* DECLARE_INTERFACE_ */
-
-#ifndef _IKsTopology_
-#define _IKsTopology_
-#ifdef DECLARE_INTERFACE_
-struct IKsTopology;
-#undef INTERFACE
-#define INTERFACE IKsTopology
-DECLARE_INTERFACE_(IKsTopology,IUnknown)
-{
-  STDMETHOD(CreateNodeInstance)		(THIS_
-						ULONG NodeId,
-						ULONG Flags,
-						ACCESS_MASK DesiredAccess,
-						IUnknown *UnkOuter,
-						REFGUID InterfaceId,
-						LPVOID *Interface
-					) PURE;
-};
-#endif /* DECLARE_INTERFACE_ */
-#endif /* _IKsTopology_ */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __KSPROXY__ */
-
diff -Naur src/hostapi/wasapi/mingw-include/ksuuids.h src/hostapi/wasapi/mingw-include/ksuuids.h
--- src/hostapi/wasapi/mingw-include/ksuuids.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/ksuuids.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,159 +0,0 @@
-/**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the w64 mingw-runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
-
-OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PACK,
-		0x36523B13,0x8EE5,0x11d1,0x8C,0xA3,0x00,0x60,0xB0,0x57,0x66,0x4A)
-
-OUR_GUID_ENTRY(MEDIATYPE_MPEG2_PES,
-		0xe06d8020,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIATYPE_MPEG2_SECTIONS,
-		0x455f176c,0x4b06,0x47ce,0x9a,0xef,0x8c,0xae,0xf7,0x3d,0xf7,0xb5)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_ATSC_SI,
-		0xb3c7397c,0xd303,0x414d,0xb3,0x3c,0x4e,0xd2,0xc9,0xd2,0x97,0x33)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DVB_SI,
-		0xe9dd31a3,0x221d,0x4adb,0x85,0x32,0x9a,0xf3,0x9,0xc1,0xa4,0x8)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2DATA,
-		0xc892e55b,0x252d,0x42b5,0xa3,0x16,0xd9,0x97,0xe7,0xa5,0xd9,0x95)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_VIDEO,
-		0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(FORMAT_MPEG2_VIDEO,
-		0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(FORMAT_VIDEOINFO2,
-		0xf72a76A0L,0xeb0a,0x11d0,0xac,0xe4,0x0,0x0,0xc0,0xcc,0x16,0xba)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_PROGRAM,
-		0xe06d8022,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT,
-		0xe06d8023,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE,
-		0x138aa9a4,0x1ee2,0x4c5b,0x98,0x8e,0x19,0xab,0xfd,0xbc,0x8a,0x11)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_MPEG2_AUDIO,
-		0xe06d802b,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DOLBY_AC3,
-		0xe06d802c,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_SUBPICTURE,
-		0xe06d802d,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_LPCM_AUDIO,
-		0xe06d8032,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DTS,
-		0xe06d8033,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_SDDS,
-		0xe06d8034,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIATYPE_DVD_ENCRYPTED_PACK,
-		0xed0b916a,0x044d,0x11d1,0xaa,0x78,0x00,0xc0,0x04f,0xc3,0x1d,0x60)
-
-OUR_GUID_ENTRY(MEDIATYPE_DVD_NAVIGATION,
-		0xe06d802e,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PCI,
-		0xe06d802f,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_DSI,
-		0xe06d8030,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER,
-		0xe06d8031,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(FORMAT_MPEG2Video,
-		0xe06d80e3,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(FORMAT_DolbyAC3,
-		0xe06d80e4,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(FORMAT_MPEG2Audio,
-		0xe06d80e5,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(FORMAT_DVD_LPCMAudio,
-		0xe06d80e6,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x05f,0x6c,0xbb,0xea)
-
-OUR_GUID_ENTRY(AM_KSPROPSETID_AC3,
-		0xBFABE720,0x6E1F,0x11D0,0xBC,0xF2,0x44,0x45,0x53,0x54,0x00,0x00)
-
-OUR_GUID_ENTRY(AM_KSPROPSETID_DvdSubPic,
-		0xac390460,0x43af,0x11d0,0xbd,0x6a,0x00,0x35,0x05,0xc1,0x03,0xa9)
-
-OUR_GUID_ENTRY(AM_KSPROPSETID_CopyProt,
-		0x0E8A0A40,0x6AEF,0x11D0,0x9E,0xD0,0x00,0xA0,0x24,0xCA,0x19,0xB3)
-
-OUR_GUID_ENTRY(AM_KSPROPSETID_TSRateChange,
-		0xa503c5c0,0x1d1d,0x11d1,0xad,0x80,0x44,0x45,0x53,0x54,0x0,0x0)
-
-OUR_GUID_ENTRY(AM_KSPROPSETID_DVD_RateChange,
-		0x3577eb09,0x9582,0x477f,0xb2,0x9c,0xb0,0xc4,0x52,0xa4,0xff,0x9a)
-
-OUR_GUID_ENTRY(AM_KSPROPSETID_DvdKaraoke,
-		0xae4720ae,0xaa71,0x42d8,0xb8,0x2a,0xff,0xfd,0xf5,0x8b,0x76,0xfd)
-
-OUR_GUID_ENTRY(AM_KSPROPSETID_FrameStep,
-		0xc830acbd,0xab07,0x492f,0x88,0x52,0x45,0xb6,0x98,0x7c,0x29,0x79)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_CAPTURE,
-		0x65E8773DL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_RENDER,
-		0x65E8773EL,0x8F56,0x11D0,0xA3,0xB9,0x00,0xA0,0xC9,0x22,0x31,0x96)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_DATACOMPRESSOR,
-		0x1E84C900L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_AUDIO,
-		0x6994AD04L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_VIDEO,
-		0x6994AD05L,0x93EF,0x11D0,0xA3,0xCC,0x00,0xA0,0xC9,0x22,0x31,0x96)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_TVTUNER,
-		0xa799a800L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_CROSSBAR,
-		0xa799a801L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_TVAUDIO,
-		0xa799a802L,0xa46d,0x11d0,0xa1,0x8c,0x00,0xa0,0x24,0x01,0xdc,0xd4)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC,
-		0x07dad660L,0x22f1,0x11d1,0xa9,0xf4,0x00,0xc0,0x4f,0xbb,0xde,0x8f)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_VBICODEC_MI,
-		0x9c24a977,0x951,0x451a,0x80,0x6,0xe,0x49,0xbd,0x28,0xcd,0x5f)
-
-OUR_GUID_ENTRY(AM_KSCATEGORY_SPLITTER,
-		0x0A4252A0L,0x7E70,0x11D0,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
-
-OUR_GUID_ENTRY(IID_IKsInterfaceHandler,
-		0xD3ABC7E0L,0x9A61,0x11D0,0xA4,0x0D,0x00,0xA0,0xC9,0x22,0x31,0x96)
-
-OUR_GUID_ENTRY(IID_IKsDataTypeHandler,
-		0x5FFBAA02L,0x49A3,0x11D0,0x9F,0x36,0x00,0xAA,0x00,0xA2,0x16,0xA1)
-
-OUR_GUID_ENTRY(IID_IKsPin,
-		0xb61178d1L,0xa2d9,0x11cf,0x9e,0x53,0x00,0xaa,0x00,0xa2,0x16,0xa1)
-
-OUR_GUID_ENTRY(IID_IKsControl,
-		0x28F54685L,0x06FD,0x11D2,0xB2,0x7A,0x00,0xA0,0xC9,0x22,0x31,0x96)
-
-OUR_GUID_ENTRY(IID_IKsPinFactory,
-		0xCD5EBE6BL,0x8B6E,0x11D1,0x8A,0xE0,0x00,0xA0,0xC9,0x22,0x31,0x96)
-
-OUR_GUID_ENTRY(AM_INTERFACESETID_Standard,
-		0x1A8766A0L,0x62CE,0x11CF,0xA5,0xD6,0x28,0xDB,0x04,0xC1,0x00,0x00)
-
diff -Naur src/hostapi/wasapi/mingw-include/mmdeviceapi.h src/hostapi/wasapi/mingw-include/mmdeviceapi.h
--- src/hostapi/wasapi/mingw-include/mmdeviceapi.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/mmdeviceapi.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,929 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0499 */
-/* Compiler settings for mmdeviceapi.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data 
-    VC __declspec() decoration level: 
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 500
-#endif
-
-/* verify that the <rpcsal.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCSAL_H_VERSION__
-#define __REQUIRED_RPCSAL_H_VERSION__ 100
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __mmdeviceapi_h__
-#define __mmdeviceapi_h__
-
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */ 
-
-#ifndef __IMMNotificationClient_FWD_DEFINED__
-#define __IMMNotificationClient_FWD_DEFINED__
-typedef interface IMMNotificationClient IMMNotificationClient;
-#endif 	/* __IMMNotificationClient_FWD_DEFINED__ */
-
-
-#ifndef __IMMDevice_FWD_DEFINED__
-#define __IMMDevice_FWD_DEFINED__
-typedef interface IMMDevice IMMDevice;
-#endif 	/* __IMMDevice_FWD_DEFINED__ */
-
-
-#ifndef __IMMDeviceCollection_FWD_DEFINED__
-#define __IMMDeviceCollection_FWD_DEFINED__
-typedef interface IMMDeviceCollection IMMDeviceCollection;
-#endif 	/* __IMMDeviceCollection_FWD_DEFINED__ */
-
-
-#ifndef __IMMEndpoint_FWD_DEFINED__
-#define __IMMEndpoint_FWD_DEFINED__
-typedef interface IMMEndpoint IMMEndpoint;
-#endif 	/* __IMMEndpoint_FWD_DEFINED__ */
-
-
-#ifndef __IMMDeviceEnumerator_FWD_DEFINED__
-#define __IMMDeviceEnumerator_FWD_DEFINED__
-typedef interface IMMDeviceEnumerator IMMDeviceEnumerator;
-#endif 	/* __IMMDeviceEnumerator_FWD_DEFINED__ */
-
-
-#ifndef __IMMDeviceActivator_FWD_DEFINED__
-#define __IMMDeviceActivator_FWD_DEFINED__
-typedef interface IMMDeviceActivator IMMDeviceActivator;
-#endif 	/* __IMMDeviceActivator_FWD_DEFINED__ */
-
-
-#ifndef __MMDeviceEnumerator_FWD_DEFINED__
-#define __MMDeviceEnumerator_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class MMDeviceEnumerator MMDeviceEnumerator;
-#else
-typedef struct MMDeviceEnumerator MMDeviceEnumerator;
-#endif /* __cplusplus */
-
-#endif 	/* __MMDeviceEnumerator_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "unknwn.h"
-#include "propsys.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif 
-
-
-/* interface __MIDL_itf_mmdeviceapi_0000_0000 */
-/* [local] */ 
-
-#define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
-#define E_UNSUPPORTED_TYPE HRESULT_FROM_WIN32(ERROR_UNSUPPORTED_TYPE)
-#define DEVICE_STATE_ACTIVE      0x00000001
-#define DEVICE_STATE_DISABLED    0x00000002
-#define DEVICE_STATE_NOTPRESENT  0x00000004
-#define DEVICE_STATE_UNPLUGGED   0x00000008
-#define DEVICE_STATEMASK_ALL     0x0000000f
-#ifdef DEFINE_PROPERTYKEY
-#undef DEFINE_PROPERTYKEY
-#endif
-#ifdef INITGUID
-#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name = { { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }, pid }
-#else
-#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name
-#endif // INITGUID
-DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FormFactor, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 0); 
-DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_ControlPanelPageProvider, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 1); 
-DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Association, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 2);
-DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_PhysicalSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 3);
-DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_GUID, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 4);
-DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Disable_SysFx, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 5);
-#define ENDPOINT_SYSFX_ENABLED          0x00000000  // System Effects are enabled.
-#define ENDPOINT_SYSFX_DISABLED         0x00000001  // System Effects are disabled.
-DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FullRangeSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 6);
-DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat, 0xf19f064d, 0x82c, 0x4e27, 0xbc, 0x73, 0x68, 0x82, 0xa1, 0xbb, 0x8e, 0x4c, 0); 
-typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS
-    {
-    DWORD cbDirectXAudioActivationParams;
-    GUID guidAudioSession;
-    DWORD dwAudioStreamFlags;
-    } 	DIRECTX_AUDIO_ACTIVATION_PARAMS;
-
-typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS *PDIRECTX_AUDIO_ACTIVATION_PARAMS;
-
-typedef /* [public][public][public][public][public] */ 
-enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0001
-    {	eRender	= 0,
-	eCapture	= ( eRender + 1 ) ,
-	eAll	= ( eCapture + 1 ) ,
-	EDataFlow_enum_count	= ( eAll + 1 ) 
-    } 	EDataFlow;
-
-typedef /* [public][public][public] */ 
-enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0002
-    {	eConsole	= 0,
-	eMultimedia	= ( eConsole + 1 ) ,
-	eCommunications	= ( eMultimedia + 1 ) ,
-	ERole_enum_count	= ( eCommunications + 1 ) 
-    } 	ERole;
-
-typedef /* [public] */ 
-enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0003
-    {	RemoteNetworkDevice	= 0,
-	Speakers	= ( RemoteNetworkDevice + 1 ) ,
-	LineLevel	= ( Speakers + 1 ) ,
-	Headphones	= ( LineLevel + 1 ) ,
-	Microphone	= ( Headphones + 1 ) ,
-	Headset	= ( Microphone + 1 ) ,
-	Handset	= ( Headset + 1 ) ,
-	UnknownDigitalPassthrough	= ( Handset + 1 ) ,
-	SPDIF	= ( UnknownDigitalPassthrough + 1 ) ,
-	HDMI	= ( SPDIF + 1 ) ,
-	UnknownFormFactor	= ( HDMI + 1 ) 
-    } 	EndpointFormFactor;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IMMNotificationClient_INTERFACE_DEFINED__
-#define __IMMNotificationClient_INTERFACE_DEFINED__
-
-/* interface IMMNotificationClient */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IMMNotificationClient;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("7991EEC9-7E89-4D85-8390-6C703CEC60C0")
-    IMMNotificationClient : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceStateChanged( 
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId,
-            /* [in] */ 
-            __in  DWORD dwNewState) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceAdded( 
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceRemoved( 
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged( 
-            /* [in] */ 
-            __in  EDataFlow flow,
-            /* [in] */ 
-            __in  ERole role,
-            /* [in] */ 
-            __in  LPCWSTR pwstrDefaultDeviceId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnPropertyValueChanged( 
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId,
-            /* [in] */ 
-            __in  const PROPERTYKEY key) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IMMNotificationClientVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMMNotificationClient * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMMNotificationClient * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMMNotificationClient * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceStateChanged )( 
-            IMMNotificationClient * This,
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId,
-            /* [in] */ 
-            __in  DWORD dwNewState);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceAdded )( 
-            IMMNotificationClient * This,
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceRemoved )( 
-            IMMNotificationClient * This,
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDefaultDeviceChanged )( 
-            IMMNotificationClient * This,
-            /* [in] */ 
-            __in  EDataFlow flow,
-            /* [in] */ 
-            __in  ERole role,
-            /* [in] */ 
-            __in  LPCWSTR pwstrDefaultDeviceId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnPropertyValueChanged )( 
-            IMMNotificationClient * This,
-            /* [in] */ 
-            __in  LPCWSTR pwstrDeviceId,
-            /* [in] */ 
-            __in  const PROPERTYKEY key);
-        
-        END_INTERFACE
-    } IMMNotificationClientVtbl;
-
-    interface IMMNotificationClient
-    {
-        CONST_VTBL struct IMMNotificationClientVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IMMNotificationClient_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IMMNotificationClient_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IMMNotificationClient_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IMMNotificationClient_OnDeviceStateChanged(This,pwstrDeviceId,dwNewState)	\
-    ( (This)->lpVtbl -> OnDeviceStateChanged(This,pwstrDeviceId,dwNewState) ) 
-
-#define IMMNotificationClient_OnDeviceAdded(This,pwstrDeviceId)	\
-    ( (This)->lpVtbl -> OnDeviceAdded(This,pwstrDeviceId) ) 
-
-#define IMMNotificationClient_OnDeviceRemoved(This,pwstrDeviceId)	\
-    ( (This)->lpVtbl -> OnDeviceRemoved(This,pwstrDeviceId) ) 
-
-#define IMMNotificationClient_OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId)	\
-    ( (This)->lpVtbl -> OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId) ) 
-
-#define IMMNotificationClient_OnPropertyValueChanged(This,pwstrDeviceId,key)	\
-    ( (This)->lpVtbl -> OnPropertyValueChanged(This,pwstrDeviceId,key) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IMMNotificationClient_INTERFACE_DEFINED__ */
-
-
-#ifndef __IMMDevice_INTERFACE_DEFINED__
-#define __IMMDevice_INTERFACE_DEFINED__
-
-/* interface IMMDevice */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IMMDevice;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("D666063F-1587-4E43-81F1-B948E807363F")
-    IMMDevice : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( 
-            /* [in] */ 
-            __in  REFIID iid,
-            /* [in] */ 
-            __in  DWORD dwClsCtx,
-            /* [unique][in] */ 
-            __in_opt  PROPVARIANT *pActivationParams,
-            /* [iid_is][out] */ 
-            __out  void **ppInterface) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OpenPropertyStore( 
-            /* [in] */ 
-            __in  DWORD stgmAccess,
-            /* [out] */ 
-            __out  IPropertyStore **ppProperties) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetId( 
-            /* [out] */ 
-            __deref_out  LPWSTR *ppstrId) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetState( 
-            /* [out] */ 
-            __out  DWORD *pdwState) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IMMDeviceVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMMDevice * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMMDevice * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMMDevice * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( 
-            IMMDevice * This,
-            /* [in] */ 
-            __in  REFIID iid,
-            /* [in] */ 
-            __in  DWORD dwClsCtx,
-            /* [unique][in] */ 
-            __in_opt  PROPVARIANT *pActivationParams,
-            /* [iid_is][out] */ 
-            __out  void **ppInterface);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OpenPropertyStore )( 
-            IMMDevice * This,
-            /* [in] */ 
-            __in  DWORD stgmAccess,
-            /* [out] */ 
-            __out  IPropertyStore **ppProperties);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetId )( 
-            IMMDevice * This,
-            /* [out] */ 
-            __deref_out  LPWSTR *ppstrId);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetState )( 
-            IMMDevice * This,
-            /* [out] */ 
-            __out  DWORD *pdwState);
-        
-        END_INTERFACE
-    } IMMDeviceVtbl;
-
-    interface IMMDevice
-    {
-        CONST_VTBL struct IMMDeviceVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IMMDevice_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IMMDevice_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IMMDevice_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppInterface)	\
-    ( (This)->lpVtbl -> Activate(This,iid,dwClsCtx,pActivationParams,ppInterface) ) 
-
-#define IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties)	\
-    ( (This)->lpVtbl -> OpenPropertyStore(This,stgmAccess,ppProperties) ) 
-
-#define IMMDevice_GetId(This,ppstrId)	\
-    ( (This)->lpVtbl -> GetId(This,ppstrId) ) 
-
-#define IMMDevice_GetState(This,pdwState)	\
-    ( (This)->lpVtbl -> GetState(This,pdwState) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IMMDevice_INTERFACE_DEFINED__ */
-
-
-#ifndef __IMMDeviceCollection_INTERFACE_DEFINED__
-#define __IMMDeviceCollection_INTERFACE_DEFINED__
-
-/* interface IMMDeviceCollection */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IMMDeviceCollection;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("0BD7A1BE-7A1A-44DB-8397-CC5392387B5E")
-    IMMDeviceCollection : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ 
-            __out  UINT *pcDevices) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item( 
-            /* [in] */ 
-            __in  UINT nDevice,
-            /* [out] */ 
-            __out  IMMDevice **ppDevice) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IMMDeviceCollectionVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMMDeviceCollection * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMMDeviceCollection * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMMDeviceCollection * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            IMMDeviceCollection * This,
-            /* [out] */ 
-            __out  UINT *pcDevices);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )( 
-            IMMDeviceCollection * This,
-            /* [in] */ 
-            __in  UINT nDevice,
-            /* [out] */ 
-            __out  IMMDevice **ppDevice);
-        
-        END_INTERFACE
-    } IMMDeviceCollectionVtbl;
-
-    interface IMMDeviceCollection
-    {
-        CONST_VTBL struct IMMDeviceCollectionVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IMMDeviceCollection_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IMMDeviceCollection_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IMMDeviceCollection_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IMMDeviceCollection_GetCount(This,pcDevices)	\
-    ( (This)->lpVtbl -> GetCount(This,pcDevices) ) 
-
-#define IMMDeviceCollection_Item(This,nDevice,ppDevice)	\
-    ( (This)->lpVtbl -> Item(This,nDevice,ppDevice) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IMMDeviceCollection_INTERFACE_DEFINED__ */
-
-
-#ifndef __IMMEndpoint_INTERFACE_DEFINED__
-#define __IMMEndpoint_INTERFACE_DEFINED__
-
-/* interface IMMEndpoint */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IMMEndpoint;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("1BE09788-6894-4089-8586-9A2A6C265AC5")
-    IMMEndpoint : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDataFlow( 
-            /* [out] */ 
-            __out  EDataFlow *pDataFlow) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IMMEndpointVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMMEndpoint * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMMEndpoint * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMMEndpoint * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDataFlow )( 
-            IMMEndpoint * This,
-            /* [out] */ 
-            __out  EDataFlow *pDataFlow);
-        
-        END_INTERFACE
-    } IMMEndpointVtbl;
-
-    interface IMMEndpoint
-    {
-        CONST_VTBL struct IMMEndpointVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IMMEndpoint_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IMMEndpoint_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IMMEndpoint_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IMMEndpoint_GetDataFlow(This,pDataFlow)	\
-    ( (This)->lpVtbl -> GetDataFlow(This,pDataFlow) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IMMEndpoint_INTERFACE_DEFINED__ */
-
-
-#ifndef __IMMDeviceEnumerator_INTERFACE_DEFINED__
-#define __IMMDeviceEnumerator_INTERFACE_DEFINED__
-
-/* interface IMMDeviceEnumerator */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IMMDeviceEnumerator;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("A95664D2-9614-4F35-A746-DE8DB63617E6")
-    IMMDeviceEnumerator : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumAudioEndpoints( 
-            /* [in] */ 
-            __in  EDataFlow dataFlow,
-            /* [in] */ 
-            __in  DWORD dwStateMask,
-            /* [out] */ 
-            __out  IMMDeviceCollection **ppDevices) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDefaultAudioEndpoint( 
-            /* [in] */ 
-            __in  EDataFlow dataFlow,
-            /* [in] */ 
-            __in  ERole role,
-            /* [out] */ 
-            __out  IMMDevice **ppEndpoint) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDevice( 
-            /*  */ 
-            __in  LPCWSTR pwstrId,
-            /* [out] */ 
-            __out  IMMDevice **ppDevice) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RegisterEndpointNotificationCallback( 
-            /* [in] */ 
-            __in  IMMNotificationClient *pClient) = 0;
-        
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE UnregisterEndpointNotificationCallback( 
-            /* [in] */ 
-            __in  IMMNotificationClient *pClient) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IMMDeviceEnumeratorVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMMDeviceEnumerator * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMMDeviceEnumerator * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMMDeviceEnumerator * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumAudioEndpoints )( 
-            IMMDeviceEnumerator * This,
-            /* [in] */ 
-            __in  EDataFlow dataFlow,
-            /* [in] */ 
-            __in  DWORD dwStateMask,
-            /* [out] */ 
-            __out  IMMDeviceCollection **ppDevices);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultAudioEndpoint )( 
-            IMMDeviceEnumerator * This,
-            /* [in] */ 
-            __in  EDataFlow dataFlow,
-            /* [in] */ 
-            __in  ERole role,
-            /* [out] */ 
-            __out  IMMDevice **ppEndpoint);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDevice )( 
-            IMMDeviceEnumerator * This,
-            /*  */ 
-            __in  LPCWSTR pwstrId,
-            /* [out] */ 
-            __out  IMMDevice **ppDevice);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterEndpointNotificationCallback )( 
-            IMMDeviceEnumerator * This,
-            /* [in] */ 
-            __in  IMMNotificationClient *pClient);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterEndpointNotificationCallback )( 
-            IMMDeviceEnumerator * This,
-            /* [in] */ 
-            __in  IMMNotificationClient *pClient);
-        
-        END_INTERFACE
-    } IMMDeviceEnumeratorVtbl;
-
-    interface IMMDeviceEnumerator
-    {
-        CONST_VTBL struct IMMDeviceEnumeratorVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IMMDeviceEnumerator_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IMMDeviceEnumerator_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IMMDeviceEnumerator_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices)	\
-    ( (This)->lpVtbl -> EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) ) 
-
-#define IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint)	\
-    ( (This)->lpVtbl -> GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) ) 
-
-#define IMMDeviceEnumerator_GetDevice(This,pwstrId,ppDevice)	\
-    ( (This)->lpVtbl -> GetDevice(This,pwstrId,ppDevice) ) 
-
-#define IMMDeviceEnumerator_RegisterEndpointNotificationCallback(This,pClient)	\
-    ( (This)->lpVtbl -> RegisterEndpointNotificationCallback(This,pClient) ) 
-
-#define IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(This,pClient)	\
-    ( (This)->lpVtbl -> UnregisterEndpointNotificationCallback(This,pClient) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IMMDeviceEnumerator_INTERFACE_DEFINED__ */
-
-
-#ifndef __IMMDeviceActivator_INTERFACE_DEFINED__
-#define __IMMDeviceActivator_INTERFACE_DEFINED__
-
-/* interface IMMDeviceActivator */
-/* [unique][helpstring][nonextensible][uuid][local][object] */ 
-
-
-EXTERN_C const IID IID_IMMDeviceActivator;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("3B0D0EA4-D0A9-4B0E-935B-09516746FAC0")
-    IMMDeviceActivator : public IUnknown
-    {
-    public:
-        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate( 
-            /* [in] */ 
-            __in  REFIID iid,
-            /* [in] */ 
-            __in  IMMDevice *pDevice,
-            /* [in] */ 
-            __in_opt  PROPVARIANT *pActivationParams,
-            /* [iid_is][out] */ 
-            __out  void **ppInterface) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IMMDeviceActivatorVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMMDeviceActivator * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMMDeviceActivator * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMMDeviceActivator * This);
-        
-        /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )( 
-            IMMDeviceActivator * This,
-            /* [in] */ 
-            __in  REFIID iid,
-            /* [in] */ 
-            __in  IMMDevice *pDevice,
-            /* [in] */ 
-            __in_opt  PROPVARIANT *pActivationParams,
-            /* [iid_is][out] */ 
-            __out  void **ppInterface);
-        
-        END_INTERFACE
-    } IMMDeviceActivatorVtbl;
-
-    interface IMMDeviceActivator
-    {
-        CONST_VTBL struct IMMDeviceActivatorVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IMMDeviceActivator_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IMMDeviceActivator_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IMMDeviceActivator_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IMMDeviceActivator_Activate(This,iid,pDevice,pActivationParams,ppInterface)	\
-    ( (This)->lpVtbl -> Activate(This,iid,pDevice,pActivationParams,ppInterface) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IMMDeviceActivator_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_mmdeviceapi_0000_0006 */
-/* [local] */ 
-
-typedef /* [public] */ struct __MIDL___MIDL_itf_mmdeviceapi_0000_0006_0001
-    {
-    LPARAM AddPageParam;
-    IMMDevice *pEndpoint;
-    IMMDevice *pPnpInterface;
-    IMMDevice *pPnpDevnode;
-    } 	AudioExtensionParams;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_s_ifspec;
-
-
-#ifndef __MMDeviceAPILib_LIBRARY_DEFINED__
-#define __MMDeviceAPILib_LIBRARY_DEFINED__
-
-/* library MMDeviceAPILib */
-/* [helpstring][version][uuid] */ 
-
-
-EXTERN_C const IID LIBID_MMDeviceAPILib;
-
-EXTERN_C const CLSID CLSID_MMDeviceEnumerator;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("BCDE0395-E52F-467C-8E3D-C4579291692E")
-MMDeviceEnumerator;
-#endif
-#endif /* __MMDeviceAPILib_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
-
diff -Naur src/hostapi/wasapi/mingw-include/propkeydef.h src/hostapi/wasapi/mingw-include/propkeydef.h
--- src/hostapi/wasapi/mingw-include/propkeydef.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/propkeydef.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,26 +0,0 @@
-#ifndef PID_FIRST_USABLE
-#define PID_FIRST_USABLE 2
-#endif
-
-#ifndef REFPROPERTYKEY
-#ifdef __cplusplus
-#define REFPROPERTYKEY const PROPERTYKEY &
-#else // !__cplusplus
-#define REFPROPERTYKEY const PROPERTYKEY * __MIDL_CONST
-#endif // __cplusplus
-#endif //REFPROPERTYKEY
-
-#ifdef DEFINE_PROPERTYKEY
-#undef DEFINE_PROPERTYKEY
-#endif
-
-#ifdef INITGUID
-#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY name = { { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }, pid }
-#else
-#define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name
-#endif // INITGUID
-
-#ifndef IsEqualPropertyKey
-#define IsEqualPropertyKey(a, b)   (((a).pid == (b).pid) && IsEqualIID((a).fmtid, (b).fmtid) )
-#endif  // IsEqualPropertyKey
-
diff -Naur src/hostapi/wasapi/mingw-include/propsys.h src/hostapi/wasapi/mingw-include/propsys.h
--- src/hostapi/wasapi/mingw-include/propsys.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/propsys.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,3605 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0499 */
-/* Compiler settings for propsys.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data 
-    VC __declspec() decoration level: 
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-/* verify that the <rpcsal.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCSAL_H_VERSION__
-#define __REQUIRED_RPCSAL_H_VERSION__ 100
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __propsys_h__
-#define __propsys_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */ 
-
-#ifndef __IInitializeWithFile_FWD_DEFINED__
-#define __IInitializeWithFile_FWD_DEFINED__
-typedef interface IInitializeWithFile IInitializeWithFile;
-#endif 	/* __IInitializeWithFile_FWD_DEFINED__ */
-
-
-#ifndef __IInitializeWithStream_FWD_DEFINED__
-#define __IInitializeWithStream_FWD_DEFINED__
-typedef interface IInitializeWithStream IInitializeWithStream;
-#endif 	/* __IInitializeWithStream_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyStore_FWD_DEFINED__
-#define __IPropertyStore_FWD_DEFINED__
-typedef interface IPropertyStore IPropertyStore;
-#endif 	/* __IPropertyStore_FWD_DEFINED__ */
-
-
-#ifndef __INamedPropertyStore_FWD_DEFINED__
-#define __INamedPropertyStore_FWD_DEFINED__
-typedef interface INamedPropertyStore INamedPropertyStore;
-#endif 	/* __INamedPropertyStore_FWD_DEFINED__ */
-
-
-#ifndef __IObjectWithPropertyKey_FWD_DEFINED__
-#define __IObjectWithPropertyKey_FWD_DEFINED__
-typedef interface IObjectWithPropertyKey IObjectWithPropertyKey;
-#endif 	/* __IObjectWithPropertyKey_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyChange_FWD_DEFINED__
-#define __IPropertyChange_FWD_DEFINED__
-typedef interface IPropertyChange IPropertyChange;
-#endif 	/* __IPropertyChange_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyChangeArray_FWD_DEFINED__
-#define __IPropertyChangeArray_FWD_DEFINED__
-typedef interface IPropertyChangeArray IPropertyChangeArray;
-#endif 	/* __IPropertyChangeArray_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyStoreCapabilities_FWD_DEFINED__
-#define __IPropertyStoreCapabilities_FWD_DEFINED__
-typedef interface IPropertyStoreCapabilities IPropertyStoreCapabilities;
-#endif 	/* __IPropertyStoreCapabilities_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyStoreCache_FWD_DEFINED__
-#define __IPropertyStoreCache_FWD_DEFINED__
-typedef interface IPropertyStoreCache IPropertyStoreCache;
-#endif 	/* __IPropertyStoreCache_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyEnumType_FWD_DEFINED__
-#define __IPropertyEnumType_FWD_DEFINED__
-typedef interface IPropertyEnumType IPropertyEnumType;
-#endif 	/* __IPropertyEnumType_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyEnumTypeList_FWD_DEFINED__
-#define __IPropertyEnumTypeList_FWD_DEFINED__
-typedef interface IPropertyEnumTypeList IPropertyEnumTypeList;
-#endif 	/* __IPropertyEnumTypeList_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyDescription_FWD_DEFINED__
-#define __IPropertyDescription_FWD_DEFINED__
-typedef interface IPropertyDescription IPropertyDescription;
-#endif 	/* __IPropertyDescription_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyDescriptionAliasInfo_FWD_DEFINED__
-#define __IPropertyDescriptionAliasInfo_FWD_DEFINED__
-typedef interface IPropertyDescriptionAliasInfo IPropertyDescriptionAliasInfo;
-#endif 	/* __IPropertyDescriptionAliasInfo_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyDescriptionSearchInfo_FWD_DEFINED__
-#define __IPropertyDescriptionSearchInfo_FWD_DEFINED__
-typedef interface IPropertyDescriptionSearchInfo IPropertyDescriptionSearchInfo;
-#endif 	/* __IPropertyDescriptionSearchInfo_FWD_DEFINED__ */
-
-
-#ifndef __IPropertySystem_FWD_DEFINED__
-#define __IPropertySystem_FWD_DEFINED__
-typedef interface IPropertySystem IPropertySystem;
-#endif 	/* __IPropertySystem_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyDescriptionList_FWD_DEFINED__
-#define __IPropertyDescriptionList_FWD_DEFINED__
-typedef interface IPropertyDescriptionList IPropertyDescriptionList;
-#endif 	/* __IPropertyDescriptionList_FWD_DEFINED__ */
-
-
-#ifndef __IPropertyStoreFactory_FWD_DEFINED__
-#define __IPropertyStoreFactory_FWD_DEFINED__
-typedef interface IPropertyStoreFactory IPropertyStoreFactory;
-#endif 	/* __IPropertyStoreFactory_FWD_DEFINED__ */
-
-
-#ifndef __IDelayedPropertyStoreFactory_FWD_DEFINED__
-#define __IDelayedPropertyStoreFactory_FWD_DEFINED__
-typedef interface IDelayedPropertyStoreFactory IDelayedPropertyStoreFactory;
-#endif 	/* __IDelayedPropertyStoreFactory_FWD_DEFINED__ */
-
-
-#ifndef __IPersistSerializedPropStorage_FWD_DEFINED__
-#define __IPersistSerializedPropStorage_FWD_DEFINED__
-typedef interface IPersistSerializedPropStorage IPersistSerializedPropStorage;
-#endif 	/* __IPersistSerializedPropStorage_FWD_DEFINED__ */
-
-
-#ifndef __IPropertySystemChangeNotify_FWD_DEFINED__
-#define __IPropertySystemChangeNotify_FWD_DEFINED__
-typedef interface IPropertySystemChangeNotify IPropertySystemChangeNotify;
-#endif 	/* __IPropertySystemChangeNotify_FWD_DEFINED__ */
-
-
-#ifndef __ICreateObject_FWD_DEFINED__
-#define __ICreateObject_FWD_DEFINED__
-typedef interface ICreateObject ICreateObject;
-#endif 	/* __ICreateObject_FWD_DEFINED__ */
-
-
-#ifndef __InMemoryPropertyStore_FWD_DEFINED__
-#define __InMemoryPropertyStore_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class InMemoryPropertyStore InMemoryPropertyStore;
-#else
-typedef struct InMemoryPropertyStore InMemoryPropertyStore;
-#endif /* __cplusplus */
-
-#endif 	/* __InMemoryPropertyStore_FWD_DEFINED__ */
-
-
-#ifndef __PropertySystem_FWD_DEFINED__
-#define __PropertySystem_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class PropertySystem PropertySystem;
-#else
-typedef struct PropertySystem PropertySystem;
-#endif /* __cplusplus */
-
-#endif 	/* __PropertySystem_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oleidl.h"
-#include "ocidl.h"
-#include "shtypes.h"
-#include "structuredquery.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif 
-
-
-/* interface __MIDL_itf_propsys_0000_0000 */
-/* [local] */ 
-
-#ifndef PSSTDAPI
-#if defined(_PROPSYS_)
-#define PSSTDAPI          STDAPI
-#define PSSTDAPI_(type)   STDAPI_(type)
-#else
-#define PSSTDAPI          EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
-#define PSSTDAPI_(type)   EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
-#endif
-#endif // PSSTDAPI
-#if 0
-typedef PROPERTYKEY *REFPROPERTYKEY;
-
-#endif // 0
-#include <propkeydef.h>
-
-
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IInitializeWithFile_INTERFACE_DEFINED__
-#define __IInitializeWithFile_INTERFACE_DEFINED__
-
-/* interface IInitializeWithFile */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IInitializeWithFile;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("b7d14566-0509-4cce-a71f-0a554233bd9b")
-    IInitializeWithFile : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Initialize( 
-            /* [string][in] */ __RPC__in LPCWSTR pszFilePath,
-            /* [in] */ DWORD grfMode) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IInitializeWithFileVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IInitializeWithFile * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IInitializeWithFile * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IInitializeWithFile * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
-            IInitializeWithFile * This,
-            /* [string][in] */ __RPC__in LPCWSTR pszFilePath,
-            /* [in] */ DWORD grfMode);
-        
-        END_INTERFACE
-    } IInitializeWithFileVtbl;
-
-    interface IInitializeWithFile
-    {
-        CONST_VTBL struct IInitializeWithFileVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IInitializeWithFile_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IInitializeWithFile_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IInitializeWithFile_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IInitializeWithFile_Initialize(This,pszFilePath,grfMode)	\
-    ( (This)->lpVtbl -> Initialize(This,pszFilePath,grfMode) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IInitializeWithFile_INTERFACE_DEFINED__ */
-
-
-#ifndef __IInitializeWithStream_INTERFACE_DEFINED__
-#define __IInitializeWithStream_INTERFACE_DEFINED__
-
-/* interface IInitializeWithStream */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IInitializeWithStream;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("b824b49d-22ac-4161-ac8a-9916e8fa3f7f")
-    IInitializeWithStream : public IUnknown
-    {
-    public:
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE Initialize( 
-            /* [in] */ IStream *pstream,
-            /* [in] */ DWORD grfMode) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IInitializeWithStreamVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IInitializeWithStream * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IInitializeWithStream * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IInitializeWithStream * This);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Initialize )( 
-            IInitializeWithStream * This,
-            /* [in] */ IStream *pstream,
-            /* [in] */ DWORD grfMode);
-        
-        END_INTERFACE
-    } IInitializeWithStreamVtbl;
-
-    interface IInitializeWithStream
-    {
-        CONST_VTBL struct IInitializeWithStreamVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IInitializeWithStream_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IInitializeWithStream_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IInitializeWithStream_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IInitializeWithStream_Initialize(This,pstream,grfMode)	\
-    ( (This)->lpVtbl -> Initialize(This,pstream,grfMode) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-/* [call_as] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_RemoteInitialize_Proxy( 
-    IInitializeWithStream * This,
-    /* [in] */ __RPC__in_opt IStream *pstream,
-    /* [in] */ DWORD grfMode);
-
-
-void __RPC_STUB IInitializeWithStream_RemoteInitialize_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-
-#endif 	/* __IInitializeWithStream_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyStore_INTERFACE_DEFINED__
-#define __IPropertyStore_INTERFACE_DEFINED__
-
-/* interface IPropertyStore */
-/* [unique][object][helpstring][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyStore;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("886d8eeb-8cf2-4446-8d02-cdba1dbdcf99")
-    IPropertyStore : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ __RPC__out DWORD *cProps) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAt( 
-            /* [in] */ DWORD iProp,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetValue( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [out] */ __RPC__out PROPVARIANT *pv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetValue( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyStoreVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyStore * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyStore * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyStore * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            IPropertyStore * This,
-            /* [out] */ __RPC__out DWORD *cProps);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAt )( 
-            IPropertyStore * This,
-            /* [in] */ DWORD iProp,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetValue )( 
-            IPropertyStore * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [out] */ __RPC__out PROPVARIANT *pv);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetValue )( 
-            IPropertyStore * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *Commit )( 
-            IPropertyStore * This);
-        
-        END_INTERFACE
-    } IPropertyStoreVtbl;
-
-    interface IPropertyStore
-    {
-        CONST_VTBL struct IPropertyStoreVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyStore_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyStore_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyStore_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyStore_GetCount(This,cProps)	\
-    ( (This)->lpVtbl -> GetCount(This,cProps) ) 
-
-#define IPropertyStore_GetAt(This,iProp,pkey)	\
-    ( (This)->lpVtbl -> GetAt(This,iProp,pkey) ) 
-
-#define IPropertyStore_GetValue(This,key,pv)	\
-    ( (This)->lpVtbl -> GetValue(This,key,pv) ) 
-
-#define IPropertyStore_SetValue(This,key,propvar)	\
-    ( (This)->lpVtbl -> SetValue(This,key,propvar) ) 
-
-#define IPropertyStore_Commit(This)	\
-    ( (This)->lpVtbl -> Commit(This) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyStore_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_propsys_0000_0003 */
-/* [local] */ 
-
-typedef /* [unique] */  __RPC_unique_pointer IPropertyStore *LPPROPERTYSTORE;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0003_v0_0_s_ifspec;
-
-#ifndef __INamedPropertyStore_INTERFACE_DEFINED__
-#define __INamedPropertyStore_INTERFACE_DEFINED__
-
-/* interface INamedPropertyStore */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_INamedPropertyStore;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("71604b0f-97b0-4764-8577-2f13e98a1422")
-    INamedPropertyStore : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetNamedValue( 
-            /* [string][in] */ __RPC__in LPCWSTR pszName,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvar) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetNamedValue( 
-            /* [string][in] */ __RPC__in LPCWSTR pszName,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetNameCount( 
-            /* [out] */ __RPC__out DWORD *pdwCount) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetNameAt( 
-            /* [in] */ DWORD iProp,
-            /* [out] */ __RPC__deref_out_opt BSTR *pbstrName) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct INamedPropertyStoreVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            INamedPropertyStore * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            INamedPropertyStore * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            INamedPropertyStore * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetNamedValue )( 
-            INamedPropertyStore * This,
-            /* [string][in] */ __RPC__in LPCWSTR pszName,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetNamedValue )( 
-            INamedPropertyStore * This,
-            /* [string][in] */ __RPC__in LPCWSTR pszName,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetNameCount )( 
-            INamedPropertyStore * This,
-            /* [out] */ __RPC__out DWORD *pdwCount);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetNameAt )( 
-            INamedPropertyStore * This,
-            /* [in] */ DWORD iProp,
-            /* [out] */ __RPC__deref_out_opt BSTR *pbstrName);
-        
-        END_INTERFACE
-    } INamedPropertyStoreVtbl;
-
-    interface INamedPropertyStore
-    {
-        CONST_VTBL struct INamedPropertyStoreVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define INamedPropertyStore_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define INamedPropertyStore_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define INamedPropertyStore_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define INamedPropertyStore_GetNamedValue(This,pszName,ppropvar)	\
-    ( (This)->lpVtbl -> GetNamedValue(This,pszName,ppropvar) ) 
-
-#define INamedPropertyStore_SetNamedValue(This,pszName,propvar)	\
-    ( (This)->lpVtbl -> SetNamedValue(This,pszName,propvar) ) 
-
-#define INamedPropertyStore_GetNameCount(This,pdwCount)	\
-    ( (This)->lpVtbl -> GetNameCount(This,pdwCount) ) 
-
-#define INamedPropertyStore_GetNameAt(This,iProp,pbstrName)	\
-    ( (This)->lpVtbl -> GetNameAt(This,iProp,pbstrName) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __INamedPropertyStore_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_propsys_0000_0004 */
-/* [local] */ 
-
-/* [v1_enum] */ 
-enum tagGETPROPERTYSTOREFLAGS
-    {	GPS_DEFAULT	= 0,
-	GPS_HANDLERPROPERTIESONLY	= 0x1,
-	GPS_READWRITE	= 0x2,
-	GPS_TEMPORARY	= 0x4,
-	GPS_FASTPROPERTIESONLY	= 0x8,
-	GPS_OPENSLOWITEM	= 0x10,
-	GPS_DELAYCREATION	= 0x20,
-	GPS_BESTEFFORT	= 0x40,
-	GPS_MASK_VALID	= 0x7f
-    } ;
-typedef int GETPROPERTYSTOREFLAGS;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0004_v0_0_s_ifspec;
-
-#ifndef __IObjectWithPropertyKey_INTERFACE_DEFINED__
-#define __IObjectWithPropertyKey_INTERFACE_DEFINED__
-
-/* interface IObjectWithPropertyKey */
-/* [uuid][object] */ 
-
-
-EXTERN_C const IID IID_IObjectWithPropertyKey;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("fc0ca0a7-c316-4fd2-9031-3e628e6d4f23")
-    IObjectWithPropertyKey : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE SetPropertyKey( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyKey( 
-            /* [out] */ __RPC__out PROPERTYKEY *pkey) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IObjectWithPropertyKeyVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IObjectWithPropertyKey * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IObjectWithPropertyKey * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IObjectWithPropertyKey * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )( 
-            IObjectWithPropertyKey * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( 
-            IObjectWithPropertyKey * This,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey);
-        
-        END_INTERFACE
-    } IObjectWithPropertyKeyVtbl;
-
-    interface IObjectWithPropertyKey
-    {
-        CONST_VTBL struct IObjectWithPropertyKeyVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IObjectWithPropertyKey_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IObjectWithPropertyKey_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IObjectWithPropertyKey_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IObjectWithPropertyKey_SetPropertyKey(This,key)	\
-    ( (This)->lpVtbl -> SetPropertyKey(This,key) ) 
-
-#define IObjectWithPropertyKey_GetPropertyKey(This,pkey)	\
-    ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IObjectWithPropertyKey_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_propsys_0000_0005 */
-/* [local] */ 
-
-typedef /* [v1_enum] */ 
-enum tagPKA_FLAGS
-    {	PKA_SET	= 0,
-	PKA_APPEND	= ( PKA_SET + 1 ) ,
-	PKA_DELETE	= ( PKA_APPEND + 1 ) 
-    } 	PKA_FLAGS;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0005_v0_0_s_ifspec;
-
-#ifndef __IPropertyChange_INTERFACE_DEFINED__
-#define __IPropertyChange_INTERFACE_DEFINED__
-
-/* interface IPropertyChange */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyChange;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("f917bc8a-1bba-4478-a245-1bde03eb9431")
-    IPropertyChange : public IObjectWithPropertyKey
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE ApplyToPropVariant( 
-            /* [in] */ __RPC__in REFPROPVARIANT propvarIn,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarOut) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyChangeVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyChange * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyChange * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyChange * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetPropertyKey )( 
-            IPropertyChange * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( 
-            IPropertyChange * This,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey);
-        
-        HRESULT ( STDMETHODCALLTYPE *ApplyToPropVariant )( 
-            IPropertyChange * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvarIn,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarOut);
-        
-        END_INTERFACE
-    } IPropertyChangeVtbl;
-
-    interface IPropertyChange
-    {
-        CONST_VTBL struct IPropertyChangeVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyChange_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyChange_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyChange_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyChange_SetPropertyKey(This,key)	\
-    ( (This)->lpVtbl -> SetPropertyKey(This,key) ) 
-
-#define IPropertyChange_GetPropertyKey(This,pkey)	\
-    ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) 
-
-
-#define IPropertyChange_ApplyToPropVariant(This,propvarIn,ppropvarOut)	\
-    ( (This)->lpVtbl -> ApplyToPropVariant(This,propvarIn,ppropvarOut) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyChange_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyChangeArray_INTERFACE_DEFINED__
-#define __IPropertyChangeArray_INTERFACE_DEFINED__
-
-/* interface IPropertyChangeArray */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyChangeArray;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("380f5cad-1b5e-42f2-805d-637fd392d31e")
-    IPropertyChangeArray : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ __RPC__out UINT *pcOperations) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAt( 
-            /* [in] */ UINT iIndex,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE InsertAt( 
-            /* [in] */ UINT iIndex,
-            /* [in] */ __RPC__in_opt IPropertyChange *ppropChange) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Append( 
-            /* [in] */ __RPC__in_opt IPropertyChange *ppropChange) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE AppendOrReplace( 
-            /* [in] */ __RPC__in_opt IPropertyChange *ppropChange) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RemoveAt( 
-            /* [in] */ UINT iIndex) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE IsKeyInArray( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyChangeArrayVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyChangeArray * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyChangeArray * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyChangeArray * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            IPropertyChangeArray * This,
-            /* [out] */ __RPC__out UINT *pcOperations);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAt )( 
-            IPropertyChangeArray * This,
-            /* [in] */ UINT iIndex,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *InsertAt )( 
-            IPropertyChangeArray * This,
-            /* [in] */ UINT iIndex,
-            /* [in] */ __RPC__in_opt IPropertyChange *ppropChange);
-        
-        HRESULT ( STDMETHODCALLTYPE *Append )( 
-            IPropertyChangeArray * This,
-            /* [in] */ __RPC__in_opt IPropertyChange *ppropChange);
-        
-        HRESULT ( STDMETHODCALLTYPE *AppendOrReplace )( 
-            IPropertyChangeArray * This,
-            /* [in] */ __RPC__in_opt IPropertyChange *ppropChange);
-        
-        HRESULT ( STDMETHODCALLTYPE *RemoveAt )( 
-            IPropertyChangeArray * This,
-            /* [in] */ UINT iIndex);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsKeyInArray )( 
-            IPropertyChangeArray * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key);
-        
-        END_INTERFACE
-    } IPropertyChangeArrayVtbl;
-
-    interface IPropertyChangeArray
-    {
-        CONST_VTBL struct IPropertyChangeArrayVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyChangeArray_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyChangeArray_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyChangeArray_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyChangeArray_GetCount(This,pcOperations)	\
-    ( (This)->lpVtbl -> GetCount(This,pcOperations) ) 
-
-#define IPropertyChangeArray_GetAt(This,iIndex,riid,ppv)	\
-    ( (This)->lpVtbl -> GetAt(This,iIndex,riid,ppv) ) 
-
-#define IPropertyChangeArray_InsertAt(This,iIndex,ppropChange)	\
-    ( (This)->lpVtbl -> InsertAt(This,iIndex,ppropChange) ) 
-
-#define IPropertyChangeArray_Append(This,ppropChange)	\
-    ( (This)->lpVtbl -> Append(This,ppropChange) ) 
-
-#define IPropertyChangeArray_AppendOrReplace(This,ppropChange)	\
-    ( (This)->lpVtbl -> AppendOrReplace(This,ppropChange) ) 
-
-#define IPropertyChangeArray_RemoveAt(This,iIndex)	\
-    ( (This)->lpVtbl -> RemoveAt(This,iIndex) ) 
-
-#define IPropertyChangeArray_IsKeyInArray(This,key)	\
-    ( (This)->lpVtbl -> IsKeyInArray(This,key) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyChangeArray_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyStoreCapabilities_INTERFACE_DEFINED__
-#define __IPropertyStoreCapabilities_INTERFACE_DEFINED__
-
-/* interface IPropertyStoreCapabilities */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyStoreCapabilities;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("c8e2d566-186e-4d49-bf41-6909ead56acc")
-    IPropertyStoreCapabilities : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE IsPropertyWritable( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyStoreCapabilitiesVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyStoreCapabilities * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyStoreCapabilities * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyStoreCapabilities * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsPropertyWritable )( 
-            IPropertyStoreCapabilities * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key);
-        
-        END_INTERFACE
-    } IPropertyStoreCapabilitiesVtbl;
-
-    interface IPropertyStoreCapabilities
-    {
-        CONST_VTBL struct IPropertyStoreCapabilitiesVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyStoreCapabilities_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyStoreCapabilities_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyStoreCapabilities_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyStoreCapabilities_IsPropertyWritable(This,key)	\
-    ( (This)->lpVtbl -> IsPropertyWritable(This,key) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyStoreCapabilities_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyStoreCache_INTERFACE_DEFINED__
-#define __IPropertyStoreCache_INTERFACE_DEFINED__
-
-/* interface IPropertyStoreCache */
-/* [unique][object][uuid] */ 
-
-typedef /* [v1_enum] */ 
-enum _PSC_STATE
-    {	PSC_NORMAL	= 0,
-	PSC_NOTINSOURCE	= 1,
-	PSC_DIRTY	= 2,
-	PSC_READONLY	= 3
-    } 	PSC_STATE;
-
-
-EXTERN_C const IID IID_IPropertyStoreCache;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("3017056d-9a91-4e90-937d-746c72abbf4f")
-    IPropertyStoreCache : public IPropertyStore
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetState( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [out] */ __RPC__out PSC_STATE *pstate) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetValueAndState( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvar,
-            /* [out] */ __RPC__out PSC_STATE *pstate) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetState( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ PSC_STATE state) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetValueAndState( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [unique][in] */ __RPC__in_opt const PROPVARIANT *ppropvar,
-            /* [in] */ PSC_STATE state) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyStoreCacheVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyStoreCache * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyStoreCache * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyStoreCache * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            IPropertyStoreCache * This,
-            /* [out] */ __RPC__out DWORD *cProps);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAt )( 
-            IPropertyStoreCache * This,
-            /* [in] */ DWORD iProp,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetValue )( 
-            IPropertyStoreCache * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [out] */ __RPC__out PROPVARIANT *pv);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetValue )( 
-            IPropertyStoreCache * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *Commit )( 
-            IPropertyStoreCache * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetState )( 
-            IPropertyStoreCache * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [out] */ __RPC__out PSC_STATE *pstate);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetValueAndState )( 
-            IPropertyStoreCache * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvar,
-            /* [out] */ __RPC__out PSC_STATE *pstate);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetState )( 
-            IPropertyStoreCache * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ PSC_STATE state);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetValueAndState )( 
-            IPropertyStoreCache * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [unique][in] */ __RPC__in_opt const PROPVARIANT *ppropvar,
-            /* [in] */ PSC_STATE state);
-        
-        END_INTERFACE
-    } IPropertyStoreCacheVtbl;
-
-    interface IPropertyStoreCache
-    {
-        CONST_VTBL struct IPropertyStoreCacheVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyStoreCache_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyStoreCache_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyStoreCache_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyStoreCache_GetCount(This,cProps)	\
-    ( (This)->lpVtbl -> GetCount(This,cProps) ) 
-
-#define IPropertyStoreCache_GetAt(This,iProp,pkey)	\
-    ( (This)->lpVtbl -> GetAt(This,iProp,pkey) ) 
-
-#define IPropertyStoreCache_GetValue(This,key,pv)	\
-    ( (This)->lpVtbl -> GetValue(This,key,pv) ) 
-
-#define IPropertyStoreCache_SetValue(This,key,propvar)	\
-    ( (This)->lpVtbl -> SetValue(This,key,propvar) ) 
-
-#define IPropertyStoreCache_Commit(This)	\
-    ( (This)->lpVtbl -> Commit(This) ) 
-
-
-#define IPropertyStoreCache_GetState(This,key,pstate)	\
-    ( (This)->lpVtbl -> GetState(This,key,pstate) ) 
-
-#define IPropertyStoreCache_GetValueAndState(This,key,ppropvar,pstate)	\
-    ( (This)->lpVtbl -> GetValueAndState(This,key,ppropvar,pstate) ) 
-
-#define IPropertyStoreCache_SetState(This,key,state)	\
-    ( (This)->lpVtbl -> SetState(This,key,state) ) 
-
-#define IPropertyStoreCache_SetValueAndState(This,key,ppropvar,state)	\
-    ( (This)->lpVtbl -> SetValueAndState(This,key,ppropvar,state) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyStoreCache_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyEnumType_INTERFACE_DEFINED__
-#define __IPropertyEnumType_INTERFACE_DEFINED__
-
-/* interface IPropertyEnumType */
-/* [unique][object][uuid] */ 
-
-/* [v1_enum] */ 
-enum tagPROPENUMTYPE
-    {	PET_DISCRETEVALUE	= 0,
-	PET_RANGEDVALUE	= 1,
-	PET_DEFAULTVALUE	= 2,
-	PET_ENDRANGE	= 3
-    } ;
-typedef enum tagPROPENUMTYPE PROPENUMTYPE;
-
-
-EXTERN_C const IID IID_IPropertyEnumType;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("11e1fbf9-2d56-4a6b-8db3-7cd193a471f2")
-    IPropertyEnumType : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetEnumType( 
-            /* [out] */ __RPC__out PROPENUMTYPE *penumtype) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetValue( 
-            /* [out] */ __RPC__out PROPVARIANT *ppropvar) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetRangeMinValue( 
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarMin) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetRangeSetValue( 
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarSet) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetDisplayText( 
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDisplay) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyEnumTypeVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyEnumType * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyEnumType * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyEnumType * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEnumType )( 
-            IPropertyEnumType * This,
-            /* [out] */ __RPC__out PROPENUMTYPE *penumtype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetValue )( 
-            IPropertyEnumType * This,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRangeMinValue )( 
-            IPropertyEnumType * This,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarMin);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRangeSetValue )( 
-            IPropertyEnumType * This,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarSet);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDisplayText )( 
-            IPropertyEnumType * This,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszDisplay);
-        
-        END_INTERFACE
-    } IPropertyEnumTypeVtbl;
-
-    interface IPropertyEnumType
-    {
-        CONST_VTBL struct IPropertyEnumTypeVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyEnumType_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyEnumType_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyEnumType_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyEnumType_GetEnumType(This,penumtype)	\
-    ( (This)->lpVtbl -> GetEnumType(This,penumtype) ) 
-
-#define IPropertyEnumType_GetValue(This,ppropvar)	\
-    ( (This)->lpVtbl -> GetValue(This,ppropvar) ) 
-
-#define IPropertyEnumType_GetRangeMinValue(This,ppropvarMin)	\
-    ( (This)->lpVtbl -> GetRangeMinValue(This,ppropvarMin) ) 
-
-#define IPropertyEnumType_GetRangeSetValue(This,ppropvarSet)	\
-    ( (This)->lpVtbl -> GetRangeSetValue(This,ppropvarSet) ) 
-
-#define IPropertyEnumType_GetDisplayText(This,ppszDisplay)	\
-    ( (This)->lpVtbl -> GetDisplayText(This,ppszDisplay) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyEnumType_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyEnumTypeList_INTERFACE_DEFINED__
-#define __IPropertyEnumTypeList_INTERFACE_DEFINED__
-
-/* interface IPropertyEnumTypeList */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyEnumTypeList;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("a99400f4-3d84-4557-94ba-1242fb2cc9a6")
-    IPropertyEnumTypeList : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ __RPC__out UINT *pctypes) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAt( 
-            /* [in] */ UINT itype,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetConditionAt( 
-            /* [in] */ UINT nIndex,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE FindMatchingIndex( 
-            /* [in] */ __RPC__in REFPROPVARIANT propvarCmp,
-            /* [out] */ __RPC__out UINT *pnIndex) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyEnumTypeListVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyEnumTypeList * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyEnumTypeList * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyEnumTypeList * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            IPropertyEnumTypeList * This,
-            /* [out] */ __RPC__out UINT *pctypes);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAt )( 
-            IPropertyEnumTypeList * This,
-            /* [in] */ UINT itype,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetConditionAt )( 
-            IPropertyEnumTypeList * This,
-            /* [in] */ UINT nIndex,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *FindMatchingIndex )( 
-            IPropertyEnumTypeList * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvarCmp,
-            /* [out] */ __RPC__out UINT *pnIndex);
-        
-        END_INTERFACE
-    } IPropertyEnumTypeListVtbl;
-
-    interface IPropertyEnumTypeList
-    {
-        CONST_VTBL struct IPropertyEnumTypeListVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyEnumTypeList_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyEnumTypeList_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyEnumTypeList_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyEnumTypeList_GetCount(This,pctypes)	\
-    ( (This)->lpVtbl -> GetCount(This,pctypes) ) 
-
-#define IPropertyEnumTypeList_GetAt(This,itype,riid,ppv)	\
-    ( (This)->lpVtbl -> GetAt(This,itype,riid,ppv) ) 
-
-#define IPropertyEnumTypeList_GetConditionAt(This,nIndex,riid,ppv)	\
-    ( (This)->lpVtbl -> GetConditionAt(This,nIndex,riid,ppv) ) 
-
-#define IPropertyEnumTypeList_FindMatchingIndex(This,propvarCmp,pnIndex)	\
-    ( (This)->lpVtbl -> FindMatchingIndex(This,propvarCmp,pnIndex) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyEnumTypeList_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyDescription_INTERFACE_DEFINED__
-#define __IPropertyDescription_INTERFACE_DEFINED__
-
-/* interface IPropertyDescription */
-/* [unique][object][uuid] */ 
-
-/* [v1_enum] */ 
-enum tagPROPDESC_TYPE_FLAGS
-    {	PDTF_DEFAULT	= 0,
-	PDTF_MULTIPLEVALUES	= 0x1,
-	PDTF_ISINNATE	= 0x2,
-	PDTF_ISGROUP	= 0x4,
-	PDTF_CANGROUPBY	= 0x8,
-	PDTF_CANSTACKBY	= 0x10,
-	PDTF_ISTREEPROPERTY	= 0x20,
-	PDTF_INCLUDEINFULLTEXTQUERY	= 0x40,
-	PDTF_ISVIEWABLE	= 0x80,
-	PDTF_ISQUERYABLE	= 0x100,
-	PDTF_ISSYSTEMPROPERTY	= 0x80000000,
-	PDTF_MASK_ALL	= 0x800001ff
-    } ;
-typedef int PROPDESC_TYPE_FLAGS;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_VIEW_FLAGS
-    {	PDVF_DEFAULT	= 0,
-	PDVF_CENTERALIGN	= 0x1,
-	PDVF_RIGHTALIGN	= 0x2,
-	PDVF_BEGINNEWGROUP	= 0x4,
-	PDVF_FILLAREA	= 0x8,
-	PDVF_SORTDESCENDING	= 0x10,
-	PDVF_SHOWONLYIFPRESENT	= 0x20,
-	PDVF_SHOWBYDEFAULT	= 0x40,
-	PDVF_SHOWINPRIMARYLIST	= 0x80,
-	PDVF_SHOWINSECONDARYLIST	= 0x100,
-	PDVF_HIDELABEL	= 0x200,
-	PDVF_HIDDEN	= 0x800,
-	PDVF_CANWRAP	= 0x1000,
-	PDVF_MASK_ALL	= 0x1bff
-    } ;
-typedef int PROPDESC_VIEW_FLAGS;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_DISPLAYTYPE
-    {	PDDT_STRING	= 0,
-	PDDT_NUMBER	= 1,
-	PDDT_BOOLEAN	= 2,
-	PDDT_DATETIME	= 3,
-	PDDT_ENUMERATED	= 4
-    } ;
-typedef enum tagPROPDESC_DISPLAYTYPE PROPDESC_DISPLAYTYPE;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_GROUPING_RANGE
-    {	PDGR_DISCRETE	= 0,
-	PDGR_ALPHANUMERIC	= 1,
-	PDGR_SIZE	= 2,
-	PDGR_DYNAMIC	= 3,
-	PDGR_DATE	= 4,
-	PDGR_PERCENT	= 5,
-	PDGR_ENUMERATED	= 6
-    } ;
-typedef enum tagPROPDESC_GROUPING_RANGE PROPDESC_GROUPING_RANGE;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_FORMAT_FLAGS
-    {	PDFF_DEFAULT	= 0,
-	PDFF_PREFIXNAME	= 0x1,
-	PDFF_FILENAME	= 0x2,
-	PDFF_ALWAYSKB	= 0x4,
-	PDFF_RESERVED_RIGHTTOLEFT	= 0x8,
-	PDFF_SHORTTIME	= 0x10,
-	PDFF_LONGTIME	= 0x20,
-	PDFF_HIDETIME	= 0x40,
-	PDFF_SHORTDATE	= 0x80,
-	PDFF_LONGDATE	= 0x100,
-	PDFF_HIDEDATE	= 0x200,
-	PDFF_RELATIVEDATE	= 0x400,
-	PDFF_USEEDITINVITATION	= 0x800,
-	PDFF_READONLY	= 0x1000,
-	PDFF_NOAUTOREADINGORDER	= 0x2000
-    } ;
-typedef int PROPDESC_FORMAT_FLAGS;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_SORTDESCRIPTION
-    {	PDSD_GENERAL	= 0,
-	PDSD_A_Z	= 1,
-	PDSD_LOWEST_HIGHEST	= 2,
-	PDSD_SMALLEST_BIGGEST	= 3,
-	PDSD_OLDEST_NEWEST	= 4
-    } ;
-typedef enum tagPROPDESC_SORTDESCRIPTION PROPDESC_SORTDESCRIPTION;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_RELATIVEDESCRIPTION_TYPE
-    {	PDRDT_GENERAL	= 0,
-	PDRDT_DATE	= 1,
-	PDRDT_SIZE	= 2,
-	PDRDT_COUNT	= 3,
-	PDRDT_REVISION	= 4,
-	PDRDT_LENGTH	= 5,
-	PDRDT_DURATION	= 6,
-	PDRDT_SPEED	= 7,
-	PDRDT_RATE	= 8,
-	PDRDT_RATING	= 9,
-	PDRDT_PRIORITY	= 10
-    } ;
-typedef enum tagPROPDESC_RELATIVEDESCRIPTION_TYPE PROPDESC_RELATIVEDESCRIPTION_TYPE;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_AGGREGATION_TYPE
-    {	PDAT_DEFAULT	= 0,
-	PDAT_FIRST	= 1,
-	PDAT_SUM	= 2,
-	PDAT_AVERAGE	= 3,
-	PDAT_DATERANGE	= 4,
-	PDAT_UNION	= 5,
-	PDAT_MAX	= 6,
-	PDAT_MIN	= 7
-    } ;
-typedef enum tagPROPDESC_AGGREGATION_TYPE PROPDESC_AGGREGATION_TYPE;
-
-/* [v1_enum] */ 
-enum tagPROPDESC_CONDITION_TYPE
-    {	PDCOT_NONE	= 0,
-	PDCOT_STRING	= 1,
-	PDCOT_SIZE	= 2,
-	PDCOT_DATETIME	= 3,
-	PDCOT_BOOLEAN	= 4,
-	PDCOT_NUMBER	= 5
-    } ;
-typedef enum tagPROPDESC_CONDITION_TYPE PROPDESC_CONDITION_TYPE;
-
-
-EXTERN_C const IID IID_IPropertyDescription;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("6f79d558-3e96-4549-a1d1-7d75d2288814")
-    IPropertyDescription : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyKey( 
-            /* [out] */ __RPC__out PROPERTYKEY *pkey) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetCanonicalName( 
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyType( 
-            /* [out] */ __RPC__out VARTYPE *pvartype) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetDisplayName( 
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetEditInvitation( 
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetTypeFlags( 
-            /* [in] */ PROPDESC_TYPE_FLAGS mask,
-            /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetViewFlags( 
-            /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnWidth( 
-            /* [out] */ __RPC__out UINT *pcxChars) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetDisplayType( 
-            /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetColumnState( 
-            /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetGroupingRange( 
-            /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetRelativeDescriptionType( 
-            /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetRelativeDescription( 
-            /* [in] */ __RPC__in REFPROPVARIANT propvar1,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar2,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetSortDescription( 
-            /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetSortDescriptionLabel( 
-            /* [in] */ BOOL fDescending,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAggregationType( 
-            /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetConditionType( 
-            /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype,
-            /* [out] */ __RPC__out CONDITION_OPERATION *popDefault) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetEnumTypeList( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE CoerceToCanonicalValue( 
-            /* [out][in] */ PROPVARIANT *ppropvar) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE FormatForDisplay( 
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE IsValueCanonical( 
-            /* [in] */ __RPC__in REFPROPVARIANT propvar) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyDescriptionVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyDescription * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyDescription * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyDescription * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )( 
-            IPropertyDescription * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyType )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out VARTYPE *pvartype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( 
-            IPropertyDescription * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEditInvitation )( 
-            IPropertyDescription * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetTypeFlags )( 
-            IPropertyDescription * This,
-            /* [in] */ PROPDESC_TYPE_FLAGS mask,
-            /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetViewFlags )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDefaultColumnWidth )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out UINT *pcxChars);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDisplayType )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetColumnState )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetGroupingRange )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRelativeDescriptionType )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRelativeDescription )( 
-            IPropertyDescription * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar1,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar2,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSortDescription )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSortDescriptionLabel )( 
-            IPropertyDescription * This,
-            /* [in] */ BOOL fDescending,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAggregationType )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetConditionType )( 
-            IPropertyDescription * This,
-            /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype,
-            /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( 
-            IPropertyDescription * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( 
-            IPropertyDescription * This,
-            /* [out][in] */ PROPVARIANT *ppropvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( 
-            IPropertyDescription * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( 
-            IPropertyDescription * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar);
-        
-        END_INTERFACE
-    } IPropertyDescriptionVtbl;
-
-    interface IPropertyDescription
-    {
-        CONST_VTBL struct IPropertyDescriptionVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyDescription_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyDescription_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyDescription_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyDescription_GetPropertyKey(This,pkey)	\
-    ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) 
-
-#define IPropertyDescription_GetCanonicalName(This,ppszName)	\
-    ( (This)->lpVtbl -> GetCanonicalName(This,ppszName) ) 
-
-#define IPropertyDescription_GetPropertyType(This,pvartype)	\
-    ( (This)->lpVtbl -> GetPropertyType(This,pvartype) ) 
-
-#define IPropertyDescription_GetDisplayName(This,ppszName)	\
-    ( (This)->lpVtbl -> GetDisplayName(This,ppszName) ) 
-
-#define IPropertyDescription_GetEditInvitation(This,ppszInvite)	\
-    ( (This)->lpVtbl -> GetEditInvitation(This,ppszInvite) ) 
-
-#define IPropertyDescription_GetTypeFlags(This,mask,ppdtFlags)	\
-    ( (This)->lpVtbl -> GetTypeFlags(This,mask,ppdtFlags) ) 
-
-#define IPropertyDescription_GetViewFlags(This,ppdvFlags)	\
-    ( (This)->lpVtbl -> GetViewFlags(This,ppdvFlags) ) 
-
-#define IPropertyDescription_GetDefaultColumnWidth(This,pcxChars)	\
-    ( (This)->lpVtbl -> GetDefaultColumnWidth(This,pcxChars) ) 
-
-#define IPropertyDescription_GetDisplayType(This,pdisplaytype)	\
-    ( (This)->lpVtbl -> GetDisplayType(This,pdisplaytype) ) 
-
-#define IPropertyDescription_GetColumnState(This,pcsFlags)	\
-    ( (This)->lpVtbl -> GetColumnState(This,pcsFlags) ) 
-
-#define IPropertyDescription_GetGroupingRange(This,pgr)	\
-    ( (This)->lpVtbl -> GetGroupingRange(This,pgr) ) 
-
-#define IPropertyDescription_GetRelativeDescriptionType(This,prdt)	\
-    ( (This)->lpVtbl -> GetRelativeDescriptionType(This,prdt) ) 
-
-#define IPropertyDescription_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)	\
-    ( (This)->lpVtbl -> GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) ) 
-
-#define IPropertyDescription_GetSortDescription(This,psd)	\
-    ( (This)->lpVtbl -> GetSortDescription(This,psd) ) 
-
-#define IPropertyDescription_GetSortDescriptionLabel(This,fDescending,ppszDescription)	\
-    ( (This)->lpVtbl -> GetSortDescriptionLabel(This,fDescending,ppszDescription) ) 
-
-#define IPropertyDescription_GetAggregationType(This,paggtype)	\
-    ( (This)->lpVtbl -> GetAggregationType(This,paggtype) ) 
-
-#define IPropertyDescription_GetConditionType(This,pcontype,popDefault)	\
-    ( (This)->lpVtbl -> GetConditionType(This,pcontype,popDefault) ) 
-
-#define IPropertyDescription_GetEnumTypeList(This,riid,ppv)	\
-    ( (This)->lpVtbl -> GetEnumTypeList(This,riid,ppv) ) 
-
-#define IPropertyDescription_CoerceToCanonicalValue(This,ppropvar)	\
-    ( (This)->lpVtbl -> CoerceToCanonicalValue(This,ppropvar) ) 
-
-#define IPropertyDescription_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)	\
-    ( (This)->lpVtbl -> FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) ) 
-
-#define IPropertyDescription_IsValueCanonical(This,propvar)	\
-    ( (This)->lpVtbl -> IsValueCanonical(This,propvar) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-/* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_RemoteCoerceToCanonicalValue_Proxy( 
-    IPropertyDescription * This,
-    /* [in] */ __RPC__in REFPROPVARIANT propvar,
-    /* [out] */ __RPC__out PROPVARIANT *ppropvar);
-
-
-void __RPC_STUB IPropertyDescription_RemoteCoerceToCanonicalValue_Stub(
-    IRpcStubBuffer *This,
-    IRpcChannelBuffer *_pRpcChannelBuffer,
-    PRPC_MESSAGE _pRpcMessage,
-    DWORD *_pdwStubPhase);
-
-
-
-#endif 	/* __IPropertyDescription_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__
-#define __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__
-
-/* interface IPropertyDescriptionAliasInfo */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyDescriptionAliasInfo;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("f67104fc-2af9-46fd-b32d-243c1404f3d1")
-    IPropertyDescriptionAliasInfo : public IPropertyDescription
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetSortByAlias( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAdditionalSortByAliases( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyDescriptionAliasInfoVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyDescriptionAliasInfo * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyDescriptionAliasInfo * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyType )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out VARTYPE *pvartype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEditInvitation )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetTypeFlags )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ PROPDESC_TYPE_FLAGS mask,
-            /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetViewFlags )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDefaultColumnWidth )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out UINT *pcxChars);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDisplayType )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetColumnState )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetGroupingRange )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRelativeDescriptionType )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRelativeDescription )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar1,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar2,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSortDescription )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSortDescriptionLabel )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ BOOL fDescending,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAggregationType )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetConditionType )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype,
-            /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [out][in] */ PROPVARIANT *ppropvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSortByAlias )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAdditionalSortByAliases )( 
-            IPropertyDescriptionAliasInfo * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        END_INTERFACE
-    } IPropertyDescriptionAliasInfoVtbl;
-
-    interface IPropertyDescriptionAliasInfo
-    {
-        CONST_VTBL struct IPropertyDescriptionAliasInfoVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyDescriptionAliasInfo_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyDescriptionAliasInfo_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyDescriptionAliasInfo_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyDescriptionAliasInfo_GetPropertyKey(This,pkey)	\
-    ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) 
-
-#define IPropertyDescriptionAliasInfo_GetCanonicalName(This,ppszName)	\
-    ( (This)->lpVtbl -> GetCanonicalName(This,ppszName) ) 
-
-#define IPropertyDescriptionAliasInfo_GetPropertyType(This,pvartype)	\
-    ( (This)->lpVtbl -> GetPropertyType(This,pvartype) ) 
-
-#define IPropertyDescriptionAliasInfo_GetDisplayName(This,ppszName)	\
-    ( (This)->lpVtbl -> GetDisplayName(This,ppszName) ) 
-
-#define IPropertyDescriptionAliasInfo_GetEditInvitation(This,ppszInvite)	\
-    ( (This)->lpVtbl -> GetEditInvitation(This,ppszInvite) ) 
-
-#define IPropertyDescriptionAliasInfo_GetTypeFlags(This,mask,ppdtFlags)	\
-    ( (This)->lpVtbl -> GetTypeFlags(This,mask,ppdtFlags) ) 
-
-#define IPropertyDescriptionAliasInfo_GetViewFlags(This,ppdvFlags)	\
-    ( (This)->lpVtbl -> GetViewFlags(This,ppdvFlags) ) 
-
-#define IPropertyDescriptionAliasInfo_GetDefaultColumnWidth(This,pcxChars)	\
-    ( (This)->lpVtbl -> GetDefaultColumnWidth(This,pcxChars) ) 
-
-#define IPropertyDescriptionAliasInfo_GetDisplayType(This,pdisplaytype)	\
-    ( (This)->lpVtbl -> GetDisplayType(This,pdisplaytype) ) 
-
-#define IPropertyDescriptionAliasInfo_GetColumnState(This,pcsFlags)	\
-    ( (This)->lpVtbl -> GetColumnState(This,pcsFlags) ) 
-
-#define IPropertyDescriptionAliasInfo_GetGroupingRange(This,pgr)	\
-    ( (This)->lpVtbl -> GetGroupingRange(This,pgr) ) 
-
-#define IPropertyDescriptionAliasInfo_GetRelativeDescriptionType(This,prdt)	\
-    ( (This)->lpVtbl -> GetRelativeDescriptionType(This,prdt) ) 
-
-#define IPropertyDescriptionAliasInfo_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)	\
-    ( (This)->lpVtbl -> GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) ) 
-
-#define IPropertyDescriptionAliasInfo_GetSortDescription(This,psd)	\
-    ( (This)->lpVtbl -> GetSortDescription(This,psd) ) 
-
-#define IPropertyDescriptionAliasInfo_GetSortDescriptionLabel(This,fDescending,ppszDescription)	\
-    ( (This)->lpVtbl -> GetSortDescriptionLabel(This,fDescending,ppszDescription) ) 
-
-#define IPropertyDescriptionAliasInfo_GetAggregationType(This,paggtype)	\
-    ( (This)->lpVtbl -> GetAggregationType(This,paggtype) ) 
-
-#define IPropertyDescriptionAliasInfo_GetConditionType(This,pcontype,popDefault)	\
-    ( (This)->lpVtbl -> GetConditionType(This,pcontype,popDefault) ) 
-
-#define IPropertyDescriptionAliasInfo_GetEnumTypeList(This,riid,ppv)	\
-    ( (This)->lpVtbl -> GetEnumTypeList(This,riid,ppv) ) 
-
-#define IPropertyDescriptionAliasInfo_CoerceToCanonicalValue(This,ppropvar)	\
-    ( (This)->lpVtbl -> CoerceToCanonicalValue(This,ppropvar) ) 
-
-#define IPropertyDescriptionAliasInfo_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)	\
-    ( (This)->lpVtbl -> FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) ) 
-
-#define IPropertyDescriptionAliasInfo_IsValueCanonical(This,propvar)	\
-    ( (This)->lpVtbl -> IsValueCanonical(This,propvar) ) 
-
-
-#define IPropertyDescriptionAliasInfo_GetSortByAlias(This,riid,ppv)	\
-    ( (This)->lpVtbl -> GetSortByAlias(This,riid,ppv) ) 
-
-#define IPropertyDescriptionAliasInfo_GetAdditionalSortByAliases(This,riid,ppv)	\
-    ( (This)->lpVtbl -> GetAdditionalSortByAliases(This,riid,ppv) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyDescriptionAliasInfo_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__
-#define __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__
-
-/* interface IPropertyDescriptionSearchInfo */
-/* [unique][object][uuid] */ 
-
-/* [v1_enum] */ 
-enum tagPROPDESC_SEARCHINFO_FLAGS
-    {	PDSIF_DEFAULT	= 0,
-	PDSIF_ININVERTEDINDEX	= 0x1,
-	PDSIF_ISCOLUMN	= 0x2,
-	PDSIF_ISCOLUMNSPARSE	= 0x4
-    } ;
-typedef int PROPDESC_SEARCHINFO_FLAGS;
-
-typedef /* [v1_enum] */ 
-enum tagPROPDESC_COLUMNINDEX_TYPE
-    {	PDCIT_NONE	= 0,
-	PDCIT_ONDISK	= 1,
-	PDCIT_INMEMORY	= 2
-    } 	PROPDESC_COLUMNINDEX_TYPE;
-
-
-EXTERN_C const IID IID_IPropertyDescriptionSearchInfo;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("078f91bd-29a2-440f-924e-46a291524520")
-    IPropertyDescriptionSearchInfo : public IPropertyDescription
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetSearchInfoFlags( 
-            /* [out] */ __RPC__out PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetColumnIndexType( 
-            /* [out] */ __RPC__out PROPDESC_COLUMNINDEX_TYPE *ppdciType) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetProjectionString( 
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszProjection) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetMaxSize( 
-            /* [out] */ __RPC__out UINT *pcbMaxSize) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyDescriptionSearchInfoVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyDescriptionSearchInfo * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyDescriptionSearchInfo * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyKey )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPERTYKEY *pkey);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCanonicalName )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyType )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out VARTYPE *pvartype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEditInvitation )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszInvite);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetTypeFlags )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [in] */ PROPDESC_TYPE_FLAGS mask,
-            /* [out] */ __RPC__out PROPDESC_TYPE_FLAGS *ppdtFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetViewFlags )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_VIEW_FLAGS *ppdvFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDefaultColumnWidth )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out UINT *pcxChars);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDisplayType )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_DISPLAYTYPE *pdisplaytype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetColumnState )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out SHCOLSTATEF *pcsFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetGroupingRange )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_GROUPING_RANGE *pgr);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRelativeDescriptionType )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_RELATIVEDESCRIPTION_TYPE *prdt);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRelativeDescription )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar1,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar2,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc1,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDesc2);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSortDescription )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_SORTDESCRIPTION *psd);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSortDescriptionLabel )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [in] */ BOOL fDescending,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDescription);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAggregationType )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_AGGREGATION_TYPE *paggtype);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetConditionType )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_CONDITION_TYPE *pcontype,
-            /* [out] */ __RPC__out CONDITION_OPERATION *popDefault);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEnumTypeList )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *CoerceToCanonicalValue )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out][in] */ PROPVARIANT *ppropvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdfFlags,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsValueCanonical )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSearchInfoFlags )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_SEARCHINFO_FLAGS *ppdsiFlags);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetColumnIndexType )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out PROPDESC_COLUMNINDEX_TYPE *ppdciType);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetProjectionString )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszProjection);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetMaxSize )( 
-            IPropertyDescriptionSearchInfo * This,
-            /* [out] */ __RPC__out UINT *pcbMaxSize);
-        
-        END_INTERFACE
-    } IPropertyDescriptionSearchInfoVtbl;
-
-    interface IPropertyDescriptionSearchInfo
-    {
-        CONST_VTBL struct IPropertyDescriptionSearchInfoVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyDescriptionSearchInfo_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyDescriptionSearchInfo_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyDescriptionSearchInfo_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyDescriptionSearchInfo_GetPropertyKey(This,pkey)	\
-    ( (This)->lpVtbl -> GetPropertyKey(This,pkey) ) 
-
-#define IPropertyDescriptionSearchInfo_GetCanonicalName(This,ppszName)	\
-    ( (This)->lpVtbl -> GetCanonicalName(This,ppszName) ) 
-
-#define IPropertyDescriptionSearchInfo_GetPropertyType(This,pvartype)	\
-    ( (This)->lpVtbl -> GetPropertyType(This,pvartype) ) 
-
-#define IPropertyDescriptionSearchInfo_GetDisplayName(This,ppszName)	\
-    ( (This)->lpVtbl -> GetDisplayName(This,ppszName) ) 
-
-#define IPropertyDescriptionSearchInfo_GetEditInvitation(This,ppszInvite)	\
-    ( (This)->lpVtbl -> GetEditInvitation(This,ppszInvite) ) 
-
-#define IPropertyDescriptionSearchInfo_GetTypeFlags(This,mask,ppdtFlags)	\
-    ( (This)->lpVtbl -> GetTypeFlags(This,mask,ppdtFlags) ) 
-
-#define IPropertyDescriptionSearchInfo_GetViewFlags(This,ppdvFlags)	\
-    ( (This)->lpVtbl -> GetViewFlags(This,ppdvFlags) ) 
-
-#define IPropertyDescriptionSearchInfo_GetDefaultColumnWidth(This,pcxChars)	\
-    ( (This)->lpVtbl -> GetDefaultColumnWidth(This,pcxChars) ) 
-
-#define IPropertyDescriptionSearchInfo_GetDisplayType(This,pdisplaytype)	\
-    ( (This)->lpVtbl -> GetDisplayType(This,pdisplaytype) ) 
-
-#define IPropertyDescriptionSearchInfo_GetColumnState(This,pcsFlags)	\
-    ( (This)->lpVtbl -> GetColumnState(This,pcsFlags) ) 
-
-#define IPropertyDescriptionSearchInfo_GetGroupingRange(This,pgr)	\
-    ( (This)->lpVtbl -> GetGroupingRange(This,pgr) ) 
-
-#define IPropertyDescriptionSearchInfo_GetRelativeDescriptionType(This,prdt)	\
-    ( (This)->lpVtbl -> GetRelativeDescriptionType(This,prdt) ) 
-
-#define IPropertyDescriptionSearchInfo_GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2)	\
-    ( (This)->lpVtbl -> GetRelativeDescription(This,propvar1,propvar2,ppszDesc1,ppszDesc2) ) 
-
-#define IPropertyDescriptionSearchInfo_GetSortDescription(This,psd)	\
-    ( (This)->lpVtbl -> GetSortDescription(This,psd) ) 
-
-#define IPropertyDescriptionSearchInfo_GetSortDescriptionLabel(This,fDescending,ppszDescription)	\
-    ( (This)->lpVtbl -> GetSortDescriptionLabel(This,fDescending,ppszDescription) ) 
-
-#define IPropertyDescriptionSearchInfo_GetAggregationType(This,paggtype)	\
-    ( (This)->lpVtbl -> GetAggregationType(This,paggtype) ) 
-
-#define IPropertyDescriptionSearchInfo_GetConditionType(This,pcontype,popDefault)	\
-    ( (This)->lpVtbl -> GetConditionType(This,pcontype,popDefault) ) 
-
-#define IPropertyDescriptionSearchInfo_GetEnumTypeList(This,riid,ppv)	\
-    ( (This)->lpVtbl -> GetEnumTypeList(This,riid,ppv) ) 
-
-#define IPropertyDescriptionSearchInfo_CoerceToCanonicalValue(This,ppropvar)	\
-    ( (This)->lpVtbl -> CoerceToCanonicalValue(This,ppropvar) ) 
-
-#define IPropertyDescriptionSearchInfo_FormatForDisplay(This,propvar,pdfFlags,ppszDisplay)	\
-    ( (This)->lpVtbl -> FormatForDisplay(This,propvar,pdfFlags,ppszDisplay) ) 
-
-#define IPropertyDescriptionSearchInfo_IsValueCanonical(This,propvar)	\
-    ( (This)->lpVtbl -> IsValueCanonical(This,propvar) ) 
-
-
-#define IPropertyDescriptionSearchInfo_GetSearchInfoFlags(This,ppdsiFlags)	\
-    ( (This)->lpVtbl -> GetSearchInfoFlags(This,ppdsiFlags) ) 
-
-#define IPropertyDescriptionSearchInfo_GetColumnIndexType(This,ppdciType)	\
-    ( (This)->lpVtbl -> GetColumnIndexType(This,ppdciType) ) 
-
-#define IPropertyDescriptionSearchInfo_GetProjectionString(This,ppszProjection)	\
-    ( (This)->lpVtbl -> GetProjectionString(This,ppszProjection) ) 
-
-#define IPropertyDescriptionSearchInfo_GetMaxSize(This,pcbMaxSize)	\
-    ( (This)->lpVtbl -> GetMaxSize(This,pcbMaxSize) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyDescriptionSearchInfo_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_propsys_0000_0014 */
-/* [local] */ 
-
-/* [v1_enum] */ 
-enum tagPROPDESC_ENUMFILTER
-    {	PDEF_ALL	= 0,
-	PDEF_SYSTEM	= 1,
-	PDEF_NONSYSTEM	= 2,
-	PDEF_VIEWABLE	= 3,
-	PDEF_QUERYABLE	= 4,
-	PDEF_INFULLTEXTQUERY	= 5,
-	PDEF_COLUMN	= 6
-    } ;
-typedef enum tagPROPDESC_ENUMFILTER PROPDESC_ENUMFILTER;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0014_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0014_v0_0_s_ifspec;
-
-#ifndef __IPropertySystem_INTERFACE_DEFINED__
-#define __IPropertySystem_INTERFACE_DEFINED__
-
-/* interface IPropertySystem */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertySystem;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("ca724e8a-c3e6-442b-88a4-6fb0db8035a3")
-    IPropertySystem : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyDescription( 
-            /* [in] */ __RPC__in REFPROPERTYKEY propkey,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionByName( 
-            /* [string][in] */ __RPC__in LPCWSTR pszCanonicalName,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionListFromString( 
-            /* [string][in] */ __RPC__in LPCWSTR pszPropList,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE EnumeratePropertyDescriptions( 
-            /* [in] */ PROPDESC_ENUMFILTER filterOn,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE FormatForDisplay( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdff,
-            /* [size_is][string][out] */ __RPC__out_ecount_full_string(cchText) LPWSTR pszText,
-            /* [in] */ DWORD cchText) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE FormatForDisplayAlloc( 
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdff,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RegisterPropertySchema( 
-            /* [string][in] */ __RPC__in LPCWSTR pszPath) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE UnregisterPropertySchema( 
-            /* [string][in] */ __RPC__in LPCWSTR pszPath) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RefreshPropertySchema( void) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertySystemVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertySystem * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertySystem * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertySystem * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyDescription )( 
-            IPropertySystem * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY propkey,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyDescriptionByName )( 
-            IPropertySystem * This,
-            /* [string][in] */ __RPC__in LPCWSTR pszCanonicalName,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyDescriptionListFromString )( 
-            IPropertySystem * This,
-            /* [string][in] */ __RPC__in LPCWSTR pszPropList,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *EnumeratePropertyDescriptions )( 
-            IPropertySystem * This,
-            /* [in] */ PROPDESC_ENUMFILTER filterOn,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *FormatForDisplay )( 
-            IPropertySystem * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdff,
-            /* [size_is][string][out] */ __RPC__out_ecount_full_string(cchText) LPWSTR pszText,
-            /* [in] */ DWORD cchText);
-        
-        HRESULT ( STDMETHODCALLTYPE *FormatForDisplayAlloc )( 
-            IPropertySystem * This,
-            /* [in] */ __RPC__in REFPROPERTYKEY key,
-            /* [in] */ __RPC__in REFPROPVARIANT propvar,
-            /* [in] */ PROPDESC_FORMAT_FLAGS pdff,
-            /* [string][out] */ __RPC__deref_out_opt_string LPWSTR *ppszDisplay);
-        
-        HRESULT ( STDMETHODCALLTYPE *RegisterPropertySchema )( 
-            IPropertySystem * This,
-            /* [string][in] */ __RPC__in LPCWSTR pszPath);
-        
-        HRESULT ( STDMETHODCALLTYPE *UnregisterPropertySchema )( 
-            IPropertySystem * This,
-            /* [string][in] */ __RPC__in LPCWSTR pszPath);
-        
-        HRESULT ( STDMETHODCALLTYPE *RefreshPropertySchema )( 
-            IPropertySystem * This);
-        
-        END_INTERFACE
-    } IPropertySystemVtbl;
-
-    interface IPropertySystem
-    {
-        CONST_VTBL struct IPropertySystemVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertySystem_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertySystem_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertySystem_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertySystem_GetPropertyDescription(This,propkey,riid,ppv)	\
-    ( (This)->lpVtbl -> GetPropertyDescription(This,propkey,riid,ppv) ) 
-
-#define IPropertySystem_GetPropertyDescriptionByName(This,pszCanonicalName,riid,ppv)	\
-    ( (This)->lpVtbl -> GetPropertyDescriptionByName(This,pszCanonicalName,riid,ppv) ) 
-
-#define IPropertySystem_GetPropertyDescriptionListFromString(This,pszPropList,riid,ppv)	\
-    ( (This)->lpVtbl -> GetPropertyDescriptionListFromString(This,pszPropList,riid,ppv) ) 
-
-#define IPropertySystem_EnumeratePropertyDescriptions(This,filterOn,riid,ppv)	\
-    ( (This)->lpVtbl -> EnumeratePropertyDescriptions(This,filterOn,riid,ppv) ) 
-
-#define IPropertySystem_FormatForDisplay(This,key,propvar,pdff,pszText,cchText)	\
-    ( (This)->lpVtbl -> FormatForDisplay(This,key,propvar,pdff,pszText,cchText) ) 
-
-#define IPropertySystem_FormatForDisplayAlloc(This,key,propvar,pdff,ppszDisplay)	\
-    ( (This)->lpVtbl -> FormatForDisplayAlloc(This,key,propvar,pdff,ppszDisplay) ) 
-
-#define IPropertySystem_RegisterPropertySchema(This,pszPath)	\
-    ( (This)->lpVtbl -> RegisterPropertySchema(This,pszPath) ) 
-
-#define IPropertySystem_UnregisterPropertySchema(This,pszPath)	\
-    ( (This)->lpVtbl -> UnregisterPropertySchema(This,pszPath) ) 
-
-#define IPropertySystem_RefreshPropertySchema(This)	\
-    ( (This)->lpVtbl -> RefreshPropertySchema(This) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertySystem_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyDescriptionList_INTERFACE_DEFINED__
-#define __IPropertyDescriptionList_INTERFACE_DEFINED__
-
-/* interface IPropertyDescriptionList */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyDescriptionList;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("1f9fc1d0-c39b-4b26-817f-011967d3440e")
-    IPropertyDescriptionList : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ __RPC__out UINT *pcElem) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetAt( 
-            /* [in] */ UINT iElem,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyDescriptionListVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyDescriptionList * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyDescriptionList * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyDescriptionList * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            IPropertyDescriptionList * This,
-            /* [out] */ __RPC__out UINT *pcElem);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAt )( 
-            IPropertyDescriptionList * This,
-            /* [in] */ UINT iElem,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        END_INTERFACE
-    } IPropertyDescriptionListVtbl;
-
-    interface IPropertyDescriptionList
-    {
-        CONST_VTBL struct IPropertyDescriptionListVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyDescriptionList_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyDescriptionList_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyDescriptionList_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyDescriptionList_GetCount(This,pcElem)	\
-    ( (This)->lpVtbl -> GetCount(This,pcElem) ) 
-
-#define IPropertyDescriptionList_GetAt(This,iElem,riid,ppv)	\
-    ( (This)->lpVtbl -> GetAt(This,iElem,riid,ppv) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyDescriptionList_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertyStoreFactory_INTERFACE_DEFINED__
-#define __IPropertyStoreFactory_INTERFACE_DEFINED__
-
-/* interface IPropertyStoreFactory */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertyStoreFactory;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("bc110b6d-57e8-4148-a9c6-91015ab2f3a5")
-    IPropertyStoreFactory : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyStore( 
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [unique][in] */ __RPC__in_opt IUnknown *pUnkFactory,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreForKeys( 
-            /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *rgKeys,
-            /* [in] */ UINT cKeys,
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertyStoreFactoryVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertyStoreFactory * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertyStoreFactory * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertyStoreFactory * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )( 
-            IPropertyStoreFactory * This,
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [unique][in] */ __RPC__in_opt IUnknown *pUnkFactory,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyStoreForKeys )( 
-            IPropertyStoreFactory * This,
-            /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *rgKeys,
-            /* [in] */ UINT cKeys,
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        END_INTERFACE
-    } IPropertyStoreFactoryVtbl;
-
-    interface IPropertyStoreFactory
-    {
-        CONST_VTBL struct IPropertyStoreFactoryVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertyStoreFactory_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertyStoreFactory_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertyStoreFactory_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertyStoreFactory_GetPropertyStore(This,flags,pUnkFactory,riid,ppv)	\
-    ( (This)->lpVtbl -> GetPropertyStore(This,flags,pUnkFactory,riid,ppv) ) 
-
-#define IPropertyStoreFactory_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv)	\
-    ( (This)->lpVtbl -> GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertyStoreFactory_INTERFACE_DEFINED__ */
-
-
-#ifndef __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__
-#define __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__
-
-/* interface IDelayedPropertyStoreFactory */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IDelayedPropertyStoreFactory;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("40d4577f-e237-4bdb-bd69-58f089431b6a")
-    IDelayedPropertyStoreFactory : public IPropertyStoreFactory
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetDelayedPropertyStore( 
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [in] */ DWORD dwStoreId,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IDelayedPropertyStoreFactoryVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDelayedPropertyStoreFactory * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDelayedPropertyStoreFactory * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDelayedPropertyStoreFactory * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyStore )( 
-            IDelayedPropertyStoreFactory * This,
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [unique][in] */ __RPC__in_opt IUnknown *pUnkFactory,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyStoreForKeys )( 
-            IDelayedPropertyStoreFactory * This,
-            /* [unique][in] */ __RPC__in_opt const PROPERTYKEY *rgKeys,
-            /* [in] */ UINT cKeys,
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetDelayedPropertyStore )( 
-            IDelayedPropertyStoreFactory * This,
-            /* [in] */ GETPROPERTYSTOREFLAGS flags,
-            /* [in] */ DWORD dwStoreId,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        END_INTERFACE
-    } IDelayedPropertyStoreFactoryVtbl;
-
-    interface IDelayedPropertyStoreFactory
-    {
-        CONST_VTBL struct IDelayedPropertyStoreFactoryVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IDelayedPropertyStoreFactory_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IDelayedPropertyStoreFactory_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IDelayedPropertyStoreFactory_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IDelayedPropertyStoreFactory_GetPropertyStore(This,flags,pUnkFactory,riid,ppv)	\
-    ( (This)->lpVtbl -> GetPropertyStore(This,flags,pUnkFactory,riid,ppv) ) 
-
-#define IDelayedPropertyStoreFactory_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv)	\
-    ( (This)->lpVtbl -> GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) ) 
-
-
-#define IDelayedPropertyStoreFactory_GetDelayedPropertyStore(This,flags,dwStoreId,riid,ppv)	\
-    ( (This)->lpVtbl -> GetDelayedPropertyStore(This,flags,dwStoreId,riid,ppv) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IDelayedPropertyStoreFactory_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_propsys_0000_0018 */
-/* [local] */ 
-
-/* [v1_enum] */ 
-enum tagPERSIST_SPROPSTORE_FLAGS
-    {	FPSPS_READONLY	= 0x1
-    } ;
-typedef int PERSIST_SPROPSTORE_FLAGS;
-
-typedef struct tagSERIALIZEDPROPSTORAGE SERIALIZEDPROPSTORAGE;
-
-typedef SERIALIZEDPROPSTORAGE __unaligned *PUSERIALIZEDPROPSTORAGE;
-
-typedef const SERIALIZEDPROPSTORAGE __unaligned *PCUSERIALIZEDPROPSTORAGE;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0018_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0018_v0_0_s_ifspec;
-
-#ifndef __IPersistSerializedPropStorage_INTERFACE_DEFINED__
-#define __IPersistSerializedPropStorage_INTERFACE_DEFINED__
-
-/* interface IPersistSerializedPropStorage */
-/* [object][local][unique][uuid] */ 
-
-
-EXTERN_C const IID IID_IPersistSerializedPropStorage;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("e318ad57-0aa0-450f-aca5-6fab7103d917")
-    IPersistSerializedPropStorage : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE SetFlags( 
-            /* [in] */ PERSIST_SPROPSTORE_FLAGS flags) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetPropertyStorage( 
-            /* [in] */ 
-            __in_bcount(cb)  PCUSERIALIZEDPROPSTORAGE psps,
-            /* [in] */ 
-            __in  DWORD cb) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetPropertyStorage( 
-            /* [out] */ 
-            __deref_out_bcount(*pcb)  SERIALIZEDPROPSTORAGE **ppsps,
-            /* [out] */ 
-            __out  DWORD *pcb) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPersistSerializedPropStorageVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPersistSerializedPropStorage * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPersistSerializedPropStorage * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPersistSerializedPropStorage * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetFlags )( 
-            IPersistSerializedPropStorage * This,
-            /* [in] */ PERSIST_SPROPSTORE_FLAGS flags);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetPropertyStorage )( 
-            IPersistSerializedPropStorage * This,
-            /* [in] */ 
-            __in_bcount(cb)  PCUSERIALIZEDPROPSTORAGE psps,
-            /* [in] */ 
-            __in  DWORD cb);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetPropertyStorage )( 
-            IPersistSerializedPropStorage * This,
-            /* [out] */ 
-            __deref_out_bcount(*pcb)  SERIALIZEDPROPSTORAGE **ppsps,
-            /* [out] */ 
-            __out  DWORD *pcb);
-        
-        END_INTERFACE
-    } IPersistSerializedPropStorageVtbl;
-
-    interface IPersistSerializedPropStorage
-    {
-        CONST_VTBL struct IPersistSerializedPropStorageVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPersistSerializedPropStorage_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPersistSerializedPropStorage_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPersistSerializedPropStorage_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPersistSerializedPropStorage_SetFlags(This,flags)	\
-    ( (This)->lpVtbl -> SetFlags(This,flags) ) 
-
-#define IPersistSerializedPropStorage_SetPropertyStorage(This,psps,cb)	\
-    ( (This)->lpVtbl -> SetPropertyStorage(This,psps,cb) ) 
-
-#define IPersistSerializedPropStorage_GetPropertyStorage(This,ppsps,pcb)	\
-    ( (This)->lpVtbl -> GetPropertyStorage(This,ppsps,pcb) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPersistSerializedPropStorage_INTERFACE_DEFINED__ */
-
-
-#ifndef __IPropertySystemChangeNotify_INTERFACE_DEFINED__
-#define __IPropertySystemChangeNotify_INTERFACE_DEFINED__
-
-/* interface IPropertySystemChangeNotify */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IPropertySystemChangeNotify;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("fa955fd9-38be-4879-a6ce-824cf52d609f")
-    IPropertySystemChangeNotify : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE SchemaRefreshed( void) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IPropertySystemChangeNotifyVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IPropertySystemChangeNotify * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IPropertySystemChangeNotify * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IPropertySystemChangeNotify * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *SchemaRefreshed )( 
-            IPropertySystemChangeNotify * This);
-        
-        END_INTERFACE
-    } IPropertySystemChangeNotifyVtbl;
-
-    interface IPropertySystemChangeNotify
-    {
-        CONST_VTBL struct IPropertySystemChangeNotifyVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IPropertySystemChangeNotify_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IPropertySystemChangeNotify_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IPropertySystemChangeNotify_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IPropertySystemChangeNotify_SchemaRefreshed(This)	\
-    ( (This)->lpVtbl -> SchemaRefreshed(This) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IPropertySystemChangeNotify_INTERFACE_DEFINED__ */
-
-
-#ifndef __ICreateObject_INTERFACE_DEFINED__
-#define __ICreateObject_INTERFACE_DEFINED__
-
-/* interface ICreateObject */
-/* [object][unique][uuid] */ 
-
-
-EXTERN_C const IID IID_ICreateObject;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("75121952-e0d0-43e5-9380-1d80483acf72")
-    ICreateObject : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE CreateObject( 
-            /* [in] */ __RPC__in REFCLSID clsid,
-            /* [unique][in] */ __RPC__in_opt IUnknown *pUnkOuter,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct ICreateObjectVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICreateObject * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICreateObject * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICreateObject * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *CreateObject )( 
-            ICreateObject * This,
-            /* [in] */ __RPC__in REFCLSID clsid,
-            /* [unique][in] */ __RPC__in_opt IUnknown *pUnkOuter,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ __RPC__deref_out_opt void **ppv);
-        
-        END_INTERFACE
-    } ICreateObjectVtbl;
-
-    interface ICreateObject
-    {
-        CONST_VTBL struct ICreateObjectVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ICreateObject_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ICreateObject_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ICreateObject_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define ICreateObject_CreateObject(This,clsid,pUnkOuter,riid,ppv)	\
-    ( (This)->lpVtbl -> CreateObject(This,clsid,pUnkOuter,riid,ppv) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __ICreateObject_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_propsys_0000_0021 */
-/* [local] */ 
-
-// Format a property value for display purposes
-PSSTDAPI PSFormatForDisplay(
-    __in REFPROPERTYKEY propkey,
-    __in REFPROPVARIANT propvar,
-    __in PROPDESC_FORMAT_FLAGS pdfFlags,
-    __out_ecount(cchText) LPWSTR pwszText,
-    __in DWORD cchText);
-
-PSSTDAPI PSFormatForDisplayAlloc(
-    __in REFPROPERTYKEY key,
-    __in REFPROPVARIANT propvar,
-    __in PROPDESC_FORMAT_FLAGS pdff,
-    __deref_out PWSTR *ppszDisplay);
-
-PSSTDAPI PSFormatPropertyValue(
-    __in IPropertyStore *pps,
-    __in IPropertyDescription *ppd,
-    __in PROPDESC_FORMAT_FLAGS pdff,
-    __deref_out LPWSTR *ppszDisplay);
-
-
-#define PKEY_PIDSTR_MAX     10   // will take care of any long integer value
-#define GUIDSTRING_MAX      (1 + 8 + 1 + 4 + 1 + 4 + 1 + 4 + 1 + 12 + 1 + 1)  // "{12345678-1234-1234-1234-123456789012}"
-#define PKEYSTR_MAX         (GUIDSTRING_MAX + 1 + PKEY_PIDSTR_MAX)
-
-// Convert a PROPERTYKEY to and from a PWSTR
-PSSTDAPI PSStringFromPropertyKey(
-    __in REFPROPERTYKEY pkey,
-    __out_ecount(cch) LPWSTR psz,
-    __in UINT cch);
-
-PSSTDAPI PSPropertyKeyFromString(
-    __in LPCWSTR pszString,
-    __out PROPERTYKEY *pkey);
-
-
-// Creates an in-memory property store
-// Returns an IPropertyStore, IPersistSerializedPropStorage, and related interfaces interface
-PSSTDAPI PSCreateMemoryPropertyStore(
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Create a read-only, delay-bind multiplexing property store
-// Returns an IPropertyStore interface or related interfaces
-PSSTDAPI PSCreateDelayedMultiplexPropertyStore(
-    __in GETPROPERTYSTOREFLAGS flags,
-    __in IDelayedPropertyStoreFactory *pdpsf,
-    __in_ecount(cStores) const DWORD *rgStoreIds,
-    __in DWORD cStores,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Create a read-only property store from one or more sources (which each must support either IPropertyStore or IPropertySetStorage)
-// Returns an IPropertyStore interface or related interfaces
-PSSTDAPI PSCreateMultiplexPropertyStore(
-    __in_ecount(cStores) IUnknown **prgpunkStores,
-    __in DWORD cStores,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Create a container for IPropertyChanges
-// Returns an IPropertyChangeArray interface
-PSSTDAPI PSCreatePropertyChangeArray(
-    __in_ecount_opt(cChanges) const PROPERTYKEY *rgpropkey,
-    __in_ecount_opt(cChanges) const PKA_FLAGS *rgflags,
-    __in_ecount_opt(cChanges) const PROPVARIANT *rgpropvar,
-    __in UINT cChanges,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Create a simple property change
-// Returns an IPropertyChange interface
-PSSTDAPI PSCreateSimplePropertyChange(
-    __in PKA_FLAGS flags,
-    __in REFPROPERTYKEY key,
-    __in REFPROPVARIANT propvar,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Get a property description
-// Returns an IPropertyDescription interface
-PSSTDAPI PSGetPropertyDescription(
-    __in REFPROPERTYKEY propkey,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-PSSTDAPI PSGetPropertyDescriptionByName(
-    __in LPCWSTR pszCanonicalName,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Lookup a per-machine registered file property handler
-PSSTDAPI PSLookupPropertyHandlerCLSID(
-    __in PCWSTR pszFilePath,
-    __out CLSID *pclsid);
-// Get a property handler, on Vista or downlevel to XP
-// punkItem is a shell item created with an SHCreateItemXXX API
-// Returns an IPropertyStore
-PSSTDAPI PSGetItemPropertyHandler(
-    __in IUnknown *punkItem,
-    __in BOOL fReadWrite,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Get a property handler, on Vista or downlevel to XP
-// punkItem is a shell item created with an SHCreateItemXXX API
-// punkCreateObject supports ICreateObject
-// Returns an IPropertyStore
-PSSTDAPI PSGetItemPropertyHandlerWithCreateObject(
-    __in IUnknown *punkItem,
-    __in BOOL fReadWrite,
-    __in IUnknown *punkCreateObject,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Get or set a property value from a store
-PSSTDAPI PSGetPropertyValue(
-    __in IPropertyStore *pps,
-    __in IPropertyDescription *ppd,
-    __out PROPVARIANT *ppropvar);
-
-PSSTDAPI PSSetPropertyValue(
-    __in IPropertyStore *pps,
-    __in IPropertyDescription *ppd,
-    __in REFPROPVARIANT propvar);
-
-
-// Interact with the set of property descriptions
-PSSTDAPI PSRegisterPropertySchema(
-    __in PCWSTR pszPath);
-
-PSSTDAPI PSUnregisterPropertySchema(
-    __in PCWSTR pszPath);
-
-PSSTDAPI PSRefreshPropertySchema();
-
-// Returns either: IPropertyDescriptionList or IEnumUnknown interfaces
-PSSTDAPI PSEnumeratePropertyDescriptions(
-    __in PROPDESC_ENUMFILTER filterOn,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Convert between a PROPERTYKEY and its canonical name
-PSSTDAPI PSGetPropertyKeyFromName(
-    __in PCWSTR pszName,
-    __out PROPERTYKEY *ppropkey);
-
-PSSTDAPI PSGetNameFromPropertyKey(
-    __in REFPROPERTYKEY propkey,
-    __deref_out PWSTR *ppszCanonicalName);
-
-
-// Coerce and canonicalize a property value
-PSSTDAPI PSCoerceToCanonicalValue(
-    __in REFPROPERTYKEY key,
-    __inout PROPVARIANT *ppropvar);
-
-
-// Convert a 'prop:' string into a list of property descriptions
-// Returns an IPropertyDescriptionList interface
-PSSTDAPI PSGetPropertyDescriptionListFromString(
-    __in LPCWSTR pszPropList,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Wrap an IPropertySetStorage interface in an IPropertyStore interface
-// Returns an IPropertyStore or related interface
-PSSTDAPI PSCreatePropertyStoreFromPropertySetStorage(
-    __in IPropertySetStorage *ppss,
-    DWORD grfMode,
-    REFIID riid,
-    __deref_out void **ppv);
-
-
-// punkSource must support IPropertyStore or IPropertySetStorage
-// On success, the returned ppv is guaranteed to support IPropertyStore.
-// If punkSource already supports IPropertyStore, no wrapper is created.
-PSSTDAPI PSCreatePropertyStoreFromObject(
-    __in IUnknown *punk,
-    __in DWORD grfMode,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// punkSource must support IPropertyStore
-// riid may be IPropertyStore, IPropertySetStorage, IPropertyStoreCapabilities, or IObjectProvider
-PSSTDAPI PSCreateAdapterFromPropertyStore(
-    __in IPropertyStore *pps,
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Talk to the property system using an interface
-// Returns an IPropertySystem interface
-PSSTDAPI PSGetPropertySystem(
-    __in REFIID riid,
-    __deref_out void **ppv);
-
-
-// Obtain a value from serialized property storage
-PSSTDAPI PSGetPropertyFromPropertyStorage(
-    __in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, 
-    __in DWORD cb, 
-    __in REFPROPERTYKEY rpkey, 
-    __out PROPVARIANT *ppropvar);
-
-
-// Obtain a named value from serialized property storage
-PSSTDAPI PSGetNamedPropertyFromPropertyStorage(
-    __in_bcount(cb) PCUSERIALIZEDPROPSTORAGE psps, 
-    __in DWORD cb, 
-    __in LPCWSTR pszName, 
-    __out PROPVARIANT *ppropvar);
-
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0021_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_propsys_0000_0021_v0_0_s_ifspec;
-
-
-#ifndef __PropSysObjects_LIBRARY_DEFINED__
-#define __PropSysObjects_LIBRARY_DEFINED__
-
-/* library PropSysObjects */
-/* [version][lcid][uuid] */ 
-
-
-EXTERN_C const IID LIBID_PropSysObjects;
-
-EXTERN_C const CLSID CLSID_InMemoryPropertyStore;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("9a02e012-6303-4e1e-b9a1-630f802592c5")
-InMemoryPropertyStore;
-#endif
-
-EXTERN_C const CLSID CLSID_PropertySystem;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("b8967f85-58ae-4f46-9fb2-5d7904798f4b")
-PropertySystem;
-#endif
-#endif /* __PropSysObjects_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *, unsigned long            , BSTR * ); 
-unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned char *, BSTR * ); 
-unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); 
-void                      __RPC_USER  BSTR_UserFree(     unsigned long *, BSTR * ); 
-
-unsigned long             __RPC_USER  LPSAFEARRAY_UserSize(     unsigned long *, unsigned long            , LPSAFEARRAY * ); 
-unsigned char * __RPC_USER  LPSAFEARRAY_UserMarshal(  unsigned long *, unsigned char *, LPSAFEARRAY * ); 
-unsigned char * __RPC_USER  LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY * ); 
-void                      __RPC_USER  LPSAFEARRAY_UserFree(     unsigned long *, LPSAFEARRAY * ); 
-
-unsigned long             __RPC_USER  BSTR_UserSize64(     unsigned long *, unsigned long            , BSTR * ); 
-unsigned char * __RPC_USER  BSTR_UserMarshal64(  unsigned long *, unsigned char *, BSTR * ); 
-unsigned char * __RPC_USER  BSTR_UserUnmarshal64(unsigned long *, unsigned char *, BSTR * ); 
-void                      __RPC_USER  BSTR_UserFree64(     unsigned long *, BSTR * ); 
-
-unsigned long             __RPC_USER  LPSAFEARRAY_UserSize64(     unsigned long *, unsigned long            , LPSAFEARRAY * ); 
-unsigned char * __RPC_USER  LPSAFEARRAY_UserMarshal64(  unsigned long *, unsigned char *, LPSAFEARRAY * ); 
-unsigned char * __RPC_USER  LPSAFEARRAY_UserUnmarshal64(unsigned long *, unsigned char *, LPSAFEARRAY * ); 
-void                      __RPC_USER  LPSAFEARRAY_UserFree64(     unsigned long *, LPSAFEARRAY * ); 
-
-/* [local] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Proxy( 
-    IInitializeWithStream * This,
-    /* [in] */ IStream *pstream,
-    /* [in] */ DWORD grfMode);
-
-
-/* [call_as] */ HRESULT STDMETHODCALLTYPE IInitializeWithStream_Initialize_Stub( 
-    IInitializeWithStream * This,
-    /* [in] */ __RPC__in_opt IStream *pstream,
-    /* [in] */ DWORD grfMode);
-
-/* [local] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonicalValue_Proxy( 
-    IPropertyDescription * This,
-    /* [out][in] */ PROPVARIANT *ppropvar);
-
-
-/* [call_as] */ HRESULT STDMETHODCALLTYPE IPropertyDescription_CoerceToCanonicalValue_Stub( 
-    IPropertyDescription * This,
-    /* [in] */ __RPC__in REFPROPVARIANT propvar,
-    /* [out] */ __RPC__out PROPVARIANT *ppropvar);
-
-
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
-
diff -Naur src/hostapi/wasapi/mingw-include/rpcsal.h src/hostapi/wasapi/mingw-include/rpcsal.h
--- src/hostapi/wasapi/mingw-include/rpcsal.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/rpcsal.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,113 +0,0 @@
-#pragma once
-
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-#define RPC_range(min,max)
-
-#define __RPC__in           
-#define __RPC__in_string
-#define __RPC__in_opt_string
-#define __RPC__deref_opt_in_opt
-#define __RPC__opt_in_opt_string
-#define __RPC__in_ecount(size) 
-#define __RPC__in_ecount_full(size)
-#define __RPC__in_ecount_full_string(size)
-#define __RPC__in_ecount_part(size, length)
-#define __RPC__in_ecount_full_opt(size)
-#define __RPC__in_ecount_full_opt_string(size)
-#define __RPC__inout_ecount_full_opt_string(size)
-#define __RPC__in_ecount_part_opt(size, length)
-
-#define __RPC__deref_in 
-#define __RPC__deref_in_string
-#define __RPC__deref_opt_in
-#define __RPC__deref_in_opt
-#define __RPC__deref_in_ecount(size) 
-#define __RPC__deref_in_ecount_part(size, length) 
-#define __RPC__deref_in_ecount_full(size) 
-#define __RPC__deref_in_ecount_full_opt(size)
-#define __RPC__deref_in_ecount_full_string(size)
-#define __RPC__deref_in_ecount_full_opt_string(size)
-#define __RPC__deref_in_ecount_opt(size) 
-#define __RPC__deref_in_ecount_opt_string(size)
-#define __RPC__deref_in_ecount_part_opt(size, length) 
-
-// [out]
-#define __RPC__out     
-#define __RPC__out_ecount(size) 
-#define __RPC__out_ecount_part(size, length) 
-#define __RPC__out_ecount_full(size)
-#define __RPC__out_ecount_full_string(size)
-
-// [in,out] 
-#define __RPC__inout                                   
-#define __RPC__inout_string
-#define __RPC__opt_inout
-#define __RPC__inout_ecount(size)                     
-#define __RPC__inout_ecount_part(size, length)    
-#define __RPC__inout_ecount_full(size)          
-#define __RPC__inout_ecount_full_string(size)          
-
-// [in,unique] 
-#define __RPC__in_opt       
-#define __RPC__in_ecount_opt(size)   
-
-
-// [in,out,unique] 
-#define __RPC__inout_opt    
-#define __RPC__inout_ecount_opt(size)  
-#define __RPC__inout_ecount_part_opt(size, length) 
-#define __RPC__inout_ecount_full_opt(size)     
-#define __RPC__inout_ecount_full_string(size)
-
-// [out] **
-#define __RPC__deref_out   
-#define __RPC__deref_out_string
-#define __RPC__deref_out_opt 
-#define __RPC__deref_out_opt_string
-#define __RPC__deref_out_ecount(size) 
-#define __RPC__deref_out_ecount_part(size, length) 
-#define __RPC__deref_out_ecount_full(size)  
-#define __RPC__deref_out_ecount_full_string(size)
-
-
-// [in,out] **, second pointer decoration. 
-#define __RPC__deref_inout    
-#define __RPC__deref_inout_string
-#define __RPC__deref_inout_opt 
-#define __RPC__deref_inout_opt_string
-#define __RPC__deref_inout_ecount_full(size)
-#define __RPC__deref_inout_ecount_full_string(size)
-#define __RPC__deref_inout_ecount_opt(size) 
-#define __RPC__deref_inout_ecount_part_opt(size, length) 
-#define __RPC__deref_inout_ecount_full_opt(size) 
-#define __RPC__deref_inout_ecount_full_opt_string(size) 
-
-// #define __RPC_out_opt    out_opt is not allowed in rpc
-
-// [in,out,unique] 
-#define __RPC__deref_opt_inout  
-#define __RPC__deref_opt_inout_string
-#define __RPC__deref_opt_inout_ecount(size)     
-#define __RPC__deref_opt_inout_ecount_part(size, length) 
-#define __RPC__deref_opt_inout_ecount_full(size) 
-#define __RPC__deref_opt_inout_ecount_full_string(size)
-
-#define __RPC__deref_out_ecount_opt(size) 
-#define __RPC__deref_out_ecount_part_opt(size, length) 
-#define __RPC__deref_out_ecount_full_opt(size) 
-#define __RPC__deref_out_ecount_full_opt_string(size)
-
-#define __RPC__deref_opt_inout_opt      
-#define __RPC__deref_opt_inout_opt_string
-#define __RPC__deref_opt_inout_ecount_opt(size)   
-#define __RPC__deref_opt_inout_ecount_part_opt(size, length) 
-#define __RPC__deref_opt_inout_ecount_full_opt(size) 
-#define __RPC__deref_opt_inout_ecount_full_opt_string(size) 
-
-#define __RPC_full_pointer  
-#define __RPC_unique_pointer
-#define __RPC_ref_pointer
-#define __RPC_string                               
diff -Naur src/hostapi/wasapi/mingw-include/sal.h src/hostapi/wasapi/mingw-include/sal.h
--- src/hostapi/wasapi/mingw-include/sal.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/sal.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,252 +0,0 @@
-#pragma once
-
-#if __GNUC__ >=3
-#pragma GCC system_header
-#endif
-
-/*#define __null*/ // << Conflicts with GCC internal type __null
-#define __notnull
-#define __maybenull
-#define __readonly
-#define __notreadonly
-#define __maybereadonly
-#define __valid
-#define __notvalid
-#define __maybevalid
-#define __readableTo(extent)
-#define __elem_readableTo(size)
-#define __byte_readableTo(size)
-#define __writableTo(size)
-#define __elem_writableTo(size)
-#define __byte_writableTo(size)
-#define __deref
-#define __pre
-#define __post
-#define __precond(expr)
-#define __postcond(expr)
-#define __exceptthat
-#define __execeptthat
-#define __inner_success(expr)
-#define __inner_checkReturn
-#define __inner_typefix(ctype)
-#define __inner_override
-#define __inner_callback
-#define __inner_blocksOn(resource)
-#define __inner_fallthrough_dec
-#define __inner_fallthrough
-#define __refparam
-#define __inner_control_entrypoint(category)
-#define __inner_data_entrypoint(category)
-
-#define __ecount(size)
-#define __bcount(size)
-#define __in
-#define __in_ecount(size)
-#define __in_bcount(size)
-#define __in_z
-#define __in_ecount_z(size)
-#define __in_bcount_z(size)
-#define __in_nz
-#define __in_ecount_nz(size)
-#define __in_bcount_nz(size)
-#define __out
-#define __out_ecount(size)
-#define __out_bcount(size)
-#define __out_ecount_part(size,length)
-#define __out_bcount_part(size,length)
-#define __out_ecount_full(size)
-#define __out_bcount_full(size)
-#define __out_z
-#define __out_z_opt
-#define __out_ecount_z(size)
-#define __out_bcount_z(size)
-#define __out_ecount_part_z(size,length)
-#define __out_bcount_part_z(size,length)
-#define __out_ecount_full_z(size)
-#define __out_bcount_full_z(size)
-#define __out_nz
-#define __out_nz_opt
-#define __out_ecount_nz(size)
-#define __out_bcount_nz(size)
-#define __inout
-#define __inout_ecount(size)
-#define __inout_bcount(size)
-#define __inout_ecount_part(size,length)
-#define __inout_bcount_part(size,length)
-#define __inout_ecount_full(size)
-#define __inout_bcount_full(size)
-#define __inout_z
-#define __inout_ecount_z(size)
-#define __inout_bcount_z(size)
-#define __inout_nz
-#define __inout_ecount_nz(size)
-#define __inout_bcount_nz(size)
-#define __ecount_opt(size)
-#define __bcount_opt(size)
-#define __in_opt
-#define __in_ecount_opt(size)
-#define __in_bcount_opt(size)
-#define __in_z_opt
-#define __in_ecount_z_opt(size)
-#define __in_bcount_z_opt(size)
-#define __in_nz_opt
-#define __in_ecount_nz_opt(size)
-#define __in_bcount_nz_opt(size)
-#define __out_opt
-#define __out_ecount_opt(size)
-#define __out_bcount_opt(size)
-#define __out_ecount_part_opt(size,length)
-#define __out_bcount_part_opt(size,length)
-#define __out_ecount_full_opt(size)
-#define __out_bcount_full_opt(size)
-#define __out_ecount_z_opt(size)
-#define __out_bcount_z_opt(size)
-#define __out_ecount_part_z_opt(size,length)
-#define __out_bcount_part_z_opt(size,length)
-#define __out_ecount_full_z_opt(size)
-#define __out_bcount_full_z_opt(size)
-#define __out_ecount_nz_opt(size)
-#define __out_bcount_nz_opt(size)
-#define __inout_opt
-#define __inout_ecount_opt(size)
-#define __inout_bcount_opt(size)
-#define __inout_ecount_part_opt(size,length)
-#define __inout_bcount_part_opt(size,length)
-#define __inout_ecount_full_opt(size)
-#define __inout_bcount_full_opt(size)
-#define __inout_z_opt
-#define __inout_ecount_z_opt(size)
-#define __inout_ecount_z_opt(size)
-#define __inout_bcount_z_opt(size)
-#define __inout_nz_opt
-#define __inout_ecount_nz_opt(size)
-#define __inout_bcount_nz_opt(size)
-#define __deref_ecount(size)
-#define __deref_bcount(size)
-#define __deref_out
-#define __deref_out_ecount(size)
-#define __deref_out_bcount(size)
-#define __deref_out_ecount_part(size,length)
-#define __deref_out_bcount_part(size,length)
-#define __deref_out_ecount_full(size)
-#define __deref_out_bcount_full(size)
-#define __deref_out_z
-#define __deref_out_ecount_z(size)
-#define __deref_out_bcount_z(size)
-#define __deref_out_nz
-#define __deref_out_ecount_nz(size)
-#define __deref_out_bcount_nz(size)
-#define __deref_inout
-#define __deref_inout_z
-#define __deref_inout_ecount(size)
-#define __deref_inout_bcount(size)
-#define __deref_inout_ecount_part(size,length)
-#define __deref_inout_bcount_part(size,length)
-#define __deref_inout_ecount_full(size)
-#define __deref_inout_bcount_full(size)
-#define __deref_inout_z
-#define __deref_inout_ecount_z(size)
-#define __deref_inout_bcount_z(size)
-#define __deref_inout_nz
-#define __deref_inout_ecount_nz(size)
-#define __deref_inout_bcount_nz(size)
-#define __deref_ecount_opt(size)
-#define __deref_bcount_opt(size)
-#define __deref_out_opt
-#define __deref_out_ecount_opt(size)
-#define __deref_out_bcount_opt(size)
-#define __deref_out_ecount_part_opt(size,length)
-#define __deref_out_bcount_part_opt(size,length)
-#define __deref_out_ecount_full_opt(size)
-#define __deref_out_bcount_full_opt(size)
-#define __deref_out_z_opt
-#define __deref_out_ecount_z_opt(size)
-#define __deref_out_bcount_z_opt(size)
-#define __deref_out_nz_opt
-#define __deref_out_ecount_nz_opt(size)
-#define __deref_out_bcount_nz_opt(size)
-#define __deref_inout_opt
-#define __deref_inout_ecount_opt(size)
-#define __deref_inout_bcount_opt(size)
-#define __deref_inout_ecount_part_opt(size,length)
-#define __deref_inout_bcount_part_opt(size,length)
-#define __deref_inout_ecount_full_opt(size)
-#define __deref_inout_bcount_full_opt(size)
-#define __deref_inout_z_opt
-#define __deref_inout_ecount_z_opt(size)
-#define __deref_inout_bcount_z_opt(size)
-#define __deref_inout_nz_opt
-#define __deref_inout_ecount_nz_opt(size)
-#define __deref_inout_bcount_nz_opt(size)
-#define __deref_opt_ecount(size)
-#define __deref_opt_bcount(size)
-#define __deref_opt_out
-#define __deref_opt_out_z
-#define __deref_opt_out_ecount(size)
-#define __deref_opt_out_bcount(size)
-#define __deref_opt_out_ecount_part(size,length)
-#define __deref_opt_out_bcount_part(size,length)
-#define __deref_opt_out_ecount_full(size)
-#define __deref_opt_out_bcount_full(size)
-#define __deref_opt_inout
-#define __deref_opt_inout_ecount(size)
-#define __deref_opt_inout_bcount(size)
-#define __deref_opt_inout_ecount_part(size,length)
-#define __deref_opt_inout_bcount_part(size,length)
-#define __deref_opt_inout_ecount_full(size)
-#define __deref_opt_inout_bcount_full(size)
-#define __deref_opt_inout_z
-#define __deref_opt_inout_ecount_z(size)
-#define __deref_opt_inout_bcount_z(size)
-#define __deref_opt_inout_nz
-#define __deref_opt_inout_ecount_nz(size)
-#define __deref_opt_inout_bcount_nz(size)
-#define __deref_opt_ecount_opt(size)
-#define __deref_opt_bcount_opt(size)
-#define __deref_opt_out_opt
-#define __deref_opt_out_ecount_opt(size)
-#define __deref_opt_out_bcount_opt(size)
-#define __deref_opt_out_ecount_part_opt(size,length)
-#define __deref_opt_out_bcount_part_opt(size,length)
-#define __deref_opt_out_ecount_full_opt(size)
-#define __deref_opt_out_bcount_full_opt(size)
-#define __deref_opt_out_z_opt
-#define __deref_opt_out_ecount_z_opt(size)
-#define __deref_opt_out_bcount_z_opt(size)
-#define __deref_opt_out_nz_opt
-#define __deref_opt_out_ecount_nz_opt(size)
-#define __deref_opt_out_bcount_nz_opt(size)
-#define __deref_opt_inout_opt
-#define __deref_opt_inout_ecount_opt(size)
-#define __deref_opt_inout_bcount_opt(size)
-#define __deref_opt_inout_ecount_part_opt(size,length)
-#define __deref_opt_inout_bcount_part_opt(size,length)
-#define __deref_opt_inout_ecount_full_opt(size)
-#define __deref_opt_inout_bcount_full_opt(size)
-#define __deref_opt_inout_z_opt
-#define __deref_opt_inout_ecount_z_opt(size)
-#define __deref_opt_inout_bcount_z_opt(size)
-#define __deref_opt_inout_nz_opt
-#define __deref_opt_inout_ecount_nz_opt(size)
-#define __deref_opt_inout_bcount_nz_opt(size)
-
-#define __success(expr)
-#define __nullterminated
-#define __nullnullterminated
-#define __reserved
-#define __checkReturn
-#define __typefix(ctype)
-#define __override
-#define __callback
-#define __format_string
-#define __blocksOn(resource)
-#define __control_entrypoint(category)
-#define __data_entrypoint(category)
-
-#ifndef __fallthrough
-    #define __fallthrough __inner_fallthrough
-#endif
-
-#ifndef __analysis_assume
-    #define __analysis_assume(expr)
-#endif
diff -Naur src/hostapi/wasapi/mingw-include/structuredquery.h src/hostapi/wasapi/mingw-include/structuredquery.h
--- src/hostapi/wasapi/mingw-include/structuredquery.h	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/mingw-include/structuredquery.h	1970-01-01 01:00:00.000000000 +0100
@@ -1,2478 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0499 */
-/* Compiler settings for structuredquery.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
-    protocol : dce , ms_ext, c_ext, robust
-    error checks: allocation ref bounds_check enum stub_data 
-    VC __declspec() decoration level: 
-         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
-         DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-//@@MIDL_FILE_HEADING(  )
-
-#pragma warning( disable: 4049 )  /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-/* verify that the <rpcsal.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCSAL_H_VERSION__
-#define __REQUIRED_RPCSAL_H_VERSION__ 100
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __structuredquery_h__
-#define __structuredquery_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */ 
-
-#ifndef __IQueryParser_FWD_DEFINED__
-#define __IQueryParser_FWD_DEFINED__
-typedef interface IQueryParser IQueryParser;
-#endif 	/* __IQueryParser_FWD_DEFINED__ */
-
-
-#ifndef __IConditionFactory_FWD_DEFINED__
-#define __IConditionFactory_FWD_DEFINED__
-typedef interface IConditionFactory IConditionFactory;
-#endif 	/* __IConditionFactory_FWD_DEFINED__ */
-
-
-#ifndef __IQuerySolution_FWD_DEFINED__
-#define __IQuerySolution_FWD_DEFINED__
-typedef interface IQuerySolution IQuerySolution;
-#endif 	/* __IQuerySolution_FWD_DEFINED__ */
-
-
-#ifndef __ICondition_FWD_DEFINED__
-#define __ICondition_FWD_DEFINED__
-typedef interface ICondition ICondition;
-#endif 	/* __ICondition_FWD_DEFINED__ */
-
-
-#ifndef __IConditionGenerator_FWD_DEFINED__
-#define __IConditionGenerator_FWD_DEFINED__
-typedef interface IConditionGenerator IConditionGenerator;
-#endif 	/* __IConditionGenerator_FWD_DEFINED__ */
-
-
-#ifndef __IRichChunk_FWD_DEFINED__
-#define __IRichChunk_FWD_DEFINED__
-typedef interface IRichChunk IRichChunk;
-#endif 	/* __IRichChunk_FWD_DEFINED__ */
-
-
-#ifndef __IInterval_FWD_DEFINED__
-#define __IInterval_FWD_DEFINED__
-typedef interface IInterval IInterval;
-#endif 	/* __IInterval_FWD_DEFINED__ */
-
-
-#ifndef __IMetaData_FWD_DEFINED__
-#define __IMetaData_FWD_DEFINED__
-typedef interface IMetaData IMetaData;
-#endif 	/* __IMetaData_FWD_DEFINED__ */
-
-
-#ifndef __IEntity_FWD_DEFINED__
-#define __IEntity_FWD_DEFINED__
-typedef interface IEntity IEntity;
-#endif 	/* __IEntity_FWD_DEFINED__ */
-
-
-#ifndef __IRelationship_FWD_DEFINED__
-#define __IRelationship_FWD_DEFINED__
-typedef interface IRelationship IRelationship;
-#endif 	/* __IRelationship_FWD_DEFINED__ */
-
-
-#ifndef __INamedEntity_FWD_DEFINED__
-#define __INamedEntity_FWD_DEFINED__
-typedef interface INamedEntity INamedEntity;
-#endif 	/* __INamedEntity_FWD_DEFINED__ */
-
-
-#ifndef __ISchemaProvider_FWD_DEFINED__
-#define __ISchemaProvider_FWD_DEFINED__
-typedef interface ISchemaProvider ISchemaProvider;
-#endif 	/* __ISchemaProvider_FWD_DEFINED__ */
-
-
-#ifndef __ITokenCollection_FWD_DEFINED__
-#define __ITokenCollection_FWD_DEFINED__
-typedef interface ITokenCollection ITokenCollection;
-#endif 	/* __ITokenCollection_FWD_DEFINED__ */
-
-
-#ifndef __INamedEntityCollector_FWD_DEFINED__
-#define __INamedEntityCollector_FWD_DEFINED__
-typedef interface INamedEntityCollector INamedEntityCollector;
-#endif 	/* __INamedEntityCollector_FWD_DEFINED__ */
-
-
-#ifndef __ISchemaLocalizerSupport_FWD_DEFINED__
-#define __ISchemaLocalizerSupport_FWD_DEFINED__
-typedef interface ISchemaLocalizerSupport ISchemaLocalizerSupport;
-#endif 	/* __ISchemaLocalizerSupport_FWD_DEFINED__ */
-
-
-#ifndef __IQueryParserManager_FWD_DEFINED__
-#define __IQueryParserManager_FWD_DEFINED__
-typedef interface IQueryParserManager IQueryParserManager;
-#endif 	/* __IQueryParserManager_FWD_DEFINED__ */
-
-
-#ifndef __QueryParser_FWD_DEFINED__
-#define __QueryParser_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class QueryParser QueryParser;
-#else
-typedef struct QueryParser QueryParser;
-#endif /* __cplusplus */
-
-#endif 	/* __QueryParser_FWD_DEFINED__ */
-
-
-#ifndef __NegationCondition_FWD_DEFINED__
-#define __NegationCondition_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class NegationCondition NegationCondition;
-#else
-typedef struct NegationCondition NegationCondition;
-#endif /* __cplusplus */
-
-#endif 	/* __NegationCondition_FWD_DEFINED__ */
-
-
-#ifndef __CompoundCondition_FWD_DEFINED__
-#define __CompoundCondition_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class CompoundCondition CompoundCondition;
-#else
-typedef struct CompoundCondition CompoundCondition;
-#endif /* __cplusplus */
-
-#endif 	/* __CompoundCondition_FWD_DEFINED__ */
-
-
-#ifndef __LeafCondition_FWD_DEFINED__
-#define __LeafCondition_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class LeafCondition LeafCondition;
-#else
-typedef struct LeafCondition LeafCondition;
-#endif /* __cplusplus */
-
-#endif 	/* __LeafCondition_FWD_DEFINED__ */
-
-
-#ifndef __ConditionFactory_FWD_DEFINED__
-#define __ConditionFactory_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class ConditionFactory ConditionFactory;
-#else
-typedef struct ConditionFactory ConditionFactory;
-#endif /* __cplusplus */
-
-#endif 	/* __ConditionFactory_FWD_DEFINED__ */
-
-
-#ifndef __Interval_FWD_DEFINED__
-#define __Interval_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class Interval Interval;
-#else
-typedef struct Interval Interval;
-#endif /* __cplusplus */
-
-#endif 	/* __Interval_FWD_DEFINED__ */
-
-
-#ifndef __QueryParserManager_FWD_DEFINED__
-#define __QueryParserManager_FWD_DEFINED__
-
-#ifdef __cplusplus
-typedef class QueryParserManager QueryParserManager;
-#else
-typedef struct QueryParserManager QueryParserManager;
-#endif /* __cplusplus */
-
-#endif 	/* __QueryParserManager_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "oaidl.h"
-#include "ocidl.h"
-#include "propidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif 
-
-
-/* interface __MIDL_itf_structuredquery_0000_0000 */
-/* [local] */ 
-
-
-
-
-
-
-
-
-
-
-
-typedef /* [v1_enum] */ 
-enum tagCONDITION_TYPE
-    {	CT_AND_CONDITION	= 0,
-	CT_OR_CONDITION	= ( CT_AND_CONDITION + 1 ) ,
-	CT_NOT_CONDITION	= ( CT_OR_CONDITION + 1 ) ,
-	CT_LEAF_CONDITION	= ( CT_NOT_CONDITION + 1 ) 
-    } 	CONDITION_TYPE;
-
-typedef /* [v1_enum] */ 
-enum tagCONDITION_OPERATION
-    {	COP_IMPLICIT	= 0,
-	COP_EQUAL	= ( COP_IMPLICIT + 1 ) ,
-	COP_NOTEQUAL	= ( COP_EQUAL + 1 ) ,
-	COP_LESSTHAN	= ( COP_NOTEQUAL + 1 ) ,
-	COP_GREATERTHAN	= ( COP_LESSTHAN + 1 ) ,
-	COP_LESSTHANOREQUAL	= ( COP_GREATERTHAN + 1 ) ,
-	COP_GREATERTHANOREQUAL	= ( COP_LESSTHANOREQUAL + 1 ) ,
-	COP_VALUE_STARTSWITH	= ( COP_GREATERTHANOREQUAL + 1 ) ,
-	COP_VALUE_ENDSWITH	= ( COP_VALUE_STARTSWITH + 1 ) ,
-	COP_VALUE_CONTAINS	= ( COP_VALUE_ENDSWITH + 1 ) ,
-	COP_VALUE_NOTCONTAINS	= ( COP_VALUE_CONTAINS + 1 ) ,
-	COP_DOSWILDCARDS	= ( COP_VALUE_NOTCONTAINS + 1 ) ,
-	COP_WORD_EQUAL	= ( COP_DOSWILDCARDS + 1 ) ,
-	COP_WORD_STARTSWITH	= ( COP_WORD_EQUAL + 1 ) ,
-	COP_APPLICATION_SPECIFIC	= ( COP_WORD_STARTSWITH + 1 ) 
-    } 	CONDITION_OPERATION;
-
-typedef /* [v1_enum] */ 
-enum tagSTRUCTURED_QUERY_SINGLE_OPTION
-    {	SQSO_SCHEMA	= 0,
-	SQSO_LOCALE_WORD_BREAKING	= ( SQSO_SCHEMA + 1 ) ,
-	SQSO_WORD_BREAKER	= ( SQSO_LOCALE_WORD_BREAKING + 1 ) ,
-	SQSO_NATURAL_SYNTAX	= ( SQSO_WORD_BREAKER + 1 ) ,
-	SQSO_AUTOMATIC_WILDCARD	= ( SQSO_NATURAL_SYNTAX + 1 ) ,
-	SQSO_TRACE_LEVEL	= ( SQSO_AUTOMATIC_WILDCARD + 1 ) ,
-	SQSO_LANGUAGE_KEYWORDS	= ( SQSO_TRACE_LEVEL + 1 ) 
-    } 	STRUCTURED_QUERY_SINGLE_OPTION;
-
-typedef /* [v1_enum] */ 
-enum tagSTRUCTURED_QUERY_MULTIOPTION
-    {	SQMO_VIRTUAL_PROPERTY	= 0,
-	SQMO_DEFAULT_PROPERTY	= ( SQMO_VIRTUAL_PROPERTY + 1 ) ,
-	SQMO_GENERATOR_FOR_TYPE	= ( SQMO_DEFAULT_PROPERTY + 1 ) 
-    } 	STRUCTURED_QUERY_MULTIOPTION;
-
-typedef /* [v1_enum] */ 
-enum tagSTRUCTURED_QUERY_PARSE_ERROR
-    {	SQPE_NONE	= 0,
-	SQPE_EXTRA_OPENING_PARENTHESIS	= ( SQPE_NONE + 1 ) ,
-	SQPE_EXTRA_CLOSING_PARENTHESIS	= ( SQPE_EXTRA_OPENING_PARENTHESIS + 1 ) ,
-	SQPE_IGNORED_MODIFIER	= ( SQPE_EXTRA_CLOSING_PARENTHESIS + 1 ) ,
-	SQPE_IGNORED_CONNECTOR	= ( SQPE_IGNORED_MODIFIER + 1 ) ,
-	SQPE_IGNORED_KEYWORD	= ( SQPE_IGNORED_CONNECTOR + 1 ) ,
-	SQPE_UNHANDLED	= ( SQPE_IGNORED_KEYWORD + 1 ) 
-    } 	STRUCTURED_QUERY_PARSE_ERROR;
-
-/* [v1_enum] */ 
-enum tagSTRUCTURED_QUERY_RESOLVE_OPTION
-    {	SQRO_DONT_RESOLVE_DATETIME	= 0x1,
-	SQRO_ALWAYS_ONE_INTERVAL	= 0x2,
-	SQRO_DONT_SIMPLIFY_CONDITION_TREES	= 0x4,
-	SQRO_DONT_MAP_RELATIONS	= 0x8,
-	SQRO_DONT_RESOLVE_RANGES	= 0x10,
-	SQRO_DONT_REMOVE_UNRESTRICTED_KEYWORDS	= 0x20,
-	SQRO_DONT_SPLIT_WORDS	= 0x40,
-	SQRO_IGNORE_PHRASE_ORDER	= 0x80
-    } ;
-typedef int STRUCTURED_QUERY_RESOLVE_OPTION;
-
-typedef /* [v1_enum] */ 
-enum tagINTERVAL_LIMIT_KIND
-    {	ILK_EXPLICIT_INCLUDED	= 0,
-	ILK_EXPLICIT_EXCLUDED	= ( ILK_EXPLICIT_INCLUDED + 1 ) ,
-	ILK_NEGATIVE_INFINITY	= ( ILK_EXPLICIT_EXCLUDED + 1 ) ,
-	ILK_POSITIVE_INFINITY	= ( ILK_NEGATIVE_INFINITY + 1 ) 
-    } 	INTERVAL_LIMIT_KIND;
-
-typedef /* [v1_enum] */ 
-enum tagQUERY_PARSER_MANAGER_OPTION
-    {	QPMO_SCHEMA_BINARY_NAME	= 0,
-	QPMO_PRELOCALIZED_SCHEMA_BINARY_PATH	= ( QPMO_SCHEMA_BINARY_NAME + 1 ) ,
-	QPMO_UNLOCALIZED_SCHEMA_BINARY_PATH	= ( QPMO_PRELOCALIZED_SCHEMA_BINARY_PATH + 1 ) ,
-	QPMO_LOCALIZED_SCHEMA_BINARY_PATH	= ( QPMO_UNLOCALIZED_SCHEMA_BINARY_PATH + 1 ) ,
-	QPMO_APPEND_LCID_TO_LOCALIZED_PATH	= ( QPMO_LOCALIZED_SCHEMA_BINARY_PATH + 1 ) ,
-	QPMO_LOCALIZER_SUPPORT	= ( QPMO_APPEND_LCID_TO_LOCALIZED_PATH + 1 ) 
-    } 	QUERY_PARSER_MANAGER_OPTION;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IQueryParser_INTERFACE_DEFINED__
-#define __IQueryParser_INTERFACE_DEFINED__
-
-/* interface IQueryParser */
-/* [unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IQueryParser;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("2EBDEE67-3505-43f8-9946-EA44ABC8E5B0")
-    IQueryParser : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Parse( 
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [in] */ __RPC__in_opt IEnumUnknown *pCustomProperties,
-            /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetOption( 
-            /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option,
-            /* [in] */ __RPC__in const PROPVARIANT *pOptionValue) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetOption( 
-            /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option,
-            /* [retval][out] */ __RPC__out PROPVARIANT *pOptionValue) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetMultiOption( 
-            /* [in] */ STRUCTURED_QUERY_MULTIOPTION option,
-            /* [in] */ __RPC__in LPCWSTR pszOptionKey,
-            /* [in] */ __RPC__in const PROPVARIANT *pOptionValue) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetSchemaProvider( 
-            /* [retval][out] */ __RPC__deref_out_opt ISchemaProvider **ppSchemaProvider) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RestateToString( 
-            /* [in] */ __RPC__in_opt ICondition *pCondition,
-            /* [in] */ BOOL fUseEnglish,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE ParsePropertyValue( 
-            /* [in] */ __RPC__in LPCWSTR pszPropertyName,
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RestatePropertyValueToString( 
-            /* [in] */ __RPC__in_opt ICondition *pCondition,
-            /* [in] */ BOOL fUseEnglish,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszPropertyName,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IQueryParserVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IQueryParser * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IQueryParser * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IQueryParser * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Parse )( 
-            IQueryParser * This,
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [in] */ __RPC__in_opt IEnumUnknown *pCustomProperties,
-            /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetOption )( 
-            IQueryParser * This,
-            /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option,
-            /* [in] */ __RPC__in const PROPVARIANT *pOptionValue);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetOption )( 
-            IQueryParser * This,
-            /* [in] */ STRUCTURED_QUERY_SINGLE_OPTION option,
-            /* [retval][out] */ __RPC__out PROPVARIANT *pOptionValue);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetMultiOption )( 
-            IQueryParser * This,
-            /* [in] */ STRUCTURED_QUERY_MULTIOPTION option,
-            /* [in] */ __RPC__in LPCWSTR pszOptionKey,
-            /* [in] */ __RPC__in const PROPVARIANT *pOptionValue);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSchemaProvider )( 
-            IQueryParser * This,
-            /* [retval][out] */ __RPC__deref_out_opt ISchemaProvider **ppSchemaProvider);
-        
-        HRESULT ( STDMETHODCALLTYPE *RestateToString )( 
-            IQueryParser * This,
-            /* [in] */ __RPC__in_opt ICondition *pCondition,
-            /* [in] */ BOOL fUseEnglish,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString);
-        
-        HRESULT ( STDMETHODCALLTYPE *ParsePropertyValue )( 
-            IQueryParser * This,
-            /* [in] */ __RPC__in LPCWSTR pszPropertyName,
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [retval][out] */ __RPC__deref_out_opt IQuerySolution **ppSolution);
-        
-        HRESULT ( STDMETHODCALLTYPE *RestatePropertyValueToString )( 
-            IQueryParser * This,
-            /* [in] */ __RPC__in_opt ICondition *pCondition,
-            /* [in] */ BOOL fUseEnglish,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszPropertyName,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszQueryString);
-        
-        END_INTERFACE
-    } IQueryParserVtbl;
-
-    interface IQueryParser
-    {
-        CONST_VTBL struct IQueryParserVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IQueryParser_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IQueryParser_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IQueryParser_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IQueryParser_Parse(This,pszInputString,pCustomProperties,ppSolution)	\
-    ( (This)->lpVtbl -> Parse(This,pszInputString,pCustomProperties,ppSolution) ) 
-
-#define IQueryParser_SetOption(This,option,pOptionValue)	\
-    ( (This)->lpVtbl -> SetOption(This,option,pOptionValue) ) 
-
-#define IQueryParser_GetOption(This,option,pOptionValue)	\
-    ( (This)->lpVtbl -> GetOption(This,option,pOptionValue) ) 
-
-#define IQueryParser_SetMultiOption(This,option,pszOptionKey,pOptionValue)	\
-    ( (This)->lpVtbl -> SetMultiOption(This,option,pszOptionKey,pOptionValue) ) 
-
-#define IQueryParser_GetSchemaProvider(This,ppSchemaProvider)	\
-    ( (This)->lpVtbl -> GetSchemaProvider(This,ppSchemaProvider) ) 
-
-#define IQueryParser_RestateToString(This,pCondition,fUseEnglish,ppszQueryString)	\
-    ( (This)->lpVtbl -> RestateToString(This,pCondition,fUseEnglish,ppszQueryString) ) 
-
-#define IQueryParser_ParsePropertyValue(This,pszPropertyName,pszInputString,ppSolution)	\
-    ( (This)->lpVtbl -> ParsePropertyValue(This,pszPropertyName,pszInputString,ppSolution) ) 
-
-#define IQueryParser_RestatePropertyValueToString(This,pCondition,fUseEnglish,ppszPropertyName,ppszQueryString)	\
-    ( (This)->lpVtbl -> RestatePropertyValueToString(This,pCondition,fUseEnglish,ppszPropertyName,ppszQueryString) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IQueryParser_INTERFACE_DEFINED__ */
-
-
-#ifndef __IConditionFactory_INTERFACE_DEFINED__
-#define __IConditionFactory_INTERFACE_DEFINED__
-
-/* interface IConditionFactory */
-/* [unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IConditionFactory;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("A5EFE073-B16F-474f-9F3E-9F8B497A3E08")
-    IConditionFactory : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE MakeNot( 
-            /* [in] */ __RPC__in_opt ICondition *pSubCondition,
-            /* [in] */ BOOL simplify,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE MakeAndOr( 
-            /* [in] */ CONDITION_TYPE nodeType,
-            /* [in] */ __RPC__in_opt IEnumUnknown *pSubConditions,
-            /* [in] */ BOOL simplify,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE MakeLeaf( 
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName,
-            /* [in] */ CONDITION_OPERATION op,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType,
-            /* [in] */ __RPC__in const PROPVARIANT *pValue,
-            /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pValueTerm,
-            /* [in] */ BOOL expand,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE Resolve( 
-            /* [in] */ 
-            __in  ICondition *pConditionTree,
-            /* [in] */ 
-            __in  STRUCTURED_QUERY_RESOLVE_OPTION sqro,
-            /* [ref][in] */ 
-            __in_opt  const SYSTEMTIME *pstReferenceTime,
-            /* [retval][out] */ 
-            __out  ICondition **ppResolvedConditionTree) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IConditionFactoryVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IConditionFactory * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IConditionFactory * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IConditionFactory * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *MakeNot )( 
-            IConditionFactory * This,
-            /* [in] */ __RPC__in_opt ICondition *pSubCondition,
-            /* [in] */ BOOL simplify,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery);
-        
-        HRESULT ( STDMETHODCALLTYPE *MakeAndOr )( 
-            IConditionFactory * This,
-            /* [in] */ CONDITION_TYPE nodeType,
-            /* [in] */ __RPC__in_opt IEnumUnknown *pSubConditions,
-            /* [in] */ BOOL simplify,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery);
-        
-        HRESULT ( STDMETHODCALLTYPE *MakeLeaf )( 
-            IConditionFactory * This,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName,
-            /* [in] */ CONDITION_OPERATION op,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType,
-            /* [in] */ __RPC__in const PROPVARIANT *pValue,
-            /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pValueTerm,
-            /* [in] */ BOOL expand,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Resolve )( 
-            IConditionFactory * This,
-            /* [in] */ 
-            __in  ICondition *pConditionTree,
-            /* [in] */ 
-            __in  STRUCTURED_QUERY_RESOLVE_OPTION sqro,
-            /* [ref][in] */ 
-            __in_opt  const SYSTEMTIME *pstReferenceTime,
-            /* [retval][out] */ 
-            __out  ICondition **ppResolvedConditionTree);
-        
-        END_INTERFACE
-    } IConditionFactoryVtbl;
-
-    interface IConditionFactory
-    {
-        CONST_VTBL struct IConditionFactoryVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IConditionFactory_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IConditionFactory_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IConditionFactory_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IConditionFactory_MakeNot(This,pSubCondition,simplify,ppResultQuery)	\
-    ( (This)->lpVtbl -> MakeNot(This,pSubCondition,simplify,ppResultQuery) ) 
-
-#define IConditionFactory_MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery)	\
-    ( (This)->lpVtbl -> MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery) ) 
-
-#define IConditionFactory_MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery)	\
-    ( (This)->lpVtbl -> MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery) ) 
-
-#define IConditionFactory_Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree)	\
-    ( (This)->lpVtbl -> Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IConditionFactory_INTERFACE_DEFINED__ */
-
-
-#ifndef __IQuerySolution_INTERFACE_DEFINED__
-#define __IQuerySolution_INTERFACE_DEFINED__
-
-/* interface IQuerySolution */
-/* [unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IQuerySolution;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("D6EBC66B-8921-4193-AFDD-A1789FB7FF57")
-    IQuerySolution : public IConditionFactory
-    {
-    public:
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetQuery( 
-            /* [out] */ 
-            __out_opt  ICondition **ppQueryNode,
-            /* [out] */ 
-            __out_opt  IEntity **ppMainType) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetErrors( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppParseErrors) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetLexicalData( 
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszInputString,
-            /* [out] */ 
-            __out_opt  ITokenCollection **ppTokens,
-            /* [out] */ 
-            __out_opt  LCID *pLocale,
-            /* [out] */ 
-            __out_opt  IUnknown **ppWordBreaker) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IQuerySolutionVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IQuerySolution * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IQuerySolution * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IQuerySolution * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *MakeNot )( 
-            IQuerySolution * This,
-            /* [in] */ __RPC__in_opt ICondition *pSubCondition,
-            /* [in] */ BOOL simplify,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery);
-        
-        HRESULT ( STDMETHODCALLTYPE *MakeAndOr )( 
-            IQuerySolution * This,
-            /* [in] */ CONDITION_TYPE nodeType,
-            /* [in] */ __RPC__in_opt IEnumUnknown *pSubConditions,
-            /* [in] */ BOOL simplify,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery);
-        
-        HRESULT ( STDMETHODCALLTYPE *MakeLeaf )( 
-            IQuerySolution * This,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName,
-            /* [in] */ CONDITION_OPERATION op,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType,
-            /* [in] */ __RPC__in const PROPVARIANT *pValue,
-            /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pValueTerm,
-            /* [in] */ BOOL expand,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppResultQuery);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Resolve )( 
-            IQuerySolution * This,
-            /* [in] */ 
-            __in  ICondition *pConditionTree,
-            /* [in] */ 
-            __in  STRUCTURED_QUERY_RESOLVE_OPTION sqro,
-            /* [ref][in] */ 
-            __in_opt  const SYSTEMTIME *pstReferenceTime,
-            /* [retval][out] */ 
-            __out  ICondition **ppResolvedConditionTree);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetQuery )( 
-            IQuerySolution * This,
-            /* [out] */ 
-            __out_opt  ICondition **ppQueryNode,
-            /* [out] */ 
-            __out_opt  IEntity **ppMainType);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetErrors )( 
-            IQuerySolution * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppParseErrors);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetLexicalData )( 
-            IQuerySolution * This,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszInputString,
-            /* [out] */ 
-            __out_opt  ITokenCollection **ppTokens,
-            /* [out] */ 
-            __out_opt  LCID *pLocale,
-            /* [out] */ 
-            __out_opt  IUnknown **ppWordBreaker);
-        
-        END_INTERFACE
-    } IQuerySolutionVtbl;
-
-    interface IQuerySolution
-    {
-        CONST_VTBL struct IQuerySolutionVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IQuerySolution_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IQuerySolution_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IQuerySolution_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IQuerySolution_MakeNot(This,pSubCondition,simplify,ppResultQuery)	\
-    ( (This)->lpVtbl -> MakeNot(This,pSubCondition,simplify,ppResultQuery) ) 
-
-#define IQuerySolution_MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery)	\
-    ( (This)->lpVtbl -> MakeAndOr(This,nodeType,pSubConditions,simplify,ppResultQuery) ) 
-
-#define IQuerySolution_MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery)	\
-    ( (This)->lpVtbl -> MakeLeaf(This,pszPropertyName,op,pszValueType,pValue,pPropertyNameTerm,pOperationTerm,pValueTerm,expand,ppResultQuery) ) 
-
-#define IQuerySolution_Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree)	\
-    ( (This)->lpVtbl -> Resolve(This,pConditionTree,sqro,pstReferenceTime,ppResolvedConditionTree) ) 
-
-
-#define IQuerySolution_GetQuery(This,ppQueryNode,ppMainType)	\
-    ( (This)->lpVtbl -> GetQuery(This,ppQueryNode,ppMainType) ) 
-
-#define IQuerySolution_GetErrors(This,riid,ppParseErrors)	\
-    ( (This)->lpVtbl -> GetErrors(This,riid,ppParseErrors) ) 
-
-#define IQuerySolution_GetLexicalData(This,ppszInputString,ppTokens,pLocale,ppWordBreaker)	\
-    ( (This)->lpVtbl -> GetLexicalData(This,ppszInputString,ppTokens,pLocale,ppWordBreaker) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IQuerySolution_INTERFACE_DEFINED__ */
-
-
-#ifndef __ICondition_INTERFACE_DEFINED__
-#define __ICondition_INTERFACE_DEFINED__
-
-/* interface ICondition */
-/* [unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_ICondition;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("0FC988D4-C935-4b97-A973-46282EA175C8")
-    ICondition : public IPersistStream
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetConditionType( 
-            /* [retval][out] */ __RPC__out CONDITION_TYPE *pNodeType) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetSubConditions( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppv) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetComparisonInfo( 
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszPropertyName,
-            /* [out] */ 
-            __out_opt  CONDITION_OPERATION *pOperation,
-            /* [out] */ 
-            __out_opt  PROPVARIANT *pValue) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetValueType( 
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValueTypeName) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetValueNormalization( 
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszNormalization) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetInputTerms( 
-            /* [out] */ 
-            __out_opt  IRichChunk **ppPropertyTerm,
-            /* [out] */ 
-            __out_opt  IRichChunk **ppOperationTerm,
-            /* [out] */ 
-            __out_opt  IRichChunk **ppValueTerm) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Clone( 
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppc) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IConditionVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICondition * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICondition * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICondition * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetClassID )( 
-            ICondition * This,
-            /* [out] */ __RPC__out CLSID *pClassID);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsDirty )( 
-            ICondition * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Load )( 
-            ICondition * This,
-            /* [unique][in] */ __RPC__in_opt IStream *pStm);
-        
-        HRESULT ( STDMETHODCALLTYPE *Save )( 
-            ICondition * This,
-            /* [unique][in] */ __RPC__in_opt IStream *pStm,
-            /* [in] */ BOOL fClearDirty);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSizeMax )( 
-            ICondition * This,
-            /* [out] */ __RPC__out ULARGE_INTEGER *pcbSize);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetConditionType )( 
-            ICondition * This,
-            /* [retval][out] */ __RPC__out CONDITION_TYPE *pNodeType);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetSubConditions )( 
-            ICondition * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppv);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetComparisonInfo )( 
-            ICondition * This,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszPropertyName,
-            /* [out] */ 
-            __out_opt  CONDITION_OPERATION *pOperation,
-            /* [out] */ 
-            __out_opt  PROPVARIANT *pValue);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetValueType )( 
-            ICondition * This,
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValueTypeName);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetValueNormalization )( 
-            ICondition * This,
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszNormalization);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetInputTerms )( 
-            ICondition * This,
-            /* [out] */ 
-            __out_opt  IRichChunk **ppPropertyTerm,
-            /* [out] */ 
-            __out_opt  IRichChunk **ppOperationTerm,
-            /* [out] */ 
-            __out_opt  IRichChunk **ppValueTerm);
-        
-        HRESULT ( STDMETHODCALLTYPE *Clone )( 
-            ICondition * This,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppc);
-        
-        END_INTERFACE
-    } IConditionVtbl;
-
-    interface ICondition
-    {
-        CONST_VTBL struct IConditionVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ICondition_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ICondition_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ICondition_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define ICondition_GetClassID(This,pClassID)	\
-    ( (This)->lpVtbl -> GetClassID(This,pClassID) ) 
-
-
-#define ICondition_IsDirty(This)	\
-    ( (This)->lpVtbl -> IsDirty(This) ) 
-
-#define ICondition_Load(This,pStm)	\
-    ( (This)->lpVtbl -> Load(This,pStm) ) 
-
-#define ICondition_Save(This,pStm,fClearDirty)	\
-    ( (This)->lpVtbl -> Save(This,pStm,fClearDirty) ) 
-
-#define ICondition_GetSizeMax(This,pcbSize)	\
-    ( (This)->lpVtbl -> GetSizeMax(This,pcbSize) ) 
-
-
-#define ICondition_GetConditionType(This,pNodeType)	\
-    ( (This)->lpVtbl -> GetConditionType(This,pNodeType) ) 
-
-#define ICondition_GetSubConditions(This,riid,ppv)	\
-    ( (This)->lpVtbl -> GetSubConditions(This,riid,ppv) ) 
-
-#define ICondition_GetComparisonInfo(This,ppszPropertyName,pOperation,pValue)	\
-    ( (This)->lpVtbl -> GetComparisonInfo(This,ppszPropertyName,pOperation,pValue) ) 
-
-#define ICondition_GetValueType(This,ppszValueTypeName)	\
-    ( (This)->lpVtbl -> GetValueType(This,ppszValueTypeName) ) 
-
-#define ICondition_GetValueNormalization(This,ppszNormalization)	\
-    ( (This)->lpVtbl -> GetValueNormalization(This,ppszNormalization) ) 
-
-#define ICondition_GetInputTerms(This,ppPropertyTerm,ppOperationTerm,ppValueTerm)	\
-    ( (This)->lpVtbl -> GetInputTerms(This,ppPropertyTerm,ppOperationTerm,ppValueTerm) ) 
-
-#define ICondition_Clone(This,ppc)	\
-    ( (This)->lpVtbl -> Clone(This,ppc) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __ICondition_INTERFACE_DEFINED__ */
-
-
-#ifndef __IConditionGenerator_INTERFACE_DEFINED__
-#define __IConditionGenerator_INTERFACE_DEFINED__
-
-/* interface IConditionGenerator */
-/* [unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IConditionGenerator;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("92D2CC58-4386-45a3-B98C-7E0CE64A4117")
-    IConditionGenerator : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Initialize( 
-            /* [in] */ __RPC__in_opt ISchemaProvider *pSchemaProvider) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RecognizeNamedEntities( 
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [in] */ LCID lcid,
-            /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection,
-            /* [out][in] */ __RPC__inout_opt INamedEntityCollector *pNamedEntities) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GenerateForLeaf( 
-            /* [in] */ __RPC__in_opt IConditionFactory *pConditionFactory,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName,
-            /* [in] */ CONDITION_OPERATION op,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType,
-            /* [in] */ __RPC__in LPCWSTR pszValue,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszValue2,
-            /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pValueTerm,
-            /* [in] */ BOOL automaticWildcard,
-            /* [out] */ __RPC__out BOOL *pNoStringQuery,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppQueryExpression) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( 
-            /* [unique][in] */ LPCWSTR pszValueType,
-            /* [in] */ const PROPVARIANT *ppropvar,
-            /* [in] */ BOOL fUseEnglish,
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IConditionGeneratorVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IConditionGenerator * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IConditionGenerator * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IConditionGenerator * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
-            IConditionGenerator * This,
-            /* [in] */ __RPC__in_opt ISchemaProvider *pSchemaProvider);
-        
-        HRESULT ( STDMETHODCALLTYPE *RecognizeNamedEntities )( 
-            IConditionGenerator * This,
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [in] */ LCID lcid,
-            /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection,
-            /* [out][in] */ __RPC__inout_opt INamedEntityCollector *pNamedEntities);
-        
-        HRESULT ( STDMETHODCALLTYPE *GenerateForLeaf )( 
-            IConditionGenerator * This,
-            /* [in] */ __RPC__in_opt IConditionFactory *pConditionFactory,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszPropertyName,
-            /* [in] */ CONDITION_OPERATION op,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszValueType,
-            /* [in] */ __RPC__in LPCWSTR pszValue,
-            /* [unique][in] */ __RPC__in_opt LPCWSTR pszValue2,
-            /* [in] */ __RPC__in_opt IRichChunk *pPropertyNameTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pOperationTerm,
-            /* [in] */ __RPC__in_opt IRichChunk *pValueTerm,
-            /* [in] */ BOOL automaticWildcard,
-            /* [out] */ __RPC__out BOOL *pNoStringQuery,
-            /* [retval][out] */ __RPC__deref_out_opt ICondition **ppQueryExpression);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( 
-            IConditionGenerator * This,
-            /* [unique][in] */ LPCWSTR pszValueType,
-            /* [in] */ const PROPVARIANT *ppropvar,
-            /* [in] */ BOOL fUseEnglish,
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase);
-        
-        END_INTERFACE
-    } IConditionGeneratorVtbl;
-
-    interface IConditionGenerator
-    {
-        CONST_VTBL struct IConditionGeneratorVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IConditionGenerator_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IConditionGenerator_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IConditionGenerator_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IConditionGenerator_Initialize(This,pSchemaProvider)	\
-    ( (This)->lpVtbl -> Initialize(This,pSchemaProvider) ) 
-
-#define IConditionGenerator_RecognizeNamedEntities(This,pszInputString,lcid,pTokenCollection,pNamedEntities)	\
-    ( (This)->lpVtbl -> RecognizeNamedEntities(This,pszInputString,lcid,pTokenCollection,pNamedEntities) ) 
-
-#define IConditionGenerator_GenerateForLeaf(This,pConditionFactory,pszPropertyName,op,pszValueType,pszValue,pszValue2,pPropertyNameTerm,pOperationTerm,pValueTerm,automaticWildcard,pNoStringQuery,ppQueryExpression)	\
-    ( (This)->lpVtbl -> GenerateForLeaf(This,pConditionFactory,pszPropertyName,op,pszValueType,pszValue,pszValue2,pPropertyNameTerm,pOperationTerm,pValueTerm,automaticWildcard,pNoStringQuery,ppQueryExpression) ) 
-
-#define IConditionGenerator_DefaultPhrase(This,pszValueType,ppropvar,fUseEnglish,ppszPhrase)	\
-    ( (This)->lpVtbl -> DefaultPhrase(This,pszValueType,ppropvar,fUseEnglish,ppszPhrase) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IConditionGenerator_INTERFACE_DEFINED__ */
-
-
-#ifndef __IRichChunk_INTERFACE_DEFINED__
-#define __IRichChunk_INTERFACE_DEFINED__
-
-/* interface IRichChunk */
-/* [unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IRichChunk;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("4FDEF69C-DBC9-454e-9910-B34F3C64B510")
-    IRichChunk : public IUnknown
-    {
-    public:
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData( 
-            /* [out] */ 
-            __out_opt  ULONG *pFirstPos,
-            /* [out] */ 
-            __out_opt  ULONG *pLength,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppsz,
-            /* [out] */ 
-            __out_opt  PROPVARIANT *pValue) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IRichChunkVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IRichChunk * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IRichChunk * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IRichChunk * This);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetData )( 
-            IRichChunk * This,
-            /* [out] */ 
-            __out_opt  ULONG *pFirstPos,
-            /* [out] */ 
-            __out_opt  ULONG *pLength,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppsz,
-            /* [out] */ 
-            __out_opt  PROPVARIANT *pValue);
-        
-        END_INTERFACE
-    } IRichChunkVtbl;
-
-    interface IRichChunk
-    {
-        CONST_VTBL struct IRichChunkVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IRichChunk_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IRichChunk_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IRichChunk_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IRichChunk_GetData(This,pFirstPos,pLength,ppsz,pValue)	\
-    ( (This)->lpVtbl -> GetData(This,pFirstPos,pLength,ppsz,pValue) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IRichChunk_INTERFACE_DEFINED__ */
-
-
-#ifndef __IInterval_INTERFACE_DEFINED__
-#define __IInterval_INTERFACE_DEFINED__
-
-/* interface IInterval */
-/* [unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_IInterval;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("6BF0A714-3C18-430b-8B5D-83B1C234D3DB")
-    IInterval : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetLimits( 
-            /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkLower,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarLower,
-            /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkUpper,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarUpper) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IIntervalVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IInterval * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IInterval * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IInterval * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetLimits )( 
-            IInterval * This,
-            /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkLower,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarLower,
-            /* [out] */ __RPC__out INTERVAL_LIMIT_KIND *pilkUpper,
-            /* [out] */ __RPC__out PROPVARIANT *ppropvarUpper);
-        
-        END_INTERFACE
-    } IIntervalVtbl;
-
-    interface IInterval
-    {
-        CONST_VTBL struct IIntervalVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IInterval_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IInterval_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IInterval_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IInterval_GetLimits(This,pilkLower,ppropvarLower,pilkUpper,ppropvarUpper)	\
-    ( (This)->lpVtbl -> GetLimits(This,pilkLower,ppropvarLower,pilkUpper,ppropvarUpper) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IInterval_INTERFACE_DEFINED__ */
-
-
-#ifndef __IMetaData_INTERFACE_DEFINED__
-#define __IMetaData_INTERFACE_DEFINED__
-
-/* interface IMetaData */
-/* [unique][uuid][object][helpstring] */ 
-
-
-EXTERN_C const IID IID_IMetaData;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("780102B0-C43B-4876-BC7B-5E9BA5C88794")
-    IMetaData : public IUnknown
-    {
-    public:
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData( 
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszKey,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszValue) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IMetaDataVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMetaData * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMetaData * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMetaData * This);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetData )( 
-            IMetaData * This,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszKey,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppszValue);
-        
-        END_INTERFACE
-    } IMetaDataVtbl;
-
-    interface IMetaData
-    {
-        CONST_VTBL struct IMetaDataVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IMetaData_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IMetaData_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IMetaData_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IMetaData_GetData(This,ppszKey,ppszValue)	\
-    ( (This)->lpVtbl -> GetData(This,ppszKey,ppszValue) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IMetaData_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_structuredquery_0000_0008 */
-/* [local] */ 
-
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0008_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0008_v0_0_s_ifspec;
-
-#ifndef __IEntity_INTERFACE_DEFINED__
-#define __IEntity_INTERFACE_DEFINED__
-
-/* interface IEntity */
-/* [unique][object][uuid][helpstring] */ 
-
-
-EXTERN_C const IID IID_IEntity;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("24264891-E80B-4fd3-B7CE-4FF2FAE8931F")
-    IEntity : public IUnknown
-    {
-    public:
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE Name( 
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszName) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Base( 
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pBaseEntity) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Relationships( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pRelationships) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetRelationship( 
-            /* [in] */ __RPC__in LPCWSTR pszRelationName,
-            /* [retval][out] */ __RPC__deref_out_opt IRelationship **pRelationship) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE MetaData( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE NamedEntities( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pNamedEntities) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetNamedEntity( 
-            /* [in] */ __RPC__in LPCWSTR pszValue,
-            /* [retval][out] */ __RPC__deref_out_opt INamedEntity **ppNamedEntity) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( 
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IEntityVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IEntity * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IEntity * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IEntity * This);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Name )( 
-            IEntity * This,
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *Base )( 
-            IEntity * This,
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pBaseEntity);
-        
-        HRESULT ( STDMETHODCALLTYPE *Relationships )( 
-            IEntity * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pRelationships);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRelationship )( 
-            IEntity * This,
-            /* [in] */ __RPC__in LPCWSTR pszRelationName,
-            /* [retval][out] */ __RPC__deref_out_opt IRelationship **pRelationship);
-        
-        HRESULT ( STDMETHODCALLTYPE *MetaData )( 
-            IEntity * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData);
-        
-        HRESULT ( STDMETHODCALLTYPE *NamedEntities )( 
-            IEntity * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pNamedEntities);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetNamedEntity )( 
-            IEntity * This,
-            /* [in] */ __RPC__in LPCWSTR pszValue,
-            /* [retval][out] */ __RPC__deref_out_opt INamedEntity **ppNamedEntity);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( 
-            IEntity * This,
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase);
-        
-        END_INTERFACE
-    } IEntityVtbl;
-
-    interface IEntity
-    {
-        CONST_VTBL struct IEntityVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IEntity_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IEntity_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IEntity_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IEntity_Name(This,ppszName)	\
-    ( (This)->lpVtbl -> Name(This,ppszName) ) 
-
-#define IEntity_Base(This,pBaseEntity)	\
-    ( (This)->lpVtbl -> Base(This,pBaseEntity) ) 
-
-#define IEntity_Relationships(This,riid,pRelationships)	\
-    ( (This)->lpVtbl -> Relationships(This,riid,pRelationships) ) 
-
-#define IEntity_GetRelationship(This,pszRelationName,pRelationship)	\
-    ( (This)->lpVtbl -> GetRelationship(This,pszRelationName,pRelationship) ) 
-
-#define IEntity_MetaData(This,riid,pMetaData)	\
-    ( (This)->lpVtbl -> MetaData(This,riid,pMetaData) ) 
-
-#define IEntity_NamedEntities(This,riid,pNamedEntities)	\
-    ( (This)->lpVtbl -> NamedEntities(This,riid,pNamedEntities) ) 
-
-#define IEntity_GetNamedEntity(This,pszValue,ppNamedEntity)	\
-    ( (This)->lpVtbl -> GetNamedEntity(This,pszValue,ppNamedEntity) ) 
-
-#define IEntity_DefaultPhrase(This,ppszPhrase)	\
-    ( (This)->lpVtbl -> DefaultPhrase(This,ppszPhrase) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IEntity_INTERFACE_DEFINED__ */
-
-
-#ifndef __IRelationship_INTERFACE_DEFINED__
-#define __IRelationship_INTERFACE_DEFINED__
-
-/* interface IRelationship */
-/* [unique][object][uuid][helpstring] */ 
-
-
-EXTERN_C const IID IID_IRelationship;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("2769280B-5108-498c-9C7F-A51239B63147")
-    IRelationship : public IUnknown
-    {
-    public:
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE Name( 
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszName) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE IsReal( 
-            /* [retval][out] */ __RPC__out BOOL *pIsReal) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Destination( 
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pDestinationEntity) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE MetaData( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( 
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IRelationshipVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IRelationship * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IRelationship * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IRelationship * This);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *Name )( 
-            IRelationship * This,
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszName);
-        
-        HRESULT ( STDMETHODCALLTYPE *IsReal )( 
-            IRelationship * This,
-            /* [retval][out] */ __RPC__out BOOL *pIsReal);
-        
-        HRESULT ( STDMETHODCALLTYPE *Destination )( 
-            IRelationship * This,
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pDestinationEntity);
-        
-        HRESULT ( STDMETHODCALLTYPE *MetaData )( 
-            IRelationship * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( 
-            IRelationship * This,
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase);
-        
-        END_INTERFACE
-    } IRelationshipVtbl;
-
-    interface IRelationship
-    {
-        CONST_VTBL struct IRelationshipVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IRelationship_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IRelationship_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IRelationship_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IRelationship_Name(This,ppszName)	\
-    ( (This)->lpVtbl -> Name(This,ppszName) ) 
-
-#define IRelationship_IsReal(This,pIsReal)	\
-    ( (This)->lpVtbl -> IsReal(This,pIsReal) ) 
-
-#define IRelationship_Destination(This,pDestinationEntity)	\
-    ( (This)->lpVtbl -> Destination(This,pDestinationEntity) ) 
-
-#define IRelationship_MetaData(This,riid,pMetaData)	\
-    ( (This)->lpVtbl -> MetaData(This,riid,pMetaData) ) 
-
-#define IRelationship_DefaultPhrase(This,ppszPhrase)	\
-    ( (This)->lpVtbl -> DefaultPhrase(This,ppszPhrase) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IRelationship_INTERFACE_DEFINED__ */
-
-
-#ifndef __INamedEntity_INTERFACE_DEFINED__
-#define __INamedEntity_INTERFACE_DEFINED__
-
-/* interface INamedEntity */
-/* [unique][uuid][object][helpstring] */ 
-
-
-EXTERN_C const IID IID_INamedEntity;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("ABDBD0B1-7D54-49fb-AB5C-BFF4130004CD")
-    INamedEntity : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE GetValue( 
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValue) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE DefaultPhrase( 
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct INamedEntityVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            INamedEntity * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            INamedEntity * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            INamedEntity * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetValue )( 
-            INamedEntity * This,
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszValue);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *DefaultPhrase )( 
-            INamedEntity * This,
-            /* [retval][out] */ 
-            __deref_opt_out  LPWSTR *ppszPhrase);
-        
-        END_INTERFACE
-    } INamedEntityVtbl;
-
-    interface INamedEntity
-    {
-        CONST_VTBL struct INamedEntityVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define INamedEntity_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define INamedEntity_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define INamedEntity_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define INamedEntity_GetValue(This,ppszValue)	\
-    ( (This)->lpVtbl -> GetValue(This,ppszValue) ) 
-
-#define INamedEntity_DefaultPhrase(This,ppszPhrase)	\
-    ( (This)->lpVtbl -> DefaultPhrase(This,ppszPhrase) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __INamedEntity_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISchemaProvider_INTERFACE_DEFINED__
-#define __ISchemaProvider_INTERFACE_DEFINED__
-
-/* interface ISchemaProvider */
-/* [unique][object][uuid][helpstring] */ 
-
-
-EXTERN_C const IID IID_ISchemaProvider;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("8CF89BCB-394C-49b2-AE28-A59DD4ED7F68")
-    ISchemaProvider : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Entities( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pEntities) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RootEntity( 
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pRootEntity) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetEntity( 
-            /* [in] */ __RPC__in LPCWSTR pszEntityName,
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pEntity) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE MetaData( 
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Localize( 
-            /* [in] */ LCID lcid,
-            /* [in] */ __RPC__in_opt ISchemaLocalizerSupport *pSchemaLocalizerSupport) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SaveBinary( 
-            /* [in] */ __RPC__in LPCWSTR pszSchemaBinaryPath) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE LookupAuthoredNamedEntity( 
-            /* [in] */ __RPC__in_opt IEntity *pEntity,
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection,
-            /* [in] */ ULONG cTokensBegin,
-            /* [out] */ __RPC__out ULONG *pcTokensLength,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszValue) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct ISchemaProviderVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ISchemaProvider * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ISchemaProvider * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ISchemaProvider * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Entities )( 
-            ISchemaProvider * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pEntities);
-        
-        HRESULT ( STDMETHODCALLTYPE *RootEntity )( 
-            ISchemaProvider * This,
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pRootEntity);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetEntity )( 
-            ISchemaProvider * This,
-            /* [in] */ __RPC__in LPCWSTR pszEntityName,
-            /* [retval][out] */ __RPC__deref_out_opt IEntity **pEntity);
-        
-        HRESULT ( STDMETHODCALLTYPE *MetaData )( 
-            ISchemaProvider * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **pMetaData);
-        
-        HRESULT ( STDMETHODCALLTYPE *Localize )( 
-            ISchemaProvider * This,
-            /* [in] */ LCID lcid,
-            /* [in] */ __RPC__in_opt ISchemaLocalizerSupport *pSchemaLocalizerSupport);
-        
-        HRESULT ( STDMETHODCALLTYPE *SaveBinary )( 
-            ISchemaProvider * This,
-            /* [in] */ __RPC__in LPCWSTR pszSchemaBinaryPath);
-        
-        HRESULT ( STDMETHODCALLTYPE *LookupAuthoredNamedEntity )( 
-            ISchemaProvider * This,
-            /* [in] */ __RPC__in_opt IEntity *pEntity,
-            /* [in] */ __RPC__in LPCWSTR pszInputString,
-            /* [in] */ __RPC__in_opt ITokenCollection *pTokenCollection,
-            /* [in] */ ULONG cTokensBegin,
-            /* [out] */ __RPC__out ULONG *pcTokensLength,
-            /* [out] */ __RPC__deref_out_opt LPWSTR *ppszValue);
-        
-        END_INTERFACE
-    } ISchemaProviderVtbl;
-
-    interface ISchemaProvider
-    {
-        CONST_VTBL struct ISchemaProviderVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ISchemaProvider_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ISchemaProvider_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ISchemaProvider_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define ISchemaProvider_Entities(This,riid,pEntities)	\
-    ( (This)->lpVtbl -> Entities(This,riid,pEntities) ) 
-
-#define ISchemaProvider_RootEntity(This,pRootEntity)	\
-    ( (This)->lpVtbl -> RootEntity(This,pRootEntity) ) 
-
-#define ISchemaProvider_GetEntity(This,pszEntityName,pEntity)	\
-    ( (This)->lpVtbl -> GetEntity(This,pszEntityName,pEntity) ) 
-
-#define ISchemaProvider_MetaData(This,riid,pMetaData)	\
-    ( (This)->lpVtbl -> MetaData(This,riid,pMetaData) ) 
-
-#define ISchemaProvider_Localize(This,lcid,pSchemaLocalizerSupport)	\
-    ( (This)->lpVtbl -> Localize(This,lcid,pSchemaLocalizerSupport) ) 
-
-#define ISchemaProvider_SaveBinary(This,pszSchemaBinaryPath)	\
-    ( (This)->lpVtbl -> SaveBinary(This,pszSchemaBinaryPath) ) 
-
-#define ISchemaProvider_LookupAuthoredNamedEntity(This,pEntity,pszInputString,pTokenCollection,cTokensBegin,pcTokensLength,ppszValue)	\
-    ( (This)->lpVtbl -> LookupAuthoredNamedEntity(This,pEntity,pszInputString,pTokenCollection,cTokensBegin,pcTokensLength,ppszValue) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __ISchemaProvider_INTERFACE_DEFINED__ */
-
-
-#ifndef __ITokenCollection_INTERFACE_DEFINED__
-#define __ITokenCollection_INTERFACE_DEFINED__
-
-/* interface ITokenCollection */
-/* [unique][object][uuid][helpstring] */ 
-
-
-EXTERN_C const IID IID_ITokenCollection;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("22D8B4F2-F577-4adb-A335-C2AE88416FAB")
-    ITokenCollection : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE NumberOfTokens( 
-            __RPC__in ULONG *pCount) = 0;
-        
-        virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetToken( 
-            /* [in] */ ULONG i,
-            /* [out] */ 
-            __out_opt  ULONG *pBegin,
-            /* [out] */ 
-            __out_opt  ULONG *pLength,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppsz) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct ITokenCollectionVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ITokenCollection * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ITokenCollection * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ITokenCollection * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *NumberOfTokens )( 
-            ITokenCollection * This,
-            __RPC__in ULONG *pCount);
-        
-        /* [local] */ HRESULT ( STDMETHODCALLTYPE *GetToken )( 
-            ITokenCollection * This,
-            /* [in] */ ULONG i,
-            /* [out] */ 
-            __out_opt  ULONG *pBegin,
-            /* [out] */ 
-            __out_opt  ULONG *pLength,
-            /* [out] */ 
-            __deref_opt_out  LPWSTR *ppsz);
-        
-        END_INTERFACE
-    } ITokenCollectionVtbl;
-
-    interface ITokenCollection
-    {
-        CONST_VTBL struct ITokenCollectionVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ITokenCollection_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ITokenCollection_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ITokenCollection_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define ITokenCollection_NumberOfTokens(This,pCount)	\
-    ( (This)->lpVtbl -> NumberOfTokens(This,pCount) ) 
-
-#define ITokenCollection_GetToken(This,i,pBegin,pLength,ppsz)	\
-    ( (This)->lpVtbl -> GetToken(This,i,pBegin,pLength,ppsz) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __ITokenCollection_INTERFACE_DEFINED__ */
-
-
-/* interface __MIDL_itf_structuredquery_0000_0013 */
-/* [local] */ 
-
-typedef /* [public][public][v1_enum] */ 
-enum __MIDL___MIDL_itf_structuredquery_0000_0013_0001
-    {	NEC_LOW	= 0,
-	NEC_MEDIUM	= ( NEC_LOW + 1 ) ,
-	NEC_HIGH	= ( NEC_MEDIUM + 1 ) 
-    } 	NAMED_ENTITY_CERTAINTY;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0013_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_structuredquery_0000_0013_v0_0_s_ifspec;
-
-#ifndef __INamedEntityCollector_INTERFACE_DEFINED__
-#define __INamedEntityCollector_INTERFACE_DEFINED__
-
-/* interface INamedEntityCollector */
-/* [unique][object][uuid][helpstring] */ 
-
-
-EXTERN_C const IID IID_INamedEntityCollector;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("AF2440F6-8AFC-47d0-9A7F-396A0ACFB43D")
-    INamedEntityCollector : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Add( 
-            /* [in] */ ULONG beginSpan,
-            /* [in] */ ULONG endSpan,
-            /* [in] */ ULONG beginActual,
-            /* [in] */ ULONG endActual,
-            /* [in] */ __RPC__in_opt IEntity *pType,
-            /* [in] */ __RPC__in LPCWSTR pszValue,
-            /* [in] */ NAMED_ENTITY_CERTAINTY certainty) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct INamedEntityCollectorVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            INamedEntityCollector * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            INamedEntityCollector * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            INamedEntityCollector * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Add )( 
-            INamedEntityCollector * This,
-            /* [in] */ ULONG beginSpan,
-            /* [in] */ ULONG endSpan,
-            /* [in] */ ULONG beginActual,
-            /* [in] */ ULONG endActual,
-            /* [in] */ __RPC__in_opt IEntity *pType,
-            /* [in] */ __RPC__in LPCWSTR pszValue,
-            /* [in] */ NAMED_ENTITY_CERTAINTY certainty);
-        
-        END_INTERFACE
-    } INamedEntityCollectorVtbl;
-
-    interface INamedEntityCollector
-    {
-        CONST_VTBL struct INamedEntityCollectorVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define INamedEntityCollector_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define INamedEntityCollector_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define INamedEntityCollector_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define INamedEntityCollector_Add(This,beginSpan,endSpan,beginActual,endActual,pType,pszValue,certainty)	\
-    ( (This)->lpVtbl -> Add(This,beginSpan,endSpan,beginActual,endActual,pType,pszValue,certainty) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __INamedEntityCollector_INTERFACE_DEFINED__ */
-
-
-#ifndef __ISchemaLocalizerSupport_INTERFACE_DEFINED__
-#define __ISchemaLocalizerSupport_INTERFACE_DEFINED__
-
-/* interface ISchemaLocalizerSupport */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_ISchemaLocalizerSupport;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("CA3FDCA2-BFBE-4eed-90D7-0CAEF0A1BDA1")
-    ISchemaLocalizerSupport : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Localize( 
-            /* [in] */ __RPC__in LPCWSTR pszGlobalString,
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszLocalString) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct ISchemaLocalizerSupportVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ISchemaLocalizerSupport * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ISchemaLocalizerSupport * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ISchemaLocalizerSupport * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Localize )( 
-            ISchemaLocalizerSupport * This,
-            /* [in] */ __RPC__in LPCWSTR pszGlobalString,
-            /* [retval][out] */ __RPC__deref_out_opt LPWSTR *ppszLocalString);
-        
-        END_INTERFACE
-    } ISchemaLocalizerSupportVtbl;
-
-    interface ISchemaLocalizerSupport
-    {
-        CONST_VTBL struct ISchemaLocalizerSupportVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ISchemaLocalizerSupport_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ISchemaLocalizerSupport_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ISchemaLocalizerSupport_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define ISchemaLocalizerSupport_Localize(This,pszGlobalString,ppszLocalString)	\
-    ( (This)->lpVtbl -> Localize(This,pszGlobalString,ppszLocalString) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __ISchemaLocalizerSupport_INTERFACE_DEFINED__ */
-
-
-#ifndef __IQueryParserManager_INTERFACE_DEFINED__
-#define __IQueryParserManager_INTERFACE_DEFINED__
-
-/* interface IQueryParserManager */
-/* [unique][object][uuid] */ 
-
-
-EXTERN_C const IID IID_IQueryParserManager;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("A879E3C4-AF77-44fb-8F37-EBD1487CF920")
-    IQueryParserManager : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE CreateLoadedParser( 
-            /* [in] */ __RPC__in LPCWSTR pszCatalog,
-            /* [in] */ LANGID langidForKeywords,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppQueryParser) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE InitializeOptions( 
-            /* [in] */ BOOL fUnderstandNQS,
-            /* [in] */ BOOL fAutoWildCard,
-            /* [in] */ __RPC__in_opt IQueryParser *pQueryParser) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetOption( 
-            /* [in] */ QUERY_PARSER_MANAGER_OPTION option,
-            /* [in] */ __RPC__in const PROPVARIANT *pOptionValue) = 0;
-        
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IQueryParserManagerVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IQueryParserManager * This,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IQueryParserManager * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IQueryParserManager * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *CreateLoadedParser )( 
-            IQueryParserManager * This,
-            /* [in] */ __RPC__in LPCWSTR pszCatalog,
-            /* [in] */ LANGID langidForKeywords,
-            /* [in] */ __RPC__in REFIID riid,
-            /* [iid_is][retval][out] */ __RPC__deref_out_opt void **ppQueryParser);
-        
-        HRESULT ( STDMETHODCALLTYPE *InitializeOptions )( 
-            IQueryParserManager * This,
-            /* [in] */ BOOL fUnderstandNQS,
-            /* [in] */ BOOL fAutoWildCard,
-            /* [in] */ __RPC__in_opt IQueryParser *pQueryParser);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetOption )( 
-            IQueryParserManager * This,
-            /* [in] */ QUERY_PARSER_MANAGER_OPTION option,
-            /* [in] */ __RPC__in const PROPVARIANT *pOptionValue);
-        
-        END_INTERFACE
-    } IQueryParserManagerVtbl;
-
-    interface IQueryParserManager
-    {
-        CONST_VTBL struct IQueryParserManagerVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define IQueryParserManager_QueryInterface(This,riid,ppvObject)	\
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define IQueryParserManager_AddRef(This)	\
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define IQueryParserManager_Release(This)	\
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define IQueryParserManager_CreateLoadedParser(This,pszCatalog,langidForKeywords,riid,ppQueryParser)	\
-    ( (This)->lpVtbl -> CreateLoadedParser(This,pszCatalog,langidForKeywords,riid,ppQueryParser) ) 
-
-#define IQueryParserManager_InitializeOptions(This,fUnderstandNQS,fAutoWildCard,pQueryParser)	\
-    ( (This)->lpVtbl -> InitializeOptions(This,fUnderstandNQS,fAutoWildCard,pQueryParser) ) 
-
-#define IQueryParserManager_SetOption(This,option,pOptionValue)	\
-    ( (This)->lpVtbl -> SetOption(This,option,pOptionValue) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif 	/* C style interface */
-
-
-
-
-#endif 	/* __IQueryParserManager_INTERFACE_DEFINED__ */
-
-
-
-#ifndef __StructuredQuery1_LIBRARY_DEFINED__
-#define __StructuredQuery1_LIBRARY_DEFINED__
-
-/* library StructuredQuery1 */
-/* [version][uuid] */ 
-
-
-EXTERN_C const IID LIBID_StructuredQuery1;
-
-EXTERN_C const CLSID CLSID_QueryParser;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("B72F8FD8-0FAB-4dd9-BDBF-245A6CE1485B")
-QueryParser;
-#endif
-
-EXTERN_C const CLSID CLSID_NegationCondition;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("8DE9C74C-605A-4acd-BEE3-2B222AA2D23D")
-NegationCondition;
-#endif
-
-EXTERN_C const CLSID CLSID_CompoundCondition;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("116F8D13-101E-4fa5-84D4-FF8279381935")
-CompoundCondition;
-#endif
-
-EXTERN_C const CLSID CLSID_LeafCondition;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("52F15C89-5A17-48e1-BBCD-46A3F89C7CC2")
-LeafCondition;
-#endif
-
-EXTERN_C const CLSID CLSID_ConditionFactory;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("E03E85B0-7BE3-4000-BA98-6C13DE9FA486")
-ConditionFactory;
-#endif
-
-EXTERN_C const CLSID CLSID_Interval;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("D957171F-4BF9-4de2-BCD5-C70A7CA55836")
-Interval;
-#endif
-
-EXTERN_C const CLSID CLSID_QueryParserManager;
-
-#ifdef __cplusplus
-
-class DECLSPEC_UUID("5088B39A-29B4-4d9d-8245-4EE289222F66")
-QueryParserManager;
-#endif
-#endif /* __StructuredQuery1_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long             __RPC_USER  BSTR_UserSize(     unsigned long *, unsigned long            , BSTR * ); 
-unsigned char * __RPC_USER  BSTR_UserMarshal(  unsigned long *, unsigned char *, BSTR * ); 
-unsigned char * __RPC_USER  BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * ); 
-void                      __RPC_USER  BSTR_UserFree(     unsigned long *, BSTR * ); 
-
-unsigned long             __RPC_USER  LPSAFEARRAY_UserSize(     unsigned long *, unsigned long            , LPSAFEARRAY * ); 
-unsigned char * __RPC_USER  LPSAFEARRAY_UserMarshal(  unsigned long *, unsigned char *, LPSAFEARRAY * ); 
-unsigned char * __RPC_USER  LPSAFEARRAY_UserUnmarshal(unsigned long *, unsigned char *, LPSAFEARRAY * ); 
-void                      __RPC_USER  LPSAFEARRAY_UserFree(     unsigned long *, LPSAFEARRAY * ); 
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
-
diff -Naur src/hostapi/wasapi/pa_win_wasapi.c src/hostapi/wasapi/pa_win_wasapi.c
--- src/hostapi/wasapi/pa_win_wasapi.c	2016-10-30 02:23:04.000000000 +0100
+++ src/hostapi/wasapi/pa_win_wasapi.c	2017-05-29 22:20:15.000000000 +0200
@@ -54,16 +54,22 @@
 #endif
 
 // WASAPI
+// using adjustments for MinGW build from @mgeier/MXE
+// https://github.com/mxe/mxe/commit/f4bbc45682f021948bdaefd9fd476e2a04c4740f
 #include <mmreg.h>  // must be before other Wasapi headers
-#if defined(_MSC_VER) && (_MSC_VER >= 1400)
-	#include <Avrt.h>
+#if defined(_MSC_VER) && (_MSC_VER >= 1400) || defined(__MINGW64_VERSION_MAJOR) 
+	#include <avrt.h>
 	#define COBJMACROS
-	#include <Audioclient.h>
+	#include <audioclient.h>
 	#include <endpointvolume.h>
 	#define INITGUID // Avoid additional linkage of static libs, excessive code will be optimized out by the compiler
 	#include <mmdeviceapi.h>
-	#include <functiondiscoverykeys.h>
-    #include <devicetopology.h>	// Used to get IKsJackDescription interface
+#ifndef _MSC_VER
+        #include <functiondiscoverykeys_devpkey.h>
+#endif
+        #include <functiondiscoverykeys.h>
+        #include <mmdeviceapi.h>
+        #include <devicetopology.h>	// Used to get IKsJackDescription interface
 	#undef INITGUID
 #endif
 #ifndef __MWERKS__
