zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

devicetopology.h (108576B) - Raw


      1 /*** Autogenerated by WIDL 10.4 from include/devicetopology.idl - Do not edit ***/
      2 
      3 #ifdef _WIN32
      4 #ifndef __REQUIRED_RPCNDR_H_VERSION__
      5 #define __REQUIRED_RPCNDR_H_VERSION__ 475
      6 #endif
      7 #include <rpc.h>
      8 #include <rpcndr.h>
      9 #endif
     10 
     11 #ifndef COM_NO_WINDOWS_H
     12 #include <windows.h>
     13 #include <ole2.h>
     14 #endif
     15 
     16 #ifndef __devicetopology_h__
     17 #define __devicetopology_h__
     18 
     19 /* Forward declarations */
     20 
     21 #ifndef __IKsControl_FWD_DEFINED__
     22 #define __IKsControl_FWD_DEFINED__
     23 typedef interface IKsControl IKsControl;
     24 #ifdef __cplusplus
     25 interface IKsControl;
     26 #endif /* __cplusplus */
     27 #endif
     28 
     29 #ifndef __IPerChannelDbLevel_FWD_DEFINED__
     30 #define __IPerChannelDbLevel_FWD_DEFINED__
     31 typedef interface IPerChannelDbLevel IPerChannelDbLevel;
     32 #ifdef __cplusplus
     33 interface IPerChannelDbLevel;
     34 #endif /* __cplusplus */
     35 #endif
     36 
     37 #ifndef __IAudioVolumeLevel_FWD_DEFINED__
     38 #define __IAudioVolumeLevel_FWD_DEFINED__
     39 typedef interface IAudioVolumeLevel IAudioVolumeLevel;
     40 #ifdef __cplusplus
     41 interface IAudioVolumeLevel;
     42 #endif /* __cplusplus */
     43 #endif
     44 
     45 #ifndef __IAudioChannelConfig_FWD_DEFINED__
     46 #define __IAudioChannelConfig_FWD_DEFINED__
     47 typedef interface IAudioChannelConfig IAudioChannelConfig;
     48 #ifdef __cplusplus
     49 interface IAudioChannelConfig;
     50 #endif /* __cplusplus */
     51 #endif
     52 
     53 #ifndef __IAudioLoudness_FWD_DEFINED__
     54 #define __IAudioLoudness_FWD_DEFINED__
     55 typedef interface IAudioLoudness IAudioLoudness;
     56 #ifdef __cplusplus
     57 interface IAudioLoudness;
     58 #endif /* __cplusplus */
     59 #endif
     60 
     61 #ifndef __IAudioInputSelector_FWD_DEFINED__
     62 #define __IAudioInputSelector_FWD_DEFINED__
     63 typedef interface IAudioInputSelector IAudioInputSelector;
     64 #ifdef __cplusplus
     65 interface IAudioInputSelector;
     66 #endif /* __cplusplus */
     67 #endif
     68 
     69 #ifndef __IAudioOutputSelector_FWD_DEFINED__
     70 #define __IAudioOutputSelector_FWD_DEFINED__
     71 typedef interface IAudioOutputSelector IAudioOutputSelector;
     72 #ifdef __cplusplus
     73 interface IAudioOutputSelector;
     74 #endif /* __cplusplus */
     75 #endif
     76 
     77 #ifndef __IAudioMute_FWD_DEFINED__
     78 #define __IAudioMute_FWD_DEFINED__
     79 typedef interface IAudioMute IAudioMute;
     80 #ifdef __cplusplus
     81 interface IAudioMute;
     82 #endif /* __cplusplus */
     83 #endif
     84 
     85 #ifndef __IAudioBass_FWD_DEFINED__
     86 #define __IAudioBass_FWD_DEFINED__
     87 typedef interface IAudioBass IAudioBass;
     88 #ifdef __cplusplus
     89 interface IAudioBass;
     90 #endif /* __cplusplus */
     91 #endif
     92 
     93 #ifndef __IAudioMidRange_FWD_DEFINED__
     94 #define __IAudioMidRange_FWD_DEFINED__
     95 typedef interface IAudioMidRange IAudioMidRange;
     96 #ifdef __cplusplus
     97 interface IAudioMidRange;
     98 #endif /* __cplusplus */
     99 #endif
    100 
    101 #ifndef __IAudioTreble_FWD_DEFINED__
    102 #define __IAudioTreble_FWD_DEFINED__
    103 typedef interface IAudioTreble IAudioTreble;
    104 #ifdef __cplusplus
    105 interface IAudioTreble;
    106 #endif /* __cplusplus */
    107 #endif
    108 
    109 #ifndef __IAudioAutoGainControl_FWD_DEFINED__
    110 #define __IAudioAutoGainControl_FWD_DEFINED__
    111 typedef interface IAudioAutoGainControl IAudioAutoGainControl;
    112 #ifdef __cplusplus
    113 interface IAudioAutoGainControl;
    114 #endif /* __cplusplus */
    115 #endif
    116 
    117 #ifndef __IAudioPeakMeter_FWD_DEFINED__
    118 #define __IAudioPeakMeter_FWD_DEFINED__
    119 typedef interface IAudioPeakMeter IAudioPeakMeter;
    120 #ifdef __cplusplus
    121 interface IAudioPeakMeter;
    122 #endif /* __cplusplus */
    123 #endif
    124 
    125 #ifndef __IDeviceSpecificProperty_FWD_DEFINED__
    126 #define __IDeviceSpecificProperty_FWD_DEFINED__
    127 typedef interface IDeviceSpecificProperty IDeviceSpecificProperty;
    128 #ifdef __cplusplus
    129 interface IDeviceSpecificProperty;
    130 #endif /* __cplusplus */
    131 #endif
    132 
    133 #ifndef __IKsFormatSupport_FWD_DEFINED__
    134 #define __IKsFormatSupport_FWD_DEFINED__
    135 typedef interface IKsFormatSupport IKsFormatSupport;
    136 #ifdef __cplusplus
    137 interface IKsFormatSupport;
    138 #endif /* __cplusplus */
    139 #endif
    140 
    141 #ifndef __IKsJackDescription_FWD_DEFINED__
    142 #define __IKsJackDescription_FWD_DEFINED__
    143 typedef interface IKsJackDescription IKsJackDescription;
    144 #ifdef __cplusplus
    145 interface IKsJackDescription;
    146 #endif /* __cplusplus */
    147 #endif
    148 
    149 #ifndef __IKsJackDescription2_FWD_DEFINED__
    150 #define __IKsJackDescription2_FWD_DEFINED__
    151 typedef interface IKsJackDescription2 IKsJackDescription2;
    152 #ifdef __cplusplus
    153 interface IKsJackDescription2;
    154 #endif /* __cplusplus */
    155 #endif
    156 
    157 #ifndef __IKsJackSinkInformation_FWD_DEFINED__
    158 #define __IKsJackSinkInformation_FWD_DEFINED__
    159 typedef interface IKsJackSinkInformation IKsJackSinkInformation;
    160 #ifdef __cplusplus
    161 interface IKsJackSinkInformation;
    162 #endif /* __cplusplus */
    163 #endif
    164 
    165 #ifndef __IPartsList_FWD_DEFINED__
    166 #define __IPartsList_FWD_DEFINED__
    167 typedef interface IPartsList IPartsList;
    168 #ifdef __cplusplus
    169 interface IPartsList;
    170 #endif /* __cplusplus */
    171 #endif
    172 
    173 #ifndef __IPart_FWD_DEFINED__
    174 #define __IPart_FWD_DEFINED__
    175 typedef interface IPart IPart;
    176 #ifdef __cplusplus
    177 interface IPart;
    178 #endif /* __cplusplus */
    179 #endif
    180 
    181 #ifndef __IConnector_FWD_DEFINED__
    182 #define __IConnector_FWD_DEFINED__
    183 typedef interface IConnector IConnector;
    184 #ifdef __cplusplus
    185 interface IConnector;
    186 #endif /* __cplusplus */
    187 #endif
    188 
    189 #ifndef __ISubUnit_FWD_DEFINED__
    190 #define __ISubUnit_FWD_DEFINED__
    191 typedef interface ISubUnit ISubUnit;
    192 #ifdef __cplusplus
    193 interface ISubUnit;
    194 #endif /* __cplusplus */
    195 #endif
    196 
    197 #ifndef __IControlInterface_FWD_DEFINED__
    198 #define __IControlInterface_FWD_DEFINED__
    199 typedef interface IControlInterface IControlInterface;
    200 #ifdef __cplusplus
    201 interface IControlInterface;
    202 #endif /* __cplusplus */
    203 #endif
    204 
    205 #ifndef __IControlChangeNotify_FWD_DEFINED__
    206 #define __IControlChangeNotify_FWD_DEFINED__
    207 typedef interface IControlChangeNotify IControlChangeNotify;
    208 #ifdef __cplusplus
    209 interface IControlChangeNotify;
    210 #endif /* __cplusplus */
    211 #endif
    212 
    213 #ifndef __IDeviceTopology_FWD_DEFINED__
    214 #define __IDeviceTopology_FWD_DEFINED__
    215 typedef interface IDeviceTopology IDeviceTopology;
    216 #ifdef __cplusplus
    217 interface IDeviceTopology;
    218 #endif /* __cplusplus */
    219 #endif
    220 
    221 #ifndef __DeviceTopology_FWD_DEFINED__
    222 #define __DeviceTopology_FWD_DEFINED__
    223 #ifdef __cplusplus
    224 typedef class DeviceTopology DeviceTopology;
    225 #else
    226 typedef struct DeviceTopology DeviceTopology;
    227 #endif /* defined __cplusplus */
    228 #endif /* defined __DeviceTopology_FWD_DEFINED__ */
    229 
    230 /* Headers for imported files */
    231 
    232 #include <oaidl.h>
    233 #include <ocidl.h>
    234 #include <propidl.h>
    235 
    236 #ifdef __cplusplus
    237 extern "C" {
    238 #endif
    239 
    240 #ifndef __IPart_FWD_DEFINED__
    241 #define __IPart_FWD_DEFINED__
    242 typedef interface IPart IPart;
    243 #ifdef __cplusplus
    244 interface IPart;
    245 #endif /* __cplusplus */
    246 #endif
    247 
    248 #ifndef __IControlInterface_FWD_DEFINED__
    249 #define __IControlInterface_FWD_DEFINED__
    250 typedef interface IControlInterface IControlInterface;
    251 #ifdef __cplusplus
    252 interface IControlInterface;
    253 #endif /* __cplusplus */
    254 #endif
    255 
    256 #ifndef __IDeviceTopology_FWD_DEFINED__
    257 #define __IDeviceTopology_FWD_DEFINED__
    258 typedef interface IDeviceTopology IDeviceTopology;
    259 #ifdef __cplusplus
    260 interface IDeviceTopology;
    261 #endif /* __cplusplus */
    262 #endif
    263 
    264 #ifndef __IControlChangeNotify_FWD_DEFINED__
    265 #define __IControlChangeNotify_FWD_DEFINED__
    266 typedef interface IControlChangeNotify IControlChangeNotify;
    267 #ifdef __cplusplus
    268 interface IControlChangeNotify;
    269 #endif /* __cplusplus */
    270 #endif
    271 
    272 #ifndef E_NOTFOUND
    273 #define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
    274 #endif
    275 #define DEVTOPO_HARDWARE_INITIATED_EVENTCONTEXT 0x64726148 /* 'draH' */
    276 DEFINE_GUID(EVENTCONTEXT_VOLUMESLIDER, 0xe2c2e9de, 0x09b1, 0x4b04,0x84,0xe5, 0x07, 0x93, 0x12, 0x25, 0xee, 0x04);
    277 #define _IKsControl_
    278 #include <ks.h>
    279 #include <ksmedia.h>
    280 #ifndef _KS_
    281 typedef struct __WIDL_devicetopology_generated_name_00000020 {
    282     ULONG FormatSize;
    283     ULONG Flags;
    284     ULONG SampleSize;
    285     ULONG Reserved;
    286     GUID MajorFormat;
    287     GUID SubFormat;
    288     GUID Specifier;
    289 } KSDATAFORMAT;
    290 typedef KSDATAFORMAT *PKSDATAFORMAT;
    291 typedef struct __WIDL_devicetopology_generated_name_00000021 {
    292     __C89_NAMELESS union {
    293         __C89_NAMELESS struct {
    294             GUID Set;
    295             ULONG Id;
    296             ULONG Flags;
    297         } __C89_NAMELESSSTRUCTNAME;
    298         LONGLONG Alignment;
    299     } __C89_NAMELESSUNIONNAME;
    300 } KSIDENTIFIER;
    301 typedef KSIDENTIFIER KSPROPERTY;
    302 typedef KSIDENTIFIER *PKSPROPERTY;
    303 typedef KSIDENTIFIER KSMETHOD;
    304 typedef KSIDENTIFIER *PKSMETHOD;
    305 typedef KSIDENTIFIER KSEVENT;
    306 typedef KSIDENTIFIER *PKSEVENT;
    307 typedef enum __WIDL_devicetopology_generated_name_00000022 {
    308     eConnTypeUnknown = 0,
    309     eConnType3Point5mm = 1,
    310     eConnTypeQuarter = 2,
    311     eConnTypeAtapiInternal = 3,
    312     eConnTypeRCA = 4,
    313     eConnTypeOptical = 5,
    314     eConnTypeOtherDigital = 6,
    315     eConnTypeOtherAnalog = 7,
    316     eConnTypeMultichannelAnalogDIN = 8,
    317     eConnTypeXlrProfessional = 9,
    318     eConnTypeRJ11Modem = 10,
    319     eConnTypeCombination = 11
    320 } EPcxConnectionType;
    321 typedef enum __WIDL_devicetopology_generated_name_00000023 {
    322     eGeoLocRear = 1,
    323     eGeoLocFront = 2,
    324     eGeoLocLeft = 3,
    325     eGeoLocRight = 4,
    326     eGeoLocTop = 5,
    327     eGeoLocBottom = 6,
    328     eGeoLocRearPanel = 7,
    329     eGeoLocRiser = 8,
    330     eGeoLocInsideMobileLid = 9,
    331     eGeoLocDrivebay = 10,
    332     eGeoLocHDMI = 11,
    333     eGeoLocOutsideMobileLid = 12,
    334     eGeoLocATAPI = 13,
    335     eGeoLocReserved5 = 14,
    336     eGeoLocReserved6 = 15
    337 } EPcxGeoLocation;
    338 typedef enum __WIDL_devicetopology_generated_name_00000024 {
    339     eGenLocPrimaryBox = 0,
    340     eGenLocInternal = 1,
    341     eGenLocSeparate = 2,
    342     eGenLocOther = 3
    343 } EPcxGenLocation;
    344 typedef enum __WIDL_devicetopology_generated_name_00000025 {
    345     ePortConnJack = 0,
    346     ePortConnIntegratedDevice = 1,
    347     ePortConnBothIntegratedAndJack = 2,
    348     ePortConnUnknown = 3
    349 } EPxcPortConnection;
    350 typedef struct __WIDL_devicetopology_generated_name_00000026 {
    351     DWORD ChannelMapping;
    352     COLORREF Color;
    353     EPcxConnectionType ConnectionType;
    354     EPcxGeoLocation GeoLocation;
    355     EPcxGenLocation GenLocation;
    356     EPxcPortConnection PortConnection;
    357     WINBOOL IsConnected;
    358 } KSJACK_DESCRIPTION;
    359 typedef KSJACK_DESCRIPTION *PKSJACK_DESCRIPTION;
    360 typedef struct _LUID {
    361     DWORD LowPart;
    362     LONG HighPart;
    363 } LUID;
    364 typedef struct _LUID *PLUID;
    365 typedef enum __WIDL_devicetopology_generated_name_00000027 {
    366     KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
    367     KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT = 1
    368 } KSJACK_SINK_CONNECTIONTYPE;
    369 typedef struct _tagKSJACK_SINK_INFORMATION {
    370     KSJACK_SINK_CONNECTIONTYPE ConnType;
    371     WORD ManufacturerId;
    372     WORD ProductId;
    373     WORD AudioLatency;
    374     WINBOOL HDCPCapable;
    375     WINBOOL AICapable;
    376     UCHAR SinkDescriptionLength;
    377     WCHAR SinkDescription[32];
    378     LUID PortId;
    379 } KSJACK_SINK_INFORMATION;
    380 typedef struct _tagKSJACK_DESCRIPTION2 {
    381     DWORD DeviceStateInfo;
    382     DWORD JackCapabilities;
    383 } KSJACK_DESCRIPTION2;
    384 typedef struct _tagKSJACK_DESCRIPTION2 *PKSJACK_DESCRIPTION2;
    385 #endif
    386 typedef enum __WIDL_devicetopology_generated_name_00000028 {
    387     In = 0,
    388     Out = 1
    389 } DataFlow;
    390 typedef enum __WIDL_devicetopology_generated_name_00000029 {
    391     Connector = 0,
    392     Subunit = 1
    393 } PartType;
    394 typedef enum __WIDL_devicetopology_generated_name_0000002A {
    395     Unknown_Connector = 0,
    396     Physical_Internal = 1,
    397     Physical_External = 2,
    398     Software_IO = 3,
    399     Software_Fixed = 4,
    400     Network = 5
    401 } ConnectorType;
    402 /*****************************************************************************
    403  * IKsControl interface
    404  */
    405 #ifndef __IKsControl_INTERFACE_DEFINED__
    406 #define __IKsControl_INTERFACE_DEFINED__
    407 
    408 DEFINE_GUID(IID_IKsControl, 0x28f54685, 0x06fd, 0x11d2, 0xb2,0x7a, 0x00,0xa0,0xc9,0x22,0x31,0x96);
    409 #if defined(__cplusplus) && !defined(CINTERFACE)
    410 MIDL_INTERFACE("28f54685-06fd-11d2-b27a-00a0c9223196")
    411 IKsControl : public IUnknown
    412 {
    413     virtual HRESULT STDMETHODCALLTYPE KsProperty(
    414         PKSPROPERTY Property,
    415         ULONG PropertyLength,
    416         void *PropertyData,
    417         ULONG DataLength,
    418         ULONG *BytesReturned) = 0;
    419 
    420     virtual HRESULT STDMETHODCALLTYPE KsMethod(
    421         PKSMETHOD Method,
    422         ULONG MethodLength,
    423         void *MethodData,
    424         ULONG DataLength,
    425         ULONG *BytesReturned) = 0;
    426 
    427     virtual HRESULT STDMETHODCALLTYPE KsEvent(
    428         PKSEVENT Event,
    429         ULONG EventLength,
    430         void *EventData,
    431         ULONG DataLength,
    432         ULONG *BytesReturned) = 0;
    433 
    434 };
    435 #ifdef __CRT_UUID_DECL
    436 __CRT_UUID_DECL(IKsControl, 0x28f54685, 0x06fd, 0x11d2, 0xb2,0x7a, 0x00,0xa0,0xc9,0x22,0x31,0x96)
    437 #endif
    438 #else
    439 typedef struct IKsControlVtbl {
    440     BEGIN_INTERFACE
    441 
    442     /*** IUnknown methods ***/
    443     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    444         IKsControl *This,
    445         REFIID riid,
    446         void **ppvObject);
    447 
    448     ULONG (STDMETHODCALLTYPE *AddRef)(
    449         IKsControl *This);
    450 
    451     ULONG (STDMETHODCALLTYPE *Release)(
    452         IKsControl *This);
    453 
    454     /*** IKsControl methods ***/
    455     HRESULT (STDMETHODCALLTYPE *KsProperty)(
    456         IKsControl *This,
    457         PKSPROPERTY Property,
    458         ULONG PropertyLength,
    459         void *PropertyData,
    460         ULONG DataLength,
    461         ULONG *BytesReturned);
    462 
    463     HRESULT (STDMETHODCALLTYPE *KsMethod)(
    464         IKsControl *This,
    465         PKSMETHOD Method,
    466         ULONG MethodLength,
    467         void *MethodData,
    468         ULONG DataLength,
    469         ULONG *BytesReturned);
    470 
    471     HRESULT (STDMETHODCALLTYPE *KsEvent)(
    472         IKsControl *This,
    473         PKSEVENT Event,
    474         ULONG EventLength,
    475         void *EventData,
    476         ULONG DataLength,
    477         ULONG *BytesReturned);
    478 
    479     END_INTERFACE
    480 } IKsControlVtbl;
    481 
    482 interface IKsControl {
    483     CONST_VTBL IKsControlVtbl* lpVtbl;
    484 };
    485 
    486 #ifdef COBJMACROS
    487 #ifndef WIDL_C_INLINE_WRAPPERS
    488 /*** IUnknown methods ***/
    489 #define IKsControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    490 #define IKsControl_AddRef(This) (This)->lpVtbl->AddRef(This)
    491 #define IKsControl_Release(This) (This)->lpVtbl->Release(This)
    492 /*** IKsControl methods ***/
    493 #define IKsControl_KsProperty(This,Property,PropertyLength,PropertyData,DataLength,BytesReturned) (This)->lpVtbl->KsProperty(This,Property,PropertyLength,PropertyData,DataLength,BytesReturned)
    494 #define IKsControl_KsMethod(This,Method,MethodLength,MethodData,DataLength,BytesReturned) (This)->lpVtbl->KsMethod(This,Method,MethodLength,MethodData,DataLength,BytesReturned)
    495 #define IKsControl_KsEvent(This,Event,EventLength,EventData,DataLength,BytesReturned) (This)->lpVtbl->KsEvent(This,Event,EventLength,EventData,DataLength,BytesReturned)
    496 #else
    497 /*** IUnknown methods ***/
    498 static inline HRESULT IKsControl_QueryInterface(IKsControl* This,REFIID riid,void **ppvObject) {
    499     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    500 }
    501 static inline ULONG IKsControl_AddRef(IKsControl* This) {
    502     return This->lpVtbl->AddRef(This);
    503 }
    504 static inline ULONG IKsControl_Release(IKsControl* This) {
    505     return This->lpVtbl->Release(This);
    506 }
    507 /*** IKsControl methods ***/
    508 static inline HRESULT IKsControl_KsProperty(IKsControl* This,PKSPROPERTY Property,ULONG PropertyLength,void *PropertyData,ULONG DataLength,ULONG *BytesReturned) {
    509     return This->lpVtbl->KsProperty(This,Property,PropertyLength,PropertyData,DataLength,BytesReturned);
    510 }
    511 static inline HRESULT IKsControl_KsMethod(IKsControl* This,PKSMETHOD Method,ULONG MethodLength,void *MethodData,ULONG DataLength,ULONG *BytesReturned) {
    512     return This->lpVtbl->KsMethod(This,Method,MethodLength,MethodData,DataLength,BytesReturned);
    513 }
    514 static inline HRESULT IKsControl_KsEvent(IKsControl* This,PKSEVENT Event,ULONG EventLength,void *EventData,ULONG DataLength,ULONG *BytesReturned) {
    515     return This->lpVtbl->KsEvent(This,Event,EventLength,EventData,DataLength,BytesReturned);
    516 }
    517 #endif
    518 #endif
    519 
    520 #endif
    521 
    522 
    523 #endif  /* __IKsControl_INTERFACE_DEFINED__ */
    524 
    525 /*****************************************************************************
    526  * IPerChannelDbLevel interface
    527  */
    528 #ifndef __IPerChannelDbLevel_INTERFACE_DEFINED__
    529 #define __IPerChannelDbLevel_INTERFACE_DEFINED__
    530 
    531 DEFINE_GUID(IID_IPerChannelDbLevel, 0xc2f8e001, 0xf205, 0x4bc9, 0x99,0xbc, 0xc1,0x3b,0x1e,0x04,0x8c,0xcb);
    532 #if defined(__cplusplus) && !defined(CINTERFACE)
    533 MIDL_INTERFACE("c2f8e001-f205-4bc9-99bc-c13b1e048ccb")
    534 IPerChannelDbLevel : public IUnknown
    535 {
    536     virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
    537         UINT *pcChannels) = 0;
    538 
    539     virtual HRESULT STDMETHODCALLTYPE GetLevelRange(
    540         UINT nChannel,
    541         float *pfMinLevelDB,
    542         float *pfMaxLevelDB,
    543         float *pfStepping) = 0;
    544 
    545     virtual HRESULT STDMETHODCALLTYPE GetLevel(
    546         UINT nChannel,
    547         float *pfLevelDB) = 0;
    548 
    549     virtual HRESULT STDMETHODCALLTYPE SetLevel(
    550         UINT nChannel,
    551         float fLevelDB,
    552         LPCGUID pguidEventContext) = 0;
    553 
    554     virtual HRESULT STDMETHODCALLTYPE SetLevelUniform(
    555         float fLevelDB,
    556         LPCGUID pguidEventContext) = 0;
    557 
    558     virtual HRESULT STDMETHODCALLTYPE SetLevelAllChannels(
    559         float *aLevelsDB,
    560         ULONG cChannels,
    561         LPCGUID pguidEventContext) = 0;
    562 
    563 };
    564 #ifdef __CRT_UUID_DECL
    565 __CRT_UUID_DECL(IPerChannelDbLevel, 0xc2f8e001, 0xf205, 0x4bc9, 0x99,0xbc, 0xc1,0x3b,0x1e,0x04,0x8c,0xcb)
    566 #endif
    567 #else
    568 typedef struct IPerChannelDbLevelVtbl {
    569     BEGIN_INTERFACE
    570 
    571     /*** IUnknown methods ***/
    572     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    573         IPerChannelDbLevel *This,
    574         REFIID riid,
    575         void **ppvObject);
    576 
    577     ULONG (STDMETHODCALLTYPE *AddRef)(
    578         IPerChannelDbLevel *This);
    579 
    580     ULONG (STDMETHODCALLTYPE *Release)(
    581         IPerChannelDbLevel *This);
    582 
    583     /*** IPerChannelDbLevel methods ***/
    584     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
    585         IPerChannelDbLevel *This,
    586         UINT *pcChannels);
    587 
    588     HRESULT (STDMETHODCALLTYPE *GetLevelRange)(
    589         IPerChannelDbLevel *This,
    590         UINT nChannel,
    591         float *pfMinLevelDB,
    592         float *pfMaxLevelDB,
    593         float *pfStepping);
    594 
    595     HRESULT (STDMETHODCALLTYPE *GetLevel)(
    596         IPerChannelDbLevel *This,
    597         UINT nChannel,
    598         float *pfLevelDB);
    599 
    600     HRESULT (STDMETHODCALLTYPE *SetLevel)(
    601         IPerChannelDbLevel *This,
    602         UINT nChannel,
    603         float fLevelDB,
    604         LPCGUID pguidEventContext);
    605 
    606     HRESULT (STDMETHODCALLTYPE *SetLevelUniform)(
    607         IPerChannelDbLevel *This,
    608         float fLevelDB,
    609         LPCGUID pguidEventContext);
    610 
    611     HRESULT (STDMETHODCALLTYPE *SetLevelAllChannels)(
    612         IPerChannelDbLevel *This,
    613         float *aLevelsDB,
    614         ULONG cChannels,
    615         LPCGUID pguidEventContext);
    616 
    617     END_INTERFACE
    618 } IPerChannelDbLevelVtbl;
    619 
    620 interface IPerChannelDbLevel {
    621     CONST_VTBL IPerChannelDbLevelVtbl* lpVtbl;
    622 };
    623 
    624 #ifdef COBJMACROS
    625 #ifndef WIDL_C_INLINE_WRAPPERS
    626 /*** IUnknown methods ***/
    627 #define IPerChannelDbLevel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    628 #define IPerChannelDbLevel_AddRef(This) (This)->lpVtbl->AddRef(This)
    629 #define IPerChannelDbLevel_Release(This) (This)->lpVtbl->Release(This)
    630 /*** IPerChannelDbLevel methods ***/
    631 #define IPerChannelDbLevel_GetChannelCount(This,pcChannels) (This)->lpVtbl->GetChannelCount(This,pcChannels)
    632 #define IPerChannelDbLevel_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) (This)->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)
    633 #define IPerChannelDbLevel_GetLevel(This,nChannel,pfLevelDB) (This)->lpVtbl->GetLevel(This,nChannel,pfLevelDB)
    634 #define IPerChannelDbLevel_SetLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext)
    635 #define IPerChannelDbLevel_SetLevelUniform(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext)
    636 #define IPerChannelDbLevel_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) (This)->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)
    637 #else
    638 /*** IUnknown methods ***/
    639 static inline HRESULT IPerChannelDbLevel_QueryInterface(IPerChannelDbLevel* This,REFIID riid,void **ppvObject) {
    640     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    641 }
    642 static inline ULONG IPerChannelDbLevel_AddRef(IPerChannelDbLevel* This) {
    643     return This->lpVtbl->AddRef(This);
    644 }
    645 static inline ULONG IPerChannelDbLevel_Release(IPerChannelDbLevel* This) {
    646     return This->lpVtbl->Release(This);
    647 }
    648 /*** IPerChannelDbLevel methods ***/
    649 static inline HRESULT IPerChannelDbLevel_GetChannelCount(IPerChannelDbLevel* This,UINT *pcChannels) {
    650     return This->lpVtbl->GetChannelCount(This,pcChannels);
    651 }
    652 static inline HRESULT IPerChannelDbLevel_GetLevelRange(IPerChannelDbLevel* This,UINT nChannel,float *pfMinLevelDB,float *pfMaxLevelDB,float *pfStepping) {
    653     return This->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping);
    654 }
    655 static inline HRESULT IPerChannelDbLevel_GetLevel(IPerChannelDbLevel* This,UINT nChannel,float *pfLevelDB) {
    656     return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
    657 }
    658 static inline HRESULT IPerChannelDbLevel_SetLevel(IPerChannelDbLevel* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
    659     return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
    660 }
    661 static inline HRESULT IPerChannelDbLevel_SetLevelUniform(IPerChannelDbLevel* This,float fLevelDB,LPCGUID pguidEventContext) {
    662     return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
    663 }
    664 static inline HRESULT IPerChannelDbLevel_SetLevelAllChannels(IPerChannelDbLevel* This,float *aLevelsDB,ULONG cChannels,LPCGUID pguidEventContext) {
    665     return This->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext);
    666 }
    667 #endif
    668 #endif
    669 
    670 #endif
    671 
    672 
    673 #endif  /* __IPerChannelDbLevel_INTERFACE_DEFINED__ */
    674 
    675 /*****************************************************************************
    676  * IAudioVolumeLevel interface
    677  */
    678 #ifndef __IAudioVolumeLevel_INTERFACE_DEFINED__
    679 #define __IAudioVolumeLevel_INTERFACE_DEFINED__
    680 
    681 DEFINE_GUID(IID_IAudioVolumeLevel, 0x7fb7b48f, 0x531d, 0x44a2, 0xbc,0xb3, 0x5a,0xd5,0xa1,0x34,0xb3,0xdc);
    682 #if defined(__cplusplus) && !defined(CINTERFACE)
    683 MIDL_INTERFACE("7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc")
    684 IAudioVolumeLevel : public IPerChannelDbLevel
    685 {
    686 };
    687 #ifdef __CRT_UUID_DECL
    688 __CRT_UUID_DECL(IAudioVolumeLevel, 0x7fb7b48f, 0x531d, 0x44a2, 0xbc,0xb3, 0x5a,0xd5,0xa1,0x34,0xb3,0xdc)
    689 #endif
    690 #else
    691 typedef struct IAudioVolumeLevelVtbl {
    692     BEGIN_INTERFACE
    693 
    694     /*** IUnknown methods ***/
    695     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    696         IAudioVolumeLevel *This,
    697         REFIID riid,
    698         void **ppvObject);
    699 
    700     ULONG (STDMETHODCALLTYPE *AddRef)(
    701         IAudioVolumeLevel *This);
    702 
    703     ULONG (STDMETHODCALLTYPE *Release)(
    704         IAudioVolumeLevel *This);
    705 
    706     /*** IPerChannelDbLevel methods ***/
    707     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
    708         IAudioVolumeLevel *This,
    709         UINT *pcChannels);
    710 
    711     HRESULT (STDMETHODCALLTYPE *GetLevelRange)(
    712         IAudioVolumeLevel *This,
    713         UINT nChannel,
    714         float *pfMinLevelDB,
    715         float *pfMaxLevelDB,
    716         float *pfStepping);
    717 
    718     HRESULT (STDMETHODCALLTYPE *GetLevel)(
    719         IAudioVolumeLevel *This,
    720         UINT nChannel,
    721         float *pfLevelDB);
    722 
    723     HRESULT (STDMETHODCALLTYPE *SetLevel)(
    724         IAudioVolumeLevel *This,
    725         UINT nChannel,
    726         float fLevelDB,
    727         LPCGUID pguidEventContext);
    728 
    729     HRESULT (STDMETHODCALLTYPE *SetLevelUniform)(
    730         IAudioVolumeLevel *This,
    731         float fLevelDB,
    732         LPCGUID pguidEventContext);
    733 
    734     HRESULT (STDMETHODCALLTYPE *SetLevelAllChannels)(
    735         IAudioVolumeLevel *This,
    736         float *aLevelsDB,
    737         ULONG cChannels,
    738         LPCGUID pguidEventContext);
    739 
    740     END_INTERFACE
    741 } IAudioVolumeLevelVtbl;
    742 
    743 interface IAudioVolumeLevel {
    744     CONST_VTBL IAudioVolumeLevelVtbl* lpVtbl;
    745 };
    746 
    747 #ifdef COBJMACROS
    748 #ifndef WIDL_C_INLINE_WRAPPERS
    749 /*** IUnknown methods ***/
    750 #define IAudioVolumeLevel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    751 #define IAudioVolumeLevel_AddRef(This) (This)->lpVtbl->AddRef(This)
    752 #define IAudioVolumeLevel_Release(This) (This)->lpVtbl->Release(This)
    753 /*** IPerChannelDbLevel methods ***/
    754 #define IAudioVolumeLevel_GetChannelCount(This,pcChannels) (This)->lpVtbl->GetChannelCount(This,pcChannels)
    755 #define IAudioVolumeLevel_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) (This)->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)
    756 #define IAudioVolumeLevel_GetLevel(This,nChannel,pfLevelDB) (This)->lpVtbl->GetLevel(This,nChannel,pfLevelDB)
    757 #define IAudioVolumeLevel_SetLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext)
    758 #define IAudioVolumeLevel_SetLevelUniform(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext)
    759 #define IAudioVolumeLevel_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) (This)->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)
    760 #else
    761 /*** IUnknown methods ***/
    762 static inline HRESULT IAudioVolumeLevel_QueryInterface(IAudioVolumeLevel* This,REFIID riid,void **ppvObject) {
    763     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    764 }
    765 static inline ULONG IAudioVolumeLevel_AddRef(IAudioVolumeLevel* This) {
    766     return This->lpVtbl->AddRef(This);
    767 }
    768 static inline ULONG IAudioVolumeLevel_Release(IAudioVolumeLevel* This) {
    769     return This->lpVtbl->Release(This);
    770 }
    771 /*** IPerChannelDbLevel methods ***/
    772 static inline HRESULT IAudioVolumeLevel_GetChannelCount(IAudioVolumeLevel* This,UINT *pcChannels) {
    773     return This->lpVtbl->GetChannelCount(This,pcChannels);
    774 }
    775 static inline HRESULT IAudioVolumeLevel_GetLevelRange(IAudioVolumeLevel* This,UINT nChannel,float *pfMinLevelDB,float *pfMaxLevelDB,float *pfStepping) {
    776     return This->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping);
    777 }
    778 static inline HRESULT IAudioVolumeLevel_GetLevel(IAudioVolumeLevel* This,UINT nChannel,float *pfLevelDB) {
    779     return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
    780 }
    781 static inline HRESULT IAudioVolumeLevel_SetLevel(IAudioVolumeLevel* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
    782     return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
    783 }
    784 static inline HRESULT IAudioVolumeLevel_SetLevelUniform(IAudioVolumeLevel* This,float fLevelDB,LPCGUID pguidEventContext) {
    785     return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
    786 }
    787 static inline HRESULT IAudioVolumeLevel_SetLevelAllChannels(IAudioVolumeLevel* This,float *aLevelsDB,ULONG cChannels,LPCGUID pguidEventContext) {
    788     return This->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext);
    789 }
    790 #endif
    791 #endif
    792 
    793 #endif
    794 
    795 
    796 #endif  /* __IAudioVolumeLevel_INTERFACE_DEFINED__ */
    797 
    798 /*****************************************************************************
    799  * IAudioChannelConfig interface
    800  */
    801 #ifndef __IAudioChannelConfig_INTERFACE_DEFINED__
    802 #define __IAudioChannelConfig_INTERFACE_DEFINED__
    803 
    804 DEFINE_GUID(IID_IAudioChannelConfig, 0xbb11c46f, 0xec28, 0x493c, 0xb8,0x8a, 0x5d,0xb8,0x80,0x62,0xce,0x98);
    805 #if defined(__cplusplus) && !defined(CINTERFACE)
    806 MIDL_INTERFACE("bb11c46f-ec28-493c-b88a-5db88062ce98")
    807 IAudioChannelConfig : public IUnknown
    808 {
    809     virtual HRESULT STDMETHODCALLTYPE SetChannelConfig(
    810         DWORD dwConfig,
    811         LPCGUID pguidEventContext) = 0;
    812 
    813     virtual HRESULT STDMETHODCALLTYPE GetChannelConfig(
    814         DWORD dwConfig,
    815         DWORD *pdwConfig) = 0;
    816 
    817 };
    818 #ifdef __CRT_UUID_DECL
    819 __CRT_UUID_DECL(IAudioChannelConfig, 0xbb11c46f, 0xec28, 0x493c, 0xb8,0x8a, 0x5d,0xb8,0x80,0x62,0xce,0x98)
    820 #endif
    821 #else
    822 typedef struct IAudioChannelConfigVtbl {
    823     BEGIN_INTERFACE
    824 
    825     /*** IUnknown methods ***/
    826     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    827         IAudioChannelConfig *This,
    828         REFIID riid,
    829         void **ppvObject);
    830 
    831     ULONG (STDMETHODCALLTYPE *AddRef)(
    832         IAudioChannelConfig *This);
    833 
    834     ULONG (STDMETHODCALLTYPE *Release)(
    835         IAudioChannelConfig *This);
    836 
    837     /*** IAudioChannelConfig methods ***/
    838     HRESULT (STDMETHODCALLTYPE *SetChannelConfig)(
    839         IAudioChannelConfig *This,
    840         DWORD dwConfig,
    841         LPCGUID pguidEventContext);
    842 
    843     HRESULT (STDMETHODCALLTYPE *GetChannelConfig)(
    844         IAudioChannelConfig *This,
    845         DWORD dwConfig,
    846         DWORD *pdwConfig);
    847 
    848     END_INTERFACE
    849 } IAudioChannelConfigVtbl;
    850 
    851 interface IAudioChannelConfig {
    852     CONST_VTBL IAudioChannelConfigVtbl* lpVtbl;
    853 };
    854 
    855 #ifdef COBJMACROS
    856 #ifndef WIDL_C_INLINE_WRAPPERS
    857 /*** IUnknown methods ***/
    858 #define IAudioChannelConfig_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    859 #define IAudioChannelConfig_AddRef(This) (This)->lpVtbl->AddRef(This)
    860 #define IAudioChannelConfig_Release(This) (This)->lpVtbl->Release(This)
    861 /*** IAudioChannelConfig methods ***/
    862 #define IAudioChannelConfig_SetChannelConfig(This,dwConfig,pguidEventContext) (This)->lpVtbl->SetChannelConfig(This,dwConfig,pguidEventContext)
    863 #define IAudioChannelConfig_GetChannelConfig(This,dwConfig,pdwConfig) (This)->lpVtbl->GetChannelConfig(This,dwConfig,pdwConfig)
    864 #else
    865 /*** IUnknown methods ***/
    866 static inline HRESULT IAudioChannelConfig_QueryInterface(IAudioChannelConfig* This,REFIID riid,void **ppvObject) {
    867     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    868 }
    869 static inline ULONG IAudioChannelConfig_AddRef(IAudioChannelConfig* This) {
    870     return This->lpVtbl->AddRef(This);
    871 }
    872 static inline ULONG IAudioChannelConfig_Release(IAudioChannelConfig* This) {
    873     return This->lpVtbl->Release(This);
    874 }
    875 /*** IAudioChannelConfig methods ***/
    876 static inline HRESULT IAudioChannelConfig_SetChannelConfig(IAudioChannelConfig* This,DWORD dwConfig,LPCGUID pguidEventContext) {
    877     return This->lpVtbl->SetChannelConfig(This,dwConfig,pguidEventContext);
    878 }
    879 static inline HRESULT IAudioChannelConfig_GetChannelConfig(IAudioChannelConfig* This,DWORD dwConfig,DWORD *pdwConfig) {
    880     return This->lpVtbl->GetChannelConfig(This,dwConfig,pdwConfig);
    881 }
    882 #endif
    883 #endif
    884 
    885 #endif
    886 
    887 
    888 #endif  /* __IAudioChannelConfig_INTERFACE_DEFINED__ */
    889 
    890 /*****************************************************************************
    891  * IAudioLoudness interface
    892  */
    893 #ifndef __IAudioLoudness_INTERFACE_DEFINED__
    894 #define __IAudioLoudness_INTERFACE_DEFINED__
    895 
    896 DEFINE_GUID(IID_IAudioLoudness, 0x7d8b1437, 0xdd53, 0x4350, 0x9c,0x1b, 0x1e,0xe2,0x89,0x0b,0xd9,0x38);
    897 #if defined(__cplusplus) && !defined(CINTERFACE)
    898 MIDL_INTERFACE("7d8b1437-dd53-4350-9c1b-1ee2890bd938")
    899 IAudioLoudness : public IUnknown
    900 {
    901     virtual HRESULT STDMETHODCALLTYPE GetEnabled(
    902         WINBOOL *pbEnabled) = 0;
    903 
    904     virtual HRESULT STDMETHODCALLTYPE SetEnabled(
    905         WINBOOL bEnabled,
    906         LPCGUID pguidEventContext) = 0;
    907 
    908 };
    909 #ifdef __CRT_UUID_DECL
    910 __CRT_UUID_DECL(IAudioLoudness, 0x7d8b1437, 0xdd53, 0x4350, 0x9c,0x1b, 0x1e,0xe2,0x89,0x0b,0xd9,0x38)
    911 #endif
    912 #else
    913 typedef struct IAudioLoudnessVtbl {
    914     BEGIN_INTERFACE
    915 
    916     /*** IUnknown methods ***/
    917     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
    918         IAudioLoudness *This,
    919         REFIID riid,
    920         void **ppvObject);
    921 
    922     ULONG (STDMETHODCALLTYPE *AddRef)(
    923         IAudioLoudness *This);
    924 
    925     ULONG (STDMETHODCALLTYPE *Release)(
    926         IAudioLoudness *This);
    927 
    928     /*** IAudioLoudness methods ***/
    929     HRESULT (STDMETHODCALLTYPE *GetEnabled)(
    930         IAudioLoudness *This,
    931         WINBOOL *pbEnabled);
    932 
    933     HRESULT (STDMETHODCALLTYPE *SetEnabled)(
    934         IAudioLoudness *This,
    935         WINBOOL bEnabled,
    936         LPCGUID pguidEventContext);
    937 
    938     END_INTERFACE
    939 } IAudioLoudnessVtbl;
    940 
    941 interface IAudioLoudness {
    942     CONST_VTBL IAudioLoudnessVtbl* lpVtbl;
    943 };
    944 
    945 #ifdef COBJMACROS
    946 #ifndef WIDL_C_INLINE_WRAPPERS
    947 /*** IUnknown methods ***/
    948 #define IAudioLoudness_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
    949 #define IAudioLoudness_AddRef(This) (This)->lpVtbl->AddRef(This)
    950 #define IAudioLoudness_Release(This) (This)->lpVtbl->Release(This)
    951 /*** IAudioLoudness methods ***/
    952 #define IAudioLoudness_GetEnabled(This,pbEnabled) (This)->lpVtbl->GetEnabled(This,pbEnabled)
    953 #define IAudioLoudness_SetEnabled(This,bEnabled,pguidEventContext) (This)->lpVtbl->SetEnabled(This,bEnabled,pguidEventContext)
    954 #else
    955 /*** IUnknown methods ***/
    956 static inline HRESULT IAudioLoudness_QueryInterface(IAudioLoudness* This,REFIID riid,void **ppvObject) {
    957     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
    958 }
    959 static inline ULONG IAudioLoudness_AddRef(IAudioLoudness* This) {
    960     return This->lpVtbl->AddRef(This);
    961 }
    962 static inline ULONG IAudioLoudness_Release(IAudioLoudness* This) {
    963     return This->lpVtbl->Release(This);
    964 }
    965 /*** IAudioLoudness methods ***/
    966 static inline HRESULT IAudioLoudness_GetEnabled(IAudioLoudness* This,WINBOOL *pbEnabled) {
    967     return This->lpVtbl->GetEnabled(This,pbEnabled);
    968 }
    969 static inline HRESULT IAudioLoudness_SetEnabled(IAudioLoudness* This,WINBOOL bEnabled,LPCGUID pguidEventContext) {
    970     return This->lpVtbl->SetEnabled(This,bEnabled,pguidEventContext);
    971 }
    972 #endif
    973 #endif
    974 
    975 #endif
    976 
    977 
    978 #endif  /* __IAudioLoudness_INTERFACE_DEFINED__ */
    979 
    980 /*****************************************************************************
    981  * IAudioInputSelector interface
    982  */
    983 #ifndef __IAudioInputSelector_INTERFACE_DEFINED__
    984 #define __IAudioInputSelector_INTERFACE_DEFINED__
    985 
    986 DEFINE_GUID(IID_IAudioInputSelector, 0x4f03dc02, 0x5e6e, 0x4653, 0x8f,0x72, 0xa0,0x30,0xc1,0x23,0xd5,0x98);
    987 #if defined(__cplusplus) && !defined(CINTERFACE)
    988 MIDL_INTERFACE("4f03dc02-5e6e-4653-8f72-a030c123d598")
    989 IAudioInputSelector : public IUnknown
    990 {
    991     virtual HRESULT STDMETHODCALLTYPE GetSelection(
    992         UINT *pnIdSelected) = 0;
    993 
    994     virtual HRESULT STDMETHODCALLTYPE SetSelection(
    995         UINT nIdSelect,
    996         LPCGUID pguidEventContext) = 0;
    997 
    998 };
    999 #ifdef __CRT_UUID_DECL
   1000 __CRT_UUID_DECL(IAudioInputSelector, 0x4f03dc02, 0x5e6e, 0x4653, 0x8f,0x72, 0xa0,0x30,0xc1,0x23,0xd5,0x98)
   1001 #endif
   1002 #else
   1003 typedef struct IAudioInputSelectorVtbl {
   1004     BEGIN_INTERFACE
   1005 
   1006     /*** IUnknown methods ***/
   1007     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1008         IAudioInputSelector *This,
   1009         REFIID riid,
   1010         void **ppvObject);
   1011 
   1012     ULONG (STDMETHODCALLTYPE *AddRef)(
   1013         IAudioInputSelector *This);
   1014 
   1015     ULONG (STDMETHODCALLTYPE *Release)(
   1016         IAudioInputSelector *This);
   1017 
   1018     /*** IAudioInputSelector methods ***/
   1019     HRESULT (STDMETHODCALLTYPE *GetSelection)(
   1020         IAudioInputSelector *This,
   1021         UINT *pnIdSelected);
   1022 
   1023     HRESULT (STDMETHODCALLTYPE *SetSelection)(
   1024         IAudioInputSelector *This,
   1025         UINT nIdSelect,
   1026         LPCGUID pguidEventContext);
   1027 
   1028     END_INTERFACE
   1029 } IAudioInputSelectorVtbl;
   1030 
   1031 interface IAudioInputSelector {
   1032     CONST_VTBL IAudioInputSelectorVtbl* lpVtbl;
   1033 };
   1034 
   1035 #ifdef COBJMACROS
   1036 #ifndef WIDL_C_INLINE_WRAPPERS
   1037 /*** IUnknown methods ***/
   1038 #define IAudioInputSelector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1039 #define IAudioInputSelector_AddRef(This) (This)->lpVtbl->AddRef(This)
   1040 #define IAudioInputSelector_Release(This) (This)->lpVtbl->Release(This)
   1041 /*** IAudioInputSelector methods ***/
   1042 #define IAudioInputSelector_GetSelection(This,pnIdSelected) (This)->lpVtbl->GetSelection(This,pnIdSelected)
   1043 #define IAudioInputSelector_SetSelection(This,nIdSelect,pguidEventContext) (This)->lpVtbl->SetSelection(This,nIdSelect,pguidEventContext)
   1044 #else
   1045 /*** IUnknown methods ***/
   1046 static inline HRESULT IAudioInputSelector_QueryInterface(IAudioInputSelector* This,REFIID riid,void **ppvObject) {
   1047     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1048 }
   1049 static inline ULONG IAudioInputSelector_AddRef(IAudioInputSelector* This) {
   1050     return This->lpVtbl->AddRef(This);
   1051 }
   1052 static inline ULONG IAudioInputSelector_Release(IAudioInputSelector* This) {
   1053     return This->lpVtbl->Release(This);
   1054 }
   1055 /*** IAudioInputSelector methods ***/
   1056 static inline HRESULT IAudioInputSelector_GetSelection(IAudioInputSelector* This,UINT *pnIdSelected) {
   1057     return This->lpVtbl->GetSelection(This,pnIdSelected);
   1058 }
   1059 static inline HRESULT IAudioInputSelector_SetSelection(IAudioInputSelector* This,UINT nIdSelect,LPCGUID pguidEventContext) {
   1060     return This->lpVtbl->SetSelection(This,nIdSelect,pguidEventContext);
   1061 }
   1062 #endif
   1063 #endif
   1064 
   1065 #endif
   1066 
   1067 
   1068 #endif  /* __IAudioInputSelector_INTERFACE_DEFINED__ */
   1069 
   1070 /*****************************************************************************
   1071  * IAudioOutputSelector interface
   1072  */
   1073 #ifndef __IAudioOutputSelector_INTERFACE_DEFINED__
   1074 #define __IAudioOutputSelector_INTERFACE_DEFINED__
   1075 
   1076 DEFINE_GUID(IID_IAudioOutputSelector, 0xbb515f69, 0x94a7, 0x429e, 0x8b,0x9c, 0x27,0x1b,0x3f,0x11,0xa3,0xab);
   1077 #if defined(__cplusplus) && !defined(CINTERFACE)
   1078 MIDL_INTERFACE("bb515f69-94a7-429e-8b9c-271b3f11a3ab")
   1079 IAudioOutputSelector : public IUnknown
   1080 {
   1081     virtual HRESULT STDMETHODCALLTYPE GetSelection(
   1082         UINT *pnIdSelected) = 0;
   1083 
   1084     virtual HRESULT STDMETHODCALLTYPE SetSelection(
   1085         UINT nIdSelect,
   1086         LPCGUID pguidEventContext) = 0;
   1087 
   1088 };
   1089 #ifdef __CRT_UUID_DECL
   1090 __CRT_UUID_DECL(IAudioOutputSelector, 0xbb515f69, 0x94a7, 0x429e, 0x8b,0x9c, 0x27,0x1b,0x3f,0x11,0xa3,0xab)
   1091 #endif
   1092 #else
   1093 typedef struct IAudioOutputSelectorVtbl {
   1094     BEGIN_INTERFACE
   1095 
   1096     /*** IUnknown methods ***/
   1097     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1098         IAudioOutputSelector *This,
   1099         REFIID riid,
   1100         void **ppvObject);
   1101 
   1102     ULONG (STDMETHODCALLTYPE *AddRef)(
   1103         IAudioOutputSelector *This);
   1104 
   1105     ULONG (STDMETHODCALLTYPE *Release)(
   1106         IAudioOutputSelector *This);
   1107 
   1108     /*** IAudioOutputSelector methods ***/
   1109     HRESULT (STDMETHODCALLTYPE *GetSelection)(
   1110         IAudioOutputSelector *This,
   1111         UINT *pnIdSelected);
   1112 
   1113     HRESULT (STDMETHODCALLTYPE *SetSelection)(
   1114         IAudioOutputSelector *This,
   1115         UINT nIdSelect,
   1116         LPCGUID pguidEventContext);
   1117 
   1118     END_INTERFACE
   1119 } IAudioOutputSelectorVtbl;
   1120 
   1121 interface IAudioOutputSelector {
   1122     CONST_VTBL IAudioOutputSelectorVtbl* lpVtbl;
   1123 };
   1124 
   1125 #ifdef COBJMACROS
   1126 #ifndef WIDL_C_INLINE_WRAPPERS
   1127 /*** IUnknown methods ***/
   1128 #define IAudioOutputSelector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1129 #define IAudioOutputSelector_AddRef(This) (This)->lpVtbl->AddRef(This)
   1130 #define IAudioOutputSelector_Release(This) (This)->lpVtbl->Release(This)
   1131 /*** IAudioOutputSelector methods ***/
   1132 #define IAudioOutputSelector_GetSelection(This,pnIdSelected) (This)->lpVtbl->GetSelection(This,pnIdSelected)
   1133 #define IAudioOutputSelector_SetSelection(This,nIdSelect,pguidEventContext) (This)->lpVtbl->SetSelection(This,nIdSelect,pguidEventContext)
   1134 #else
   1135 /*** IUnknown methods ***/
   1136 static inline HRESULT IAudioOutputSelector_QueryInterface(IAudioOutputSelector* This,REFIID riid,void **ppvObject) {
   1137     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1138 }
   1139 static inline ULONG IAudioOutputSelector_AddRef(IAudioOutputSelector* This) {
   1140     return This->lpVtbl->AddRef(This);
   1141 }
   1142 static inline ULONG IAudioOutputSelector_Release(IAudioOutputSelector* This) {
   1143     return This->lpVtbl->Release(This);
   1144 }
   1145 /*** IAudioOutputSelector methods ***/
   1146 static inline HRESULT IAudioOutputSelector_GetSelection(IAudioOutputSelector* This,UINT *pnIdSelected) {
   1147     return This->lpVtbl->GetSelection(This,pnIdSelected);
   1148 }
   1149 static inline HRESULT IAudioOutputSelector_SetSelection(IAudioOutputSelector* This,UINT nIdSelect,LPCGUID pguidEventContext) {
   1150     return This->lpVtbl->SetSelection(This,nIdSelect,pguidEventContext);
   1151 }
   1152 #endif
   1153 #endif
   1154 
   1155 #endif
   1156 
   1157 
   1158 #endif  /* __IAudioOutputSelector_INTERFACE_DEFINED__ */
   1159 
   1160 /*****************************************************************************
   1161  * IAudioMute interface
   1162  */
   1163 #ifndef __IAudioMute_INTERFACE_DEFINED__
   1164 #define __IAudioMute_INTERFACE_DEFINED__
   1165 
   1166 DEFINE_GUID(IID_IAudioMute, 0xdf45aeea, 0xb74a, 0x4b6b, 0xaf,0xad, 0x23,0x66,0xb6,0xaa,0x01,0x2e);
   1167 #if defined(__cplusplus) && !defined(CINTERFACE)
   1168 MIDL_INTERFACE("df45aeea-b74a-4b6b-afad-2366b6aa012e")
   1169 IAudioMute : public IUnknown
   1170 {
   1171     virtual HRESULT STDMETHODCALLTYPE SetMute(
   1172         WINBOOL bMute,
   1173         LPCGUID pguidEventContext) = 0;
   1174 
   1175     virtual HRESULT STDMETHODCALLTYPE GetMute(
   1176         WINBOOL *pbMute) = 0;
   1177 
   1178 };
   1179 #ifdef __CRT_UUID_DECL
   1180 __CRT_UUID_DECL(IAudioMute, 0xdf45aeea, 0xb74a, 0x4b6b, 0xaf,0xad, 0x23,0x66,0xb6,0xaa,0x01,0x2e)
   1181 #endif
   1182 #else
   1183 typedef struct IAudioMuteVtbl {
   1184     BEGIN_INTERFACE
   1185 
   1186     /*** IUnknown methods ***/
   1187     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1188         IAudioMute *This,
   1189         REFIID riid,
   1190         void **ppvObject);
   1191 
   1192     ULONG (STDMETHODCALLTYPE *AddRef)(
   1193         IAudioMute *This);
   1194 
   1195     ULONG (STDMETHODCALLTYPE *Release)(
   1196         IAudioMute *This);
   1197 
   1198     /*** IAudioMute methods ***/
   1199     HRESULT (STDMETHODCALLTYPE *SetMute)(
   1200         IAudioMute *This,
   1201         WINBOOL bMute,
   1202         LPCGUID pguidEventContext);
   1203 
   1204     HRESULT (STDMETHODCALLTYPE *GetMute)(
   1205         IAudioMute *This,
   1206         WINBOOL *pbMute);
   1207 
   1208     END_INTERFACE
   1209 } IAudioMuteVtbl;
   1210 
   1211 interface IAudioMute {
   1212     CONST_VTBL IAudioMuteVtbl* lpVtbl;
   1213 };
   1214 
   1215 #ifdef COBJMACROS
   1216 #ifndef WIDL_C_INLINE_WRAPPERS
   1217 /*** IUnknown methods ***/
   1218 #define IAudioMute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1219 #define IAudioMute_AddRef(This) (This)->lpVtbl->AddRef(This)
   1220 #define IAudioMute_Release(This) (This)->lpVtbl->Release(This)
   1221 /*** IAudioMute methods ***/
   1222 #define IAudioMute_SetMute(This,bMute,pguidEventContext) (This)->lpVtbl->SetMute(This,bMute,pguidEventContext)
   1223 #define IAudioMute_GetMute(This,pbMute) (This)->lpVtbl->GetMute(This,pbMute)
   1224 #else
   1225 /*** IUnknown methods ***/
   1226 static inline HRESULT IAudioMute_QueryInterface(IAudioMute* This,REFIID riid,void **ppvObject) {
   1227     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1228 }
   1229 static inline ULONG IAudioMute_AddRef(IAudioMute* This) {
   1230     return This->lpVtbl->AddRef(This);
   1231 }
   1232 static inline ULONG IAudioMute_Release(IAudioMute* This) {
   1233     return This->lpVtbl->Release(This);
   1234 }
   1235 /*** IAudioMute methods ***/
   1236 static inline HRESULT IAudioMute_SetMute(IAudioMute* This,WINBOOL bMute,LPCGUID pguidEventContext) {
   1237     return This->lpVtbl->SetMute(This,bMute,pguidEventContext);
   1238 }
   1239 static inline HRESULT IAudioMute_GetMute(IAudioMute* This,WINBOOL *pbMute) {
   1240     return This->lpVtbl->GetMute(This,pbMute);
   1241 }
   1242 #endif
   1243 #endif
   1244 
   1245 #endif
   1246 
   1247 
   1248 #endif  /* __IAudioMute_INTERFACE_DEFINED__ */
   1249 
   1250 /*****************************************************************************
   1251  * IAudioBass interface
   1252  */
   1253 #ifndef __IAudioBass_INTERFACE_DEFINED__
   1254 #define __IAudioBass_INTERFACE_DEFINED__
   1255 
   1256 DEFINE_GUID(IID_IAudioBass, 0xa2b1a1d9, 0x4db3, 0x425d, 0xa2,0xb2, 0xbd,0x33,0x5c,0xb3,0xe2,0xe5);
   1257 #if defined(__cplusplus) && !defined(CINTERFACE)
   1258 MIDL_INTERFACE("a2b1a1d9-4db3-425d-a2b2-bd335cb3e2e5")
   1259 IAudioBass : public IPerChannelDbLevel
   1260 {
   1261 };
   1262 #ifdef __CRT_UUID_DECL
   1263 __CRT_UUID_DECL(IAudioBass, 0xa2b1a1d9, 0x4db3, 0x425d, 0xa2,0xb2, 0xbd,0x33,0x5c,0xb3,0xe2,0xe5)
   1264 #endif
   1265 #else
   1266 typedef struct IAudioBassVtbl {
   1267     BEGIN_INTERFACE
   1268 
   1269     /*** IUnknown methods ***/
   1270     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1271         IAudioBass *This,
   1272         REFIID riid,
   1273         void **ppvObject);
   1274 
   1275     ULONG (STDMETHODCALLTYPE *AddRef)(
   1276         IAudioBass *This);
   1277 
   1278     ULONG (STDMETHODCALLTYPE *Release)(
   1279         IAudioBass *This);
   1280 
   1281     /*** IPerChannelDbLevel methods ***/
   1282     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
   1283         IAudioBass *This,
   1284         UINT *pcChannels);
   1285 
   1286     HRESULT (STDMETHODCALLTYPE *GetLevelRange)(
   1287         IAudioBass *This,
   1288         UINT nChannel,
   1289         float *pfMinLevelDB,
   1290         float *pfMaxLevelDB,
   1291         float *pfStepping);
   1292 
   1293     HRESULT (STDMETHODCALLTYPE *GetLevel)(
   1294         IAudioBass *This,
   1295         UINT nChannel,
   1296         float *pfLevelDB);
   1297 
   1298     HRESULT (STDMETHODCALLTYPE *SetLevel)(
   1299         IAudioBass *This,
   1300         UINT nChannel,
   1301         float fLevelDB,
   1302         LPCGUID pguidEventContext);
   1303 
   1304     HRESULT (STDMETHODCALLTYPE *SetLevelUniform)(
   1305         IAudioBass *This,
   1306         float fLevelDB,
   1307         LPCGUID pguidEventContext);
   1308 
   1309     HRESULT (STDMETHODCALLTYPE *SetLevelAllChannels)(
   1310         IAudioBass *This,
   1311         float *aLevelsDB,
   1312         ULONG cChannels,
   1313         LPCGUID pguidEventContext);
   1314 
   1315     END_INTERFACE
   1316 } IAudioBassVtbl;
   1317 
   1318 interface IAudioBass {
   1319     CONST_VTBL IAudioBassVtbl* lpVtbl;
   1320 };
   1321 
   1322 #ifdef COBJMACROS
   1323 #ifndef WIDL_C_INLINE_WRAPPERS
   1324 /*** IUnknown methods ***/
   1325 #define IAudioBass_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1326 #define IAudioBass_AddRef(This) (This)->lpVtbl->AddRef(This)
   1327 #define IAudioBass_Release(This) (This)->lpVtbl->Release(This)
   1328 /*** IPerChannelDbLevel methods ***/
   1329 #define IAudioBass_GetChannelCount(This,pcChannels) (This)->lpVtbl->GetChannelCount(This,pcChannels)
   1330 #define IAudioBass_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) (This)->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)
   1331 #define IAudioBass_GetLevel(This,nChannel,pfLevelDB) (This)->lpVtbl->GetLevel(This,nChannel,pfLevelDB)
   1332 #define IAudioBass_SetLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext)
   1333 #define IAudioBass_SetLevelUniform(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext)
   1334 #define IAudioBass_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) (This)->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)
   1335 #else
   1336 /*** IUnknown methods ***/
   1337 static inline HRESULT IAudioBass_QueryInterface(IAudioBass* This,REFIID riid,void **ppvObject) {
   1338     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1339 }
   1340 static inline ULONG IAudioBass_AddRef(IAudioBass* This) {
   1341     return This->lpVtbl->AddRef(This);
   1342 }
   1343 static inline ULONG IAudioBass_Release(IAudioBass* This) {
   1344     return This->lpVtbl->Release(This);
   1345 }
   1346 /*** IPerChannelDbLevel methods ***/
   1347 static inline HRESULT IAudioBass_GetChannelCount(IAudioBass* This,UINT *pcChannels) {
   1348     return This->lpVtbl->GetChannelCount(This,pcChannels);
   1349 }
   1350 static inline HRESULT IAudioBass_GetLevelRange(IAudioBass* This,UINT nChannel,float *pfMinLevelDB,float *pfMaxLevelDB,float *pfStepping) {
   1351     return This->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping);
   1352 }
   1353 static inline HRESULT IAudioBass_GetLevel(IAudioBass* This,UINT nChannel,float *pfLevelDB) {
   1354     return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
   1355 }
   1356 static inline HRESULT IAudioBass_SetLevel(IAudioBass* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
   1357     return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
   1358 }
   1359 static inline HRESULT IAudioBass_SetLevelUniform(IAudioBass* This,float fLevelDB,LPCGUID pguidEventContext) {
   1360     return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
   1361 }
   1362 static inline HRESULT IAudioBass_SetLevelAllChannels(IAudioBass* This,float *aLevelsDB,ULONG cChannels,LPCGUID pguidEventContext) {
   1363     return This->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext);
   1364 }
   1365 #endif
   1366 #endif
   1367 
   1368 #endif
   1369 
   1370 
   1371 #endif  /* __IAudioBass_INTERFACE_DEFINED__ */
   1372 
   1373 /*****************************************************************************
   1374  * IAudioMidRange interface
   1375  */
   1376 #ifndef __IAudioMidRange_INTERFACE_DEFINED__
   1377 #define __IAudioMidRange_INTERFACE_DEFINED__
   1378 
   1379 DEFINE_GUID(IID_IAudioMidRange, 0x5e54b6d7, 0xb44b, 0x40d9, 0x9a,0x9e, 0xe6,0x91,0xd9,0xce,0x6e,0xdf);
   1380 #if defined(__cplusplus) && !defined(CINTERFACE)
   1381 MIDL_INTERFACE("5e54b6d7-b44b-40d9-9a9e-e691d9ce6edf")
   1382 IAudioMidRange : public IPerChannelDbLevel
   1383 {
   1384 };
   1385 #ifdef __CRT_UUID_DECL
   1386 __CRT_UUID_DECL(IAudioMidRange, 0x5e54b6d7, 0xb44b, 0x40d9, 0x9a,0x9e, 0xe6,0x91,0xd9,0xce,0x6e,0xdf)
   1387 #endif
   1388 #else
   1389 typedef struct IAudioMidRangeVtbl {
   1390     BEGIN_INTERFACE
   1391 
   1392     /*** IUnknown methods ***/
   1393     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1394         IAudioMidRange *This,
   1395         REFIID riid,
   1396         void **ppvObject);
   1397 
   1398     ULONG (STDMETHODCALLTYPE *AddRef)(
   1399         IAudioMidRange *This);
   1400 
   1401     ULONG (STDMETHODCALLTYPE *Release)(
   1402         IAudioMidRange *This);
   1403 
   1404     /*** IPerChannelDbLevel methods ***/
   1405     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
   1406         IAudioMidRange *This,
   1407         UINT *pcChannels);
   1408 
   1409     HRESULT (STDMETHODCALLTYPE *GetLevelRange)(
   1410         IAudioMidRange *This,
   1411         UINT nChannel,
   1412         float *pfMinLevelDB,
   1413         float *pfMaxLevelDB,
   1414         float *pfStepping);
   1415 
   1416     HRESULT (STDMETHODCALLTYPE *GetLevel)(
   1417         IAudioMidRange *This,
   1418         UINT nChannel,
   1419         float *pfLevelDB);
   1420 
   1421     HRESULT (STDMETHODCALLTYPE *SetLevel)(
   1422         IAudioMidRange *This,
   1423         UINT nChannel,
   1424         float fLevelDB,
   1425         LPCGUID pguidEventContext);
   1426 
   1427     HRESULT (STDMETHODCALLTYPE *SetLevelUniform)(
   1428         IAudioMidRange *This,
   1429         float fLevelDB,
   1430         LPCGUID pguidEventContext);
   1431 
   1432     HRESULT (STDMETHODCALLTYPE *SetLevelAllChannels)(
   1433         IAudioMidRange *This,
   1434         float *aLevelsDB,
   1435         ULONG cChannels,
   1436         LPCGUID pguidEventContext);
   1437 
   1438     END_INTERFACE
   1439 } IAudioMidRangeVtbl;
   1440 
   1441 interface IAudioMidRange {
   1442     CONST_VTBL IAudioMidRangeVtbl* lpVtbl;
   1443 };
   1444 
   1445 #ifdef COBJMACROS
   1446 #ifndef WIDL_C_INLINE_WRAPPERS
   1447 /*** IUnknown methods ***/
   1448 #define IAudioMidRange_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1449 #define IAudioMidRange_AddRef(This) (This)->lpVtbl->AddRef(This)
   1450 #define IAudioMidRange_Release(This) (This)->lpVtbl->Release(This)
   1451 /*** IPerChannelDbLevel methods ***/
   1452 #define IAudioMidRange_GetChannelCount(This,pcChannels) (This)->lpVtbl->GetChannelCount(This,pcChannels)
   1453 #define IAudioMidRange_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) (This)->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)
   1454 #define IAudioMidRange_GetLevel(This,nChannel,pfLevelDB) (This)->lpVtbl->GetLevel(This,nChannel,pfLevelDB)
   1455 #define IAudioMidRange_SetLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext)
   1456 #define IAudioMidRange_SetLevelUniform(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext)
   1457 #define IAudioMidRange_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) (This)->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)
   1458 #else
   1459 /*** IUnknown methods ***/
   1460 static inline HRESULT IAudioMidRange_QueryInterface(IAudioMidRange* This,REFIID riid,void **ppvObject) {
   1461     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1462 }
   1463 static inline ULONG IAudioMidRange_AddRef(IAudioMidRange* This) {
   1464     return This->lpVtbl->AddRef(This);
   1465 }
   1466 static inline ULONG IAudioMidRange_Release(IAudioMidRange* This) {
   1467     return This->lpVtbl->Release(This);
   1468 }
   1469 /*** IPerChannelDbLevel methods ***/
   1470 static inline HRESULT IAudioMidRange_GetChannelCount(IAudioMidRange* This,UINT *pcChannels) {
   1471     return This->lpVtbl->GetChannelCount(This,pcChannels);
   1472 }
   1473 static inline HRESULT IAudioMidRange_GetLevelRange(IAudioMidRange* This,UINT nChannel,float *pfMinLevelDB,float *pfMaxLevelDB,float *pfStepping) {
   1474     return This->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping);
   1475 }
   1476 static inline HRESULT IAudioMidRange_GetLevel(IAudioMidRange* This,UINT nChannel,float *pfLevelDB) {
   1477     return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
   1478 }
   1479 static inline HRESULT IAudioMidRange_SetLevel(IAudioMidRange* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
   1480     return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
   1481 }
   1482 static inline HRESULT IAudioMidRange_SetLevelUniform(IAudioMidRange* This,float fLevelDB,LPCGUID pguidEventContext) {
   1483     return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
   1484 }
   1485 static inline HRESULT IAudioMidRange_SetLevelAllChannels(IAudioMidRange* This,float *aLevelsDB,ULONG cChannels,LPCGUID pguidEventContext) {
   1486     return This->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext);
   1487 }
   1488 #endif
   1489 #endif
   1490 
   1491 #endif
   1492 
   1493 
   1494 #endif  /* __IAudioMidRange_INTERFACE_DEFINED__ */
   1495 
   1496 /*****************************************************************************
   1497  * IAudioTreble interface
   1498  */
   1499 #ifndef __IAudioTreble_INTERFACE_DEFINED__
   1500 #define __IAudioTreble_INTERFACE_DEFINED__
   1501 
   1502 DEFINE_GUID(IID_IAudioTreble, 0x0a717812, 0x694e, 0x4907, 0xb7,0x4b, 0xba,0xfa,0x5c,0xfd,0xca,0x7b);
   1503 #if defined(__cplusplus) && !defined(CINTERFACE)
   1504 MIDL_INTERFACE("0a717812-694e-4907-b74b-bafa5cfdca7b")
   1505 IAudioTreble : public IPerChannelDbLevel
   1506 {
   1507 };
   1508 #ifdef __CRT_UUID_DECL
   1509 __CRT_UUID_DECL(IAudioTreble, 0x0a717812, 0x694e, 0x4907, 0xb7,0x4b, 0xba,0xfa,0x5c,0xfd,0xca,0x7b)
   1510 #endif
   1511 #else
   1512 typedef struct IAudioTrebleVtbl {
   1513     BEGIN_INTERFACE
   1514 
   1515     /*** IUnknown methods ***/
   1516     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1517         IAudioTreble *This,
   1518         REFIID riid,
   1519         void **ppvObject);
   1520 
   1521     ULONG (STDMETHODCALLTYPE *AddRef)(
   1522         IAudioTreble *This);
   1523 
   1524     ULONG (STDMETHODCALLTYPE *Release)(
   1525         IAudioTreble *This);
   1526 
   1527     /*** IPerChannelDbLevel methods ***/
   1528     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
   1529         IAudioTreble *This,
   1530         UINT *pcChannels);
   1531 
   1532     HRESULT (STDMETHODCALLTYPE *GetLevelRange)(
   1533         IAudioTreble *This,
   1534         UINT nChannel,
   1535         float *pfMinLevelDB,
   1536         float *pfMaxLevelDB,
   1537         float *pfStepping);
   1538 
   1539     HRESULT (STDMETHODCALLTYPE *GetLevel)(
   1540         IAudioTreble *This,
   1541         UINT nChannel,
   1542         float *pfLevelDB);
   1543 
   1544     HRESULT (STDMETHODCALLTYPE *SetLevel)(
   1545         IAudioTreble *This,
   1546         UINT nChannel,
   1547         float fLevelDB,
   1548         LPCGUID pguidEventContext);
   1549 
   1550     HRESULT (STDMETHODCALLTYPE *SetLevelUniform)(
   1551         IAudioTreble *This,
   1552         float fLevelDB,
   1553         LPCGUID pguidEventContext);
   1554 
   1555     HRESULT (STDMETHODCALLTYPE *SetLevelAllChannels)(
   1556         IAudioTreble *This,
   1557         float *aLevelsDB,
   1558         ULONG cChannels,
   1559         LPCGUID pguidEventContext);
   1560 
   1561     END_INTERFACE
   1562 } IAudioTrebleVtbl;
   1563 
   1564 interface IAudioTreble {
   1565     CONST_VTBL IAudioTrebleVtbl* lpVtbl;
   1566 };
   1567 
   1568 #ifdef COBJMACROS
   1569 #ifndef WIDL_C_INLINE_WRAPPERS
   1570 /*** IUnknown methods ***/
   1571 #define IAudioTreble_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1572 #define IAudioTreble_AddRef(This) (This)->lpVtbl->AddRef(This)
   1573 #define IAudioTreble_Release(This) (This)->lpVtbl->Release(This)
   1574 /*** IPerChannelDbLevel methods ***/
   1575 #define IAudioTreble_GetChannelCount(This,pcChannels) (This)->lpVtbl->GetChannelCount(This,pcChannels)
   1576 #define IAudioTreble_GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping) (This)->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping)
   1577 #define IAudioTreble_GetLevel(This,nChannel,pfLevelDB) (This)->lpVtbl->GetLevel(This,nChannel,pfLevelDB)
   1578 #define IAudioTreble_SetLevel(This,nChannel,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext)
   1579 #define IAudioTreble_SetLevelUniform(This,fLevelDB,pguidEventContext) (This)->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext)
   1580 #define IAudioTreble_SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext) (This)->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext)
   1581 #else
   1582 /*** IUnknown methods ***/
   1583 static inline HRESULT IAudioTreble_QueryInterface(IAudioTreble* This,REFIID riid,void **ppvObject) {
   1584     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1585 }
   1586 static inline ULONG IAudioTreble_AddRef(IAudioTreble* This) {
   1587     return This->lpVtbl->AddRef(This);
   1588 }
   1589 static inline ULONG IAudioTreble_Release(IAudioTreble* This) {
   1590     return This->lpVtbl->Release(This);
   1591 }
   1592 /*** IPerChannelDbLevel methods ***/
   1593 static inline HRESULT IAudioTreble_GetChannelCount(IAudioTreble* This,UINT *pcChannels) {
   1594     return This->lpVtbl->GetChannelCount(This,pcChannels);
   1595 }
   1596 static inline HRESULT IAudioTreble_GetLevelRange(IAudioTreble* This,UINT nChannel,float *pfMinLevelDB,float *pfMaxLevelDB,float *pfStepping) {
   1597     return This->lpVtbl->GetLevelRange(This,nChannel,pfMinLevelDB,pfMaxLevelDB,pfStepping);
   1598 }
   1599 static inline HRESULT IAudioTreble_GetLevel(IAudioTreble* This,UINT nChannel,float *pfLevelDB) {
   1600     return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
   1601 }
   1602 static inline HRESULT IAudioTreble_SetLevel(IAudioTreble* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
   1603     return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
   1604 }
   1605 static inline HRESULT IAudioTreble_SetLevelUniform(IAudioTreble* This,float fLevelDB,LPCGUID pguidEventContext) {
   1606     return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
   1607 }
   1608 static inline HRESULT IAudioTreble_SetLevelAllChannels(IAudioTreble* This,float *aLevelsDB,ULONG cChannels,LPCGUID pguidEventContext) {
   1609     return This->lpVtbl->SetLevelAllChannels(This,aLevelsDB,cChannels,pguidEventContext);
   1610 }
   1611 #endif
   1612 #endif
   1613 
   1614 #endif
   1615 
   1616 
   1617 #endif  /* __IAudioTreble_INTERFACE_DEFINED__ */
   1618 
   1619 /*****************************************************************************
   1620  * IAudioAutoGainControl interface
   1621  */
   1622 #ifndef __IAudioAutoGainControl_INTERFACE_DEFINED__
   1623 #define __IAudioAutoGainControl_INTERFACE_DEFINED__
   1624 
   1625 DEFINE_GUID(IID_IAudioAutoGainControl, 0x85401fd4, 0x6de4, 0x4b9d, 0x98,0x69, 0x2d,0x67,0x53,0xa8,0x2f,0x3c);
   1626 #if defined(__cplusplus) && !defined(CINTERFACE)
   1627 MIDL_INTERFACE("85401fd4-6de4-4b9d-9869-2d6753a82f3c")
   1628 IAudioAutoGainControl : public IUnknown
   1629 {
   1630     virtual HRESULT STDMETHODCALLTYPE GetEnabled(
   1631         WINBOOL bEnabled,
   1632         LPCGUID pguidEventContext) = 0;
   1633 
   1634     virtual HRESULT STDMETHODCALLTYPE GetMute(
   1635         WINBOOL *pbEnabled) = 0;
   1636 
   1637 };
   1638 #ifdef __CRT_UUID_DECL
   1639 __CRT_UUID_DECL(IAudioAutoGainControl, 0x85401fd4, 0x6de4, 0x4b9d, 0x98,0x69, 0x2d,0x67,0x53,0xa8,0x2f,0x3c)
   1640 #endif
   1641 #else
   1642 typedef struct IAudioAutoGainControlVtbl {
   1643     BEGIN_INTERFACE
   1644 
   1645     /*** IUnknown methods ***/
   1646     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1647         IAudioAutoGainControl *This,
   1648         REFIID riid,
   1649         void **ppvObject);
   1650 
   1651     ULONG (STDMETHODCALLTYPE *AddRef)(
   1652         IAudioAutoGainControl *This);
   1653 
   1654     ULONG (STDMETHODCALLTYPE *Release)(
   1655         IAudioAutoGainControl *This);
   1656 
   1657     /*** IAudioAutoGainControl methods ***/
   1658     HRESULT (STDMETHODCALLTYPE *GetEnabled)(
   1659         IAudioAutoGainControl *This,
   1660         WINBOOL bEnabled,
   1661         LPCGUID pguidEventContext);
   1662 
   1663     HRESULT (STDMETHODCALLTYPE *GetMute)(
   1664         IAudioAutoGainControl *This,
   1665         WINBOOL *pbEnabled);
   1666 
   1667     END_INTERFACE
   1668 } IAudioAutoGainControlVtbl;
   1669 
   1670 interface IAudioAutoGainControl {
   1671     CONST_VTBL IAudioAutoGainControlVtbl* lpVtbl;
   1672 };
   1673 
   1674 #ifdef COBJMACROS
   1675 #ifndef WIDL_C_INLINE_WRAPPERS
   1676 /*** IUnknown methods ***/
   1677 #define IAudioAutoGainControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1678 #define IAudioAutoGainControl_AddRef(This) (This)->lpVtbl->AddRef(This)
   1679 #define IAudioAutoGainControl_Release(This) (This)->lpVtbl->Release(This)
   1680 /*** IAudioAutoGainControl methods ***/
   1681 #define IAudioAutoGainControl_GetEnabled(This,bEnabled,pguidEventContext) (This)->lpVtbl->GetEnabled(This,bEnabled,pguidEventContext)
   1682 #define IAudioAutoGainControl_GetMute(This,pbEnabled) (This)->lpVtbl->GetMute(This,pbEnabled)
   1683 #else
   1684 /*** IUnknown methods ***/
   1685 static inline HRESULT IAudioAutoGainControl_QueryInterface(IAudioAutoGainControl* This,REFIID riid,void **ppvObject) {
   1686     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1687 }
   1688 static inline ULONG IAudioAutoGainControl_AddRef(IAudioAutoGainControl* This) {
   1689     return This->lpVtbl->AddRef(This);
   1690 }
   1691 static inline ULONG IAudioAutoGainControl_Release(IAudioAutoGainControl* This) {
   1692     return This->lpVtbl->Release(This);
   1693 }
   1694 /*** IAudioAutoGainControl methods ***/
   1695 static inline HRESULT IAudioAutoGainControl_GetEnabled(IAudioAutoGainControl* This,WINBOOL bEnabled,LPCGUID pguidEventContext) {
   1696     return This->lpVtbl->GetEnabled(This,bEnabled,pguidEventContext);
   1697 }
   1698 static inline HRESULT IAudioAutoGainControl_GetMute(IAudioAutoGainControl* This,WINBOOL *pbEnabled) {
   1699     return This->lpVtbl->GetMute(This,pbEnabled);
   1700 }
   1701 #endif
   1702 #endif
   1703 
   1704 #endif
   1705 
   1706 
   1707 #endif  /* __IAudioAutoGainControl_INTERFACE_DEFINED__ */
   1708 
   1709 /*****************************************************************************
   1710  * IAudioPeakMeter interface
   1711  */
   1712 #ifndef __IAudioPeakMeter_INTERFACE_DEFINED__
   1713 #define __IAudioPeakMeter_INTERFACE_DEFINED__
   1714 
   1715 DEFINE_GUID(IID_IAudioPeakMeter, 0xdd79923c, 0x0599, 0x45e0, 0xb8,0xb6, 0xc8,0xdf,0x7d,0xb6,0xe7,0x96);
   1716 #if defined(__cplusplus) && !defined(CINTERFACE)
   1717 MIDL_INTERFACE("dd79923c-0599-45e0-b8b6-c8df7db6e796")
   1718 IAudioPeakMeter : public IUnknown
   1719 {
   1720     virtual HRESULT STDMETHODCALLTYPE GetChannelCount(
   1721         UINT *pcChannels) = 0;
   1722 
   1723     virtual HRESULT STDMETHODCALLTYPE GetLevel(
   1724         UINT nChannel,
   1725         float *pfLevel) = 0;
   1726 
   1727 };
   1728 #ifdef __CRT_UUID_DECL
   1729 __CRT_UUID_DECL(IAudioPeakMeter, 0xdd79923c, 0x0599, 0x45e0, 0xb8,0xb6, 0xc8,0xdf,0x7d,0xb6,0xe7,0x96)
   1730 #endif
   1731 #else
   1732 typedef struct IAudioPeakMeterVtbl {
   1733     BEGIN_INTERFACE
   1734 
   1735     /*** IUnknown methods ***/
   1736     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1737         IAudioPeakMeter *This,
   1738         REFIID riid,
   1739         void **ppvObject);
   1740 
   1741     ULONG (STDMETHODCALLTYPE *AddRef)(
   1742         IAudioPeakMeter *This);
   1743 
   1744     ULONG (STDMETHODCALLTYPE *Release)(
   1745         IAudioPeakMeter *This);
   1746 
   1747     /*** IAudioPeakMeter methods ***/
   1748     HRESULT (STDMETHODCALLTYPE *GetChannelCount)(
   1749         IAudioPeakMeter *This,
   1750         UINT *pcChannels);
   1751 
   1752     HRESULT (STDMETHODCALLTYPE *GetLevel)(
   1753         IAudioPeakMeter *This,
   1754         UINT nChannel,
   1755         float *pfLevel);
   1756 
   1757     END_INTERFACE
   1758 } IAudioPeakMeterVtbl;
   1759 
   1760 interface IAudioPeakMeter {
   1761     CONST_VTBL IAudioPeakMeterVtbl* lpVtbl;
   1762 };
   1763 
   1764 #ifdef COBJMACROS
   1765 #ifndef WIDL_C_INLINE_WRAPPERS
   1766 /*** IUnknown methods ***/
   1767 #define IAudioPeakMeter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1768 #define IAudioPeakMeter_AddRef(This) (This)->lpVtbl->AddRef(This)
   1769 #define IAudioPeakMeter_Release(This) (This)->lpVtbl->Release(This)
   1770 /*** IAudioPeakMeter methods ***/
   1771 #define IAudioPeakMeter_GetChannelCount(This,pcChannels) (This)->lpVtbl->GetChannelCount(This,pcChannels)
   1772 #define IAudioPeakMeter_GetLevel(This,nChannel,pfLevel) (This)->lpVtbl->GetLevel(This,nChannel,pfLevel)
   1773 #else
   1774 /*** IUnknown methods ***/
   1775 static inline HRESULT IAudioPeakMeter_QueryInterface(IAudioPeakMeter* This,REFIID riid,void **ppvObject) {
   1776     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1777 }
   1778 static inline ULONG IAudioPeakMeter_AddRef(IAudioPeakMeter* This) {
   1779     return This->lpVtbl->AddRef(This);
   1780 }
   1781 static inline ULONG IAudioPeakMeter_Release(IAudioPeakMeter* This) {
   1782     return This->lpVtbl->Release(This);
   1783 }
   1784 /*** IAudioPeakMeter methods ***/
   1785 static inline HRESULT IAudioPeakMeter_GetChannelCount(IAudioPeakMeter* This,UINT *pcChannels) {
   1786     return This->lpVtbl->GetChannelCount(This,pcChannels);
   1787 }
   1788 static inline HRESULT IAudioPeakMeter_GetLevel(IAudioPeakMeter* This,UINT nChannel,float *pfLevel) {
   1789     return This->lpVtbl->GetLevel(This,nChannel,pfLevel);
   1790 }
   1791 #endif
   1792 #endif
   1793 
   1794 #endif
   1795 
   1796 
   1797 #endif  /* __IAudioPeakMeter_INTERFACE_DEFINED__ */
   1798 
   1799 /*****************************************************************************
   1800  * IDeviceSpecificProperty interface
   1801  */
   1802 #ifndef __IDeviceSpecificProperty_INTERFACE_DEFINED__
   1803 #define __IDeviceSpecificProperty_INTERFACE_DEFINED__
   1804 
   1805 DEFINE_GUID(IID_IDeviceSpecificProperty, 0x3b22bcbf, 0x2586, 0x4af0, 0x85,0x83, 0x20,0x5d,0x39,0x1b,0x80,0x7c);
   1806 #if defined(__cplusplus) && !defined(CINTERFACE)
   1807 MIDL_INTERFACE("3b22bcbf-2586-4af0-8583-205d391b807c")
   1808 IDeviceSpecificProperty : public IUnknown
   1809 {
   1810     virtual HRESULT STDMETHODCALLTYPE GetType(
   1811         VARTYPE *pVType) = 0;
   1812 
   1813     virtual HRESULT STDMETHODCALLTYPE GetValue(
   1814         VARTYPE *pvType,
   1815         DWORD *pcbValue) = 0;
   1816 
   1817     virtual HRESULT STDMETHODCALLTYPE SetValue(
   1818         void *pvValue,
   1819         DWORD cbValue,
   1820         LPCGUID pguidEventContext) = 0;
   1821 
   1822     virtual HRESULT STDMETHODCALLTYPE Get4BRange(
   1823         LONG *plMin,
   1824         LONG *plMax,
   1825         LONG *plStepping) = 0;
   1826 
   1827 };
   1828 #ifdef __CRT_UUID_DECL
   1829 __CRT_UUID_DECL(IDeviceSpecificProperty, 0x3b22bcbf, 0x2586, 0x4af0, 0x85,0x83, 0x20,0x5d,0x39,0x1b,0x80,0x7c)
   1830 #endif
   1831 #else
   1832 typedef struct IDeviceSpecificPropertyVtbl {
   1833     BEGIN_INTERFACE
   1834 
   1835     /*** IUnknown methods ***/
   1836     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1837         IDeviceSpecificProperty *This,
   1838         REFIID riid,
   1839         void **ppvObject);
   1840 
   1841     ULONG (STDMETHODCALLTYPE *AddRef)(
   1842         IDeviceSpecificProperty *This);
   1843 
   1844     ULONG (STDMETHODCALLTYPE *Release)(
   1845         IDeviceSpecificProperty *This);
   1846 
   1847     /*** IDeviceSpecificProperty methods ***/
   1848     HRESULT (STDMETHODCALLTYPE *GetType)(
   1849         IDeviceSpecificProperty *This,
   1850         VARTYPE *pVType);
   1851 
   1852     HRESULT (STDMETHODCALLTYPE *GetValue)(
   1853         IDeviceSpecificProperty *This,
   1854         VARTYPE *pvType,
   1855         DWORD *pcbValue);
   1856 
   1857     HRESULT (STDMETHODCALLTYPE *SetValue)(
   1858         IDeviceSpecificProperty *This,
   1859         void *pvValue,
   1860         DWORD cbValue,
   1861         LPCGUID pguidEventContext);
   1862 
   1863     HRESULT (STDMETHODCALLTYPE *Get4BRange)(
   1864         IDeviceSpecificProperty *This,
   1865         LONG *plMin,
   1866         LONG *plMax,
   1867         LONG *plStepping);
   1868 
   1869     END_INTERFACE
   1870 } IDeviceSpecificPropertyVtbl;
   1871 
   1872 interface IDeviceSpecificProperty {
   1873     CONST_VTBL IDeviceSpecificPropertyVtbl* lpVtbl;
   1874 };
   1875 
   1876 #ifdef COBJMACROS
   1877 #ifndef WIDL_C_INLINE_WRAPPERS
   1878 /*** IUnknown methods ***/
   1879 #define IDeviceSpecificProperty_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1880 #define IDeviceSpecificProperty_AddRef(This) (This)->lpVtbl->AddRef(This)
   1881 #define IDeviceSpecificProperty_Release(This) (This)->lpVtbl->Release(This)
   1882 /*** IDeviceSpecificProperty methods ***/
   1883 #define IDeviceSpecificProperty_GetType(This,pVType) (This)->lpVtbl->GetType(This,pVType)
   1884 #define IDeviceSpecificProperty_GetValue(This,pvType,pcbValue) (This)->lpVtbl->GetValue(This,pvType,pcbValue)
   1885 #define IDeviceSpecificProperty_SetValue(This,pvValue,cbValue,pguidEventContext) (This)->lpVtbl->SetValue(This,pvValue,cbValue,pguidEventContext)
   1886 #define IDeviceSpecificProperty_Get4BRange(This,plMin,plMax,plStepping) (This)->lpVtbl->Get4BRange(This,plMin,plMax,plStepping)
   1887 #else
   1888 /*** IUnknown methods ***/
   1889 static inline HRESULT IDeviceSpecificProperty_QueryInterface(IDeviceSpecificProperty* This,REFIID riid,void **ppvObject) {
   1890     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1891 }
   1892 static inline ULONG IDeviceSpecificProperty_AddRef(IDeviceSpecificProperty* This) {
   1893     return This->lpVtbl->AddRef(This);
   1894 }
   1895 static inline ULONG IDeviceSpecificProperty_Release(IDeviceSpecificProperty* This) {
   1896     return This->lpVtbl->Release(This);
   1897 }
   1898 /*** IDeviceSpecificProperty methods ***/
   1899 static inline HRESULT IDeviceSpecificProperty_GetType(IDeviceSpecificProperty* This,VARTYPE *pVType) {
   1900     return This->lpVtbl->GetType(This,pVType);
   1901 }
   1902 static inline HRESULT IDeviceSpecificProperty_GetValue(IDeviceSpecificProperty* This,VARTYPE *pvType,DWORD *pcbValue) {
   1903     return This->lpVtbl->GetValue(This,pvType,pcbValue);
   1904 }
   1905 static inline HRESULT IDeviceSpecificProperty_SetValue(IDeviceSpecificProperty* This,void *pvValue,DWORD cbValue,LPCGUID pguidEventContext) {
   1906     return This->lpVtbl->SetValue(This,pvValue,cbValue,pguidEventContext);
   1907 }
   1908 static inline HRESULT IDeviceSpecificProperty_Get4BRange(IDeviceSpecificProperty* This,LONG *plMin,LONG *plMax,LONG *plStepping) {
   1909     return This->lpVtbl->Get4BRange(This,plMin,plMax,plStepping);
   1910 }
   1911 #endif
   1912 #endif
   1913 
   1914 #endif
   1915 
   1916 
   1917 #endif  /* __IDeviceSpecificProperty_INTERFACE_DEFINED__ */
   1918 
   1919 /*****************************************************************************
   1920  * IKsFormatSupport interface
   1921  */
   1922 #ifndef __IKsFormatSupport_INTERFACE_DEFINED__
   1923 #define __IKsFormatSupport_INTERFACE_DEFINED__
   1924 
   1925 DEFINE_GUID(IID_IKsFormatSupport, 0x3cb4a69d, 0xbb6f, 0x4d2b, 0x95,0xb7, 0x45,0x2d,0x2c,0x15,0x5d,0xb5);
   1926 #if defined(__cplusplus) && !defined(CINTERFACE)
   1927 MIDL_INTERFACE("3cb4a69d-bb6f-4d2b-95b7-452d2c155db5")
   1928 IKsFormatSupport : public IUnknown
   1929 {
   1930     virtual HRESULT STDMETHODCALLTYPE IsFormatSupported(
   1931         PKSDATAFORMAT pKsFormat,
   1932         DWORD cbFormat,
   1933         WINBOOL *pbSupported) = 0;
   1934 
   1935     virtual HRESULT STDMETHODCALLTYPE GetDevicePreferredFormat(
   1936         PKSDATAFORMAT *ppKsFormat) = 0;
   1937 
   1938 };
   1939 #ifdef __CRT_UUID_DECL
   1940 __CRT_UUID_DECL(IKsFormatSupport, 0x3cb4a69d, 0xbb6f, 0x4d2b, 0x95,0xb7, 0x45,0x2d,0x2c,0x15,0x5d,0xb5)
   1941 #endif
   1942 #else
   1943 typedef struct IKsFormatSupportVtbl {
   1944     BEGIN_INTERFACE
   1945 
   1946     /*** IUnknown methods ***/
   1947     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   1948         IKsFormatSupport *This,
   1949         REFIID riid,
   1950         void **ppvObject);
   1951 
   1952     ULONG (STDMETHODCALLTYPE *AddRef)(
   1953         IKsFormatSupport *This);
   1954 
   1955     ULONG (STDMETHODCALLTYPE *Release)(
   1956         IKsFormatSupport *This);
   1957 
   1958     /*** IKsFormatSupport methods ***/
   1959     HRESULT (STDMETHODCALLTYPE *IsFormatSupported)(
   1960         IKsFormatSupport *This,
   1961         PKSDATAFORMAT pKsFormat,
   1962         DWORD cbFormat,
   1963         WINBOOL *pbSupported);
   1964 
   1965     HRESULT (STDMETHODCALLTYPE *GetDevicePreferredFormat)(
   1966         IKsFormatSupport *This,
   1967         PKSDATAFORMAT *ppKsFormat);
   1968 
   1969     END_INTERFACE
   1970 } IKsFormatSupportVtbl;
   1971 
   1972 interface IKsFormatSupport {
   1973     CONST_VTBL IKsFormatSupportVtbl* lpVtbl;
   1974 };
   1975 
   1976 #ifdef COBJMACROS
   1977 #ifndef WIDL_C_INLINE_WRAPPERS
   1978 /*** IUnknown methods ***/
   1979 #define IKsFormatSupport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   1980 #define IKsFormatSupport_AddRef(This) (This)->lpVtbl->AddRef(This)
   1981 #define IKsFormatSupport_Release(This) (This)->lpVtbl->Release(This)
   1982 /*** IKsFormatSupport methods ***/
   1983 #define IKsFormatSupport_IsFormatSupported(This,pKsFormat,cbFormat,pbSupported) (This)->lpVtbl->IsFormatSupported(This,pKsFormat,cbFormat,pbSupported)
   1984 #define IKsFormatSupport_GetDevicePreferredFormat(This,ppKsFormat) (This)->lpVtbl->GetDevicePreferredFormat(This,ppKsFormat)
   1985 #else
   1986 /*** IUnknown methods ***/
   1987 static inline HRESULT IKsFormatSupport_QueryInterface(IKsFormatSupport* This,REFIID riid,void **ppvObject) {
   1988     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   1989 }
   1990 static inline ULONG IKsFormatSupport_AddRef(IKsFormatSupport* This) {
   1991     return This->lpVtbl->AddRef(This);
   1992 }
   1993 static inline ULONG IKsFormatSupport_Release(IKsFormatSupport* This) {
   1994     return This->lpVtbl->Release(This);
   1995 }
   1996 /*** IKsFormatSupport methods ***/
   1997 static inline HRESULT IKsFormatSupport_IsFormatSupported(IKsFormatSupport* This,PKSDATAFORMAT pKsFormat,DWORD cbFormat,WINBOOL *pbSupported) {
   1998     return This->lpVtbl->IsFormatSupported(This,pKsFormat,cbFormat,pbSupported);
   1999 }
   2000 static inline HRESULT IKsFormatSupport_GetDevicePreferredFormat(IKsFormatSupport* This,PKSDATAFORMAT *ppKsFormat) {
   2001     return This->lpVtbl->GetDevicePreferredFormat(This,ppKsFormat);
   2002 }
   2003 #endif
   2004 #endif
   2005 
   2006 #endif
   2007 
   2008 
   2009 #endif  /* __IKsFormatSupport_INTERFACE_DEFINED__ */
   2010 
   2011 /*****************************************************************************
   2012  * IKsJackDescription interface
   2013  */
   2014 #ifndef __IKsJackDescription_INTERFACE_DEFINED__
   2015 #define __IKsJackDescription_INTERFACE_DEFINED__
   2016 
   2017 DEFINE_GUID(IID_IKsJackDescription, 0x4509f757, 0x2d46, 0x4637, 0x8e,0x62, 0xce,0x7d,0xb9,0x44,0xf5,0x7b);
   2018 #if defined(__cplusplus) && !defined(CINTERFACE)
   2019 MIDL_INTERFACE("4509f757-2d46-4637-8e62-ce7db944f57b")
   2020 IKsJackDescription : public IUnknown
   2021 {
   2022     virtual HRESULT STDMETHODCALLTYPE GetJackCount(
   2023         UINT *pcJacks) = 0;
   2024 
   2025     virtual HRESULT STDMETHODCALLTYPE GetJackDescription(
   2026         UINT nJack,
   2027         KSJACK_DESCRIPTION *pDescription) = 0;
   2028 
   2029 };
   2030 #ifdef __CRT_UUID_DECL
   2031 __CRT_UUID_DECL(IKsJackDescription, 0x4509f757, 0x2d46, 0x4637, 0x8e,0x62, 0xce,0x7d,0xb9,0x44,0xf5,0x7b)
   2032 #endif
   2033 #else
   2034 typedef struct IKsJackDescriptionVtbl {
   2035     BEGIN_INTERFACE
   2036 
   2037     /*** IUnknown methods ***/
   2038     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2039         IKsJackDescription *This,
   2040         REFIID riid,
   2041         void **ppvObject);
   2042 
   2043     ULONG (STDMETHODCALLTYPE *AddRef)(
   2044         IKsJackDescription *This);
   2045 
   2046     ULONG (STDMETHODCALLTYPE *Release)(
   2047         IKsJackDescription *This);
   2048 
   2049     /*** IKsJackDescription methods ***/
   2050     HRESULT (STDMETHODCALLTYPE *GetJackCount)(
   2051         IKsJackDescription *This,
   2052         UINT *pcJacks);
   2053 
   2054     HRESULT (STDMETHODCALLTYPE *GetJackDescription)(
   2055         IKsJackDescription *This,
   2056         UINT nJack,
   2057         KSJACK_DESCRIPTION *pDescription);
   2058 
   2059     END_INTERFACE
   2060 } IKsJackDescriptionVtbl;
   2061 
   2062 interface IKsJackDescription {
   2063     CONST_VTBL IKsJackDescriptionVtbl* lpVtbl;
   2064 };
   2065 
   2066 #ifdef COBJMACROS
   2067 #ifndef WIDL_C_INLINE_WRAPPERS
   2068 /*** IUnknown methods ***/
   2069 #define IKsJackDescription_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2070 #define IKsJackDescription_AddRef(This) (This)->lpVtbl->AddRef(This)
   2071 #define IKsJackDescription_Release(This) (This)->lpVtbl->Release(This)
   2072 /*** IKsJackDescription methods ***/
   2073 #define IKsJackDescription_GetJackCount(This,pcJacks) (This)->lpVtbl->GetJackCount(This,pcJacks)
   2074 #define IKsJackDescription_GetJackDescription(This,nJack,pDescription) (This)->lpVtbl->GetJackDescription(This,nJack,pDescription)
   2075 #else
   2076 /*** IUnknown methods ***/
   2077 static inline HRESULT IKsJackDescription_QueryInterface(IKsJackDescription* This,REFIID riid,void **ppvObject) {
   2078     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2079 }
   2080 static inline ULONG IKsJackDescription_AddRef(IKsJackDescription* This) {
   2081     return This->lpVtbl->AddRef(This);
   2082 }
   2083 static inline ULONG IKsJackDescription_Release(IKsJackDescription* This) {
   2084     return This->lpVtbl->Release(This);
   2085 }
   2086 /*** IKsJackDescription methods ***/
   2087 static inline HRESULT IKsJackDescription_GetJackCount(IKsJackDescription* This,UINT *pcJacks) {
   2088     return This->lpVtbl->GetJackCount(This,pcJacks);
   2089 }
   2090 static inline HRESULT IKsJackDescription_GetJackDescription(IKsJackDescription* This,UINT nJack,KSJACK_DESCRIPTION *pDescription) {
   2091     return This->lpVtbl->GetJackDescription(This,nJack,pDescription);
   2092 }
   2093 #endif
   2094 #endif
   2095 
   2096 #endif
   2097 
   2098 
   2099 #endif  /* __IKsJackDescription_INTERFACE_DEFINED__ */
   2100 
   2101 /*****************************************************************************
   2102  * IKsJackDescription2 interface
   2103  */
   2104 #ifndef __IKsJackDescription2_INTERFACE_DEFINED__
   2105 #define __IKsJackDescription2_INTERFACE_DEFINED__
   2106 
   2107 DEFINE_GUID(IID_IKsJackDescription2, 0x478f3a9b, 0xe0c9, 0x4827, 0x92,0x28, 0x6f,0x55,0x05,0xff,0xe7,0x6a);
   2108 #if defined(__cplusplus) && !defined(CINTERFACE)
   2109 MIDL_INTERFACE("478f3a9b-e0c9-4827-9228-6f5505ffe76a")
   2110 IKsJackDescription2 : public IUnknown
   2111 {
   2112     virtual HRESULT STDMETHODCALLTYPE GetJackCount(
   2113         UINT *pcJacks) = 0;
   2114 
   2115     virtual HRESULT STDMETHODCALLTYPE GetJackDescription2(
   2116         UINT nJack,
   2117         KSJACK_DESCRIPTION2 *pDescription2) = 0;
   2118 
   2119 };
   2120 #ifdef __CRT_UUID_DECL
   2121 __CRT_UUID_DECL(IKsJackDescription2, 0x478f3a9b, 0xe0c9, 0x4827, 0x92,0x28, 0x6f,0x55,0x05,0xff,0xe7,0x6a)
   2122 #endif
   2123 #else
   2124 typedef struct IKsJackDescription2Vtbl {
   2125     BEGIN_INTERFACE
   2126 
   2127     /*** IUnknown methods ***/
   2128     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2129         IKsJackDescription2 *This,
   2130         REFIID riid,
   2131         void **ppvObject);
   2132 
   2133     ULONG (STDMETHODCALLTYPE *AddRef)(
   2134         IKsJackDescription2 *This);
   2135 
   2136     ULONG (STDMETHODCALLTYPE *Release)(
   2137         IKsJackDescription2 *This);
   2138 
   2139     /*** IKsJackDescription2 methods ***/
   2140     HRESULT (STDMETHODCALLTYPE *GetJackCount)(
   2141         IKsJackDescription2 *This,
   2142         UINT *pcJacks);
   2143 
   2144     HRESULT (STDMETHODCALLTYPE *GetJackDescription2)(
   2145         IKsJackDescription2 *This,
   2146         UINT nJack,
   2147         KSJACK_DESCRIPTION2 *pDescription2);
   2148 
   2149     END_INTERFACE
   2150 } IKsJackDescription2Vtbl;
   2151 
   2152 interface IKsJackDescription2 {
   2153     CONST_VTBL IKsJackDescription2Vtbl* lpVtbl;
   2154 };
   2155 
   2156 #ifdef COBJMACROS
   2157 #ifndef WIDL_C_INLINE_WRAPPERS
   2158 /*** IUnknown methods ***/
   2159 #define IKsJackDescription2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2160 #define IKsJackDescription2_AddRef(This) (This)->lpVtbl->AddRef(This)
   2161 #define IKsJackDescription2_Release(This) (This)->lpVtbl->Release(This)
   2162 /*** IKsJackDescription2 methods ***/
   2163 #define IKsJackDescription2_GetJackCount(This,pcJacks) (This)->lpVtbl->GetJackCount(This,pcJacks)
   2164 #define IKsJackDescription2_GetJackDescription2(This,nJack,pDescription2) (This)->lpVtbl->GetJackDescription2(This,nJack,pDescription2)
   2165 #else
   2166 /*** IUnknown methods ***/
   2167 static inline HRESULT IKsJackDescription2_QueryInterface(IKsJackDescription2* This,REFIID riid,void **ppvObject) {
   2168     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2169 }
   2170 static inline ULONG IKsJackDescription2_AddRef(IKsJackDescription2* This) {
   2171     return This->lpVtbl->AddRef(This);
   2172 }
   2173 static inline ULONG IKsJackDescription2_Release(IKsJackDescription2* This) {
   2174     return This->lpVtbl->Release(This);
   2175 }
   2176 /*** IKsJackDescription2 methods ***/
   2177 static inline HRESULT IKsJackDescription2_GetJackCount(IKsJackDescription2* This,UINT *pcJacks) {
   2178     return This->lpVtbl->GetJackCount(This,pcJacks);
   2179 }
   2180 static inline HRESULT IKsJackDescription2_GetJackDescription2(IKsJackDescription2* This,UINT nJack,KSJACK_DESCRIPTION2 *pDescription2) {
   2181     return This->lpVtbl->GetJackDescription2(This,nJack,pDescription2);
   2182 }
   2183 #endif
   2184 #endif
   2185 
   2186 #endif
   2187 
   2188 
   2189 #endif  /* __IKsJackDescription2_INTERFACE_DEFINED__ */
   2190 
   2191 /*****************************************************************************
   2192  * IKsJackSinkInformation interface
   2193  */
   2194 #ifndef __IKsJackSinkInformation_INTERFACE_DEFINED__
   2195 #define __IKsJackSinkInformation_INTERFACE_DEFINED__
   2196 
   2197 DEFINE_GUID(IID_IKsJackSinkInformation, 0xd9bd72ed, 0x290f, 0x4581, 0x9f,0xf3, 0x61,0x02,0x7a,0x8f,0xe5,0x32);
   2198 #if defined(__cplusplus) && !defined(CINTERFACE)
   2199 MIDL_INTERFACE("d9bd72ed-290f-4581-9ff3-61027a8fe532")
   2200 IKsJackSinkInformation : public IUnknown
   2201 {
   2202     virtual HRESULT STDMETHODCALLTYPE GetJackSinkInformation(
   2203         KSJACK_SINK_INFORMATION *pJackSinkInformation) = 0;
   2204 
   2205 };
   2206 #ifdef __CRT_UUID_DECL
   2207 __CRT_UUID_DECL(IKsJackSinkInformation, 0xd9bd72ed, 0x290f, 0x4581, 0x9f,0xf3, 0x61,0x02,0x7a,0x8f,0xe5,0x32)
   2208 #endif
   2209 #else
   2210 typedef struct IKsJackSinkInformationVtbl {
   2211     BEGIN_INTERFACE
   2212 
   2213     /*** IUnknown methods ***/
   2214     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2215         IKsJackSinkInformation *This,
   2216         REFIID riid,
   2217         void **ppvObject);
   2218 
   2219     ULONG (STDMETHODCALLTYPE *AddRef)(
   2220         IKsJackSinkInformation *This);
   2221 
   2222     ULONG (STDMETHODCALLTYPE *Release)(
   2223         IKsJackSinkInformation *This);
   2224 
   2225     /*** IKsJackSinkInformation methods ***/
   2226     HRESULT (STDMETHODCALLTYPE *GetJackSinkInformation)(
   2227         IKsJackSinkInformation *This,
   2228         KSJACK_SINK_INFORMATION *pJackSinkInformation);
   2229 
   2230     END_INTERFACE
   2231 } IKsJackSinkInformationVtbl;
   2232 
   2233 interface IKsJackSinkInformation {
   2234     CONST_VTBL IKsJackSinkInformationVtbl* lpVtbl;
   2235 };
   2236 
   2237 #ifdef COBJMACROS
   2238 #ifndef WIDL_C_INLINE_WRAPPERS
   2239 /*** IUnknown methods ***/
   2240 #define IKsJackSinkInformation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2241 #define IKsJackSinkInformation_AddRef(This) (This)->lpVtbl->AddRef(This)
   2242 #define IKsJackSinkInformation_Release(This) (This)->lpVtbl->Release(This)
   2243 /*** IKsJackSinkInformation methods ***/
   2244 #define IKsJackSinkInformation_GetJackSinkInformation(This,pJackSinkInformation) (This)->lpVtbl->GetJackSinkInformation(This,pJackSinkInformation)
   2245 #else
   2246 /*** IUnknown methods ***/
   2247 static inline HRESULT IKsJackSinkInformation_QueryInterface(IKsJackSinkInformation* This,REFIID riid,void **ppvObject) {
   2248     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2249 }
   2250 static inline ULONG IKsJackSinkInformation_AddRef(IKsJackSinkInformation* This) {
   2251     return This->lpVtbl->AddRef(This);
   2252 }
   2253 static inline ULONG IKsJackSinkInformation_Release(IKsJackSinkInformation* This) {
   2254     return This->lpVtbl->Release(This);
   2255 }
   2256 /*** IKsJackSinkInformation methods ***/
   2257 static inline HRESULT IKsJackSinkInformation_GetJackSinkInformation(IKsJackSinkInformation* This,KSJACK_SINK_INFORMATION *pJackSinkInformation) {
   2258     return This->lpVtbl->GetJackSinkInformation(This,pJackSinkInformation);
   2259 }
   2260 #endif
   2261 #endif
   2262 
   2263 #endif
   2264 
   2265 
   2266 #endif  /* __IKsJackSinkInformation_INTERFACE_DEFINED__ */
   2267 
   2268 /*****************************************************************************
   2269  * IPartsList interface
   2270  */
   2271 #ifndef __IPartsList_INTERFACE_DEFINED__
   2272 #define __IPartsList_INTERFACE_DEFINED__
   2273 
   2274 DEFINE_GUID(IID_IPartsList, 0x6daa848c, 0x5eb0, 0x45cc, 0xae,0xa5, 0x99,0x8a,0x2c,0xda,0x1f,0xfb);
   2275 #if defined(__cplusplus) && !defined(CINTERFACE)
   2276 MIDL_INTERFACE("6daa848c-5eb0-45cc-aea5-998a2cda1ffb")
   2277 IPartsList : public IUnknown
   2278 {
   2279     virtual HRESULT STDMETHODCALLTYPE GetCount(
   2280         UINT *pCount) = 0;
   2281 
   2282     virtual HRESULT STDMETHODCALLTYPE GetPart(
   2283         UINT nIndex,
   2284         IPart **ppPart) = 0;
   2285 
   2286 };
   2287 #ifdef __CRT_UUID_DECL
   2288 __CRT_UUID_DECL(IPartsList, 0x6daa848c, 0x5eb0, 0x45cc, 0xae,0xa5, 0x99,0x8a,0x2c,0xda,0x1f,0xfb)
   2289 #endif
   2290 #else
   2291 typedef struct IPartsListVtbl {
   2292     BEGIN_INTERFACE
   2293 
   2294     /*** IUnknown methods ***/
   2295     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2296         IPartsList *This,
   2297         REFIID riid,
   2298         void **ppvObject);
   2299 
   2300     ULONG (STDMETHODCALLTYPE *AddRef)(
   2301         IPartsList *This);
   2302 
   2303     ULONG (STDMETHODCALLTYPE *Release)(
   2304         IPartsList *This);
   2305 
   2306     /*** IPartsList methods ***/
   2307     HRESULT (STDMETHODCALLTYPE *GetCount)(
   2308         IPartsList *This,
   2309         UINT *pCount);
   2310 
   2311     HRESULT (STDMETHODCALLTYPE *GetPart)(
   2312         IPartsList *This,
   2313         UINT nIndex,
   2314         IPart **ppPart);
   2315 
   2316     END_INTERFACE
   2317 } IPartsListVtbl;
   2318 
   2319 interface IPartsList {
   2320     CONST_VTBL IPartsListVtbl* lpVtbl;
   2321 };
   2322 
   2323 #ifdef COBJMACROS
   2324 #ifndef WIDL_C_INLINE_WRAPPERS
   2325 /*** IUnknown methods ***/
   2326 #define IPartsList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2327 #define IPartsList_AddRef(This) (This)->lpVtbl->AddRef(This)
   2328 #define IPartsList_Release(This) (This)->lpVtbl->Release(This)
   2329 /*** IPartsList methods ***/
   2330 #define IPartsList_GetCount(This,pCount) (This)->lpVtbl->GetCount(This,pCount)
   2331 #define IPartsList_GetPart(This,nIndex,ppPart) (This)->lpVtbl->GetPart(This,nIndex,ppPart)
   2332 #else
   2333 /*** IUnknown methods ***/
   2334 static inline HRESULT IPartsList_QueryInterface(IPartsList* This,REFIID riid,void **ppvObject) {
   2335     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2336 }
   2337 static inline ULONG IPartsList_AddRef(IPartsList* This) {
   2338     return This->lpVtbl->AddRef(This);
   2339 }
   2340 static inline ULONG IPartsList_Release(IPartsList* This) {
   2341     return This->lpVtbl->Release(This);
   2342 }
   2343 /*** IPartsList methods ***/
   2344 static inline HRESULT IPartsList_GetCount(IPartsList* This,UINT *pCount) {
   2345     return This->lpVtbl->GetCount(This,pCount);
   2346 }
   2347 static inline HRESULT IPartsList_GetPart(IPartsList* This,UINT nIndex,IPart **ppPart) {
   2348     return This->lpVtbl->GetPart(This,nIndex,ppPart);
   2349 }
   2350 #endif
   2351 #endif
   2352 
   2353 #endif
   2354 
   2355 
   2356 #endif  /* __IPartsList_INTERFACE_DEFINED__ */
   2357 
   2358 /*****************************************************************************
   2359  * IPart interface
   2360  */
   2361 #ifndef __IPart_INTERFACE_DEFINED__
   2362 #define __IPart_INTERFACE_DEFINED__
   2363 
   2364 DEFINE_GUID(IID_IPart, 0xae2de0e4, 0x5bca, 0x4f2d, 0xaa,0x46, 0x5d,0x13,0xf8,0xfd,0xb3,0xa9);
   2365 #if defined(__cplusplus) && !defined(CINTERFACE)
   2366 MIDL_INTERFACE("ae2de0e4-5bca-4f2d-aa46-5d13f8fdb3a9")
   2367 IPart : public IUnknown
   2368 {
   2369     virtual HRESULT STDMETHODCALLTYPE GetName(
   2370         LPWSTR *ppwstrName) = 0;
   2371 
   2372     virtual HRESULT STDMETHODCALLTYPE GetLocalId(
   2373         UINT *pnId) = 0;
   2374 
   2375     virtual HRESULT STDMETHODCALLTYPE GetGlobalId(
   2376         LPWSTR *ppwstrGlobalId) = 0;
   2377 
   2378     virtual HRESULT STDMETHODCALLTYPE GetPartType(
   2379         PartType *pPartType) = 0;
   2380 
   2381     virtual HRESULT STDMETHODCALLTYPE GetSubType(
   2382         GUID *pSubType) = 0;
   2383 
   2384     virtual HRESULT STDMETHODCALLTYPE GetControlInterfaceCount(
   2385         UINT *pCount) = 0;
   2386 
   2387     virtual HRESULT STDMETHODCALLTYPE GetControlInterface(
   2388         UINT nIndex,
   2389         IControlInterface **ppInterfaceDesc) = 0;
   2390 
   2391     virtual HRESULT STDMETHODCALLTYPE EnumPartsIncoming(
   2392         IPartsList **ppParts) = 0;
   2393 
   2394     virtual HRESULT STDMETHODCALLTYPE EnumPartsOutgoing(
   2395         IPartsList **ppParts) = 0;
   2396 
   2397     virtual HRESULT STDMETHODCALLTYPE GetTopologyObjects(
   2398         IDeviceTopology **ppTopology) = 0;
   2399 
   2400     virtual HRESULT STDMETHODCALLTYPE Activate(
   2401         DWORD dwClsContext,
   2402         REFIID refiid,
   2403         void **ppvObject) = 0;
   2404 
   2405     virtual HRESULT STDMETHODCALLTYPE RegisterControlChangeCallback(
   2406         REFGUID riid,
   2407         IControlChangeNotify *pNotify) = 0;
   2408 
   2409     virtual HRESULT STDMETHODCALLTYPE UnregisterControlChangeCallback(
   2410         IControlChangeNotify *pNotify) = 0;
   2411 
   2412 };
   2413 #ifdef __CRT_UUID_DECL
   2414 __CRT_UUID_DECL(IPart, 0xae2de0e4, 0x5bca, 0x4f2d, 0xaa,0x46, 0x5d,0x13,0xf8,0xfd,0xb3,0xa9)
   2415 #endif
   2416 #else
   2417 typedef struct IPartVtbl {
   2418     BEGIN_INTERFACE
   2419 
   2420     /*** IUnknown methods ***/
   2421     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2422         IPart *This,
   2423         REFIID riid,
   2424         void **ppvObject);
   2425 
   2426     ULONG (STDMETHODCALLTYPE *AddRef)(
   2427         IPart *This);
   2428 
   2429     ULONG (STDMETHODCALLTYPE *Release)(
   2430         IPart *This);
   2431 
   2432     /*** IPart methods ***/
   2433     HRESULT (STDMETHODCALLTYPE *GetName)(
   2434         IPart *This,
   2435         LPWSTR *ppwstrName);
   2436 
   2437     HRESULT (STDMETHODCALLTYPE *GetLocalId)(
   2438         IPart *This,
   2439         UINT *pnId);
   2440 
   2441     HRESULT (STDMETHODCALLTYPE *GetGlobalId)(
   2442         IPart *This,
   2443         LPWSTR *ppwstrGlobalId);
   2444 
   2445     HRESULT (STDMETHODCALLTYPE *GetPartType)(
   2446         IPart *This,
   2447         PartType *pPartType);
   2448 
   2449     HRESULT (STDMETHODCALLTYPE *GetSubType)(
   2450         IPart *This,
   2451         GUID *pSubType);
   2452 
   2453     HRESULT (STDMETHODCALLTYPE *GetControlInterfaceCount)(
   2454         IPart *This,
   2455         UINT *pCount);
   2456 
   2457     HRESULT (STDMETHODCALLTYPE *GetControlInterface)(
   2458         IPart *This,
   2459         UINT nIndex,
   2460         IControlInterface **ppInterfaceDesc);
   2461 
   2462     HRESULT (STDMETHODCALLTYPE *EnumPartsIncoming)(
   2463         IPart *This,
   2464         IPartsList **ppParts);
   2465 
   2466     HRESULT (STDMETHODCALLTYPE *EnumPartsOutgoing)(
   2467         IPart *This,
   2468         IPartsList **ppParts);
   2469 
   2470     HRESULT (STDMETHODCALLTYPE *GetTopologyObjects)(
   2471         IPart *This,
   2472         IDeviceTopology **ppTopology);
   2473 
   2474     HRESULT (STDMETHODCALLTYPE *Activate)(
   2475         IPart *This,
   2476         DWORD dwClsContext,
   2477         REFIID refiid,
   2478         void **ppvObject);
   2479 
   2480     HRESULT (STDMETHODCALLTYPE *RegisterControlChangeCallback)(
   2481         IPart *This,
   2482         REFGUID riid,
   2483         IControlChangeNotify *pNotify);
   2484 
   2485     HRESULT (STDMETHODCALLTYPE *UnregisterControlChangeCallback)(
   2486         IPart *This,
   2487         IControlChangeNotify *pNotify);
   2488 
   2489     END_INTERFACE
   2490 } IPartVtbl;
   2491 
   2492 interface IPart {
   2493     CONST_VTBL IPartVtbl* lpVtbl;
   2494 };
   2495 
   2496 #ifdef COBJMACROS
   2497 #ifndef WIDL_C_INLINE_WRAPPERS
   2498 /*** IUnknown methods ***/
   2499 #define IPart_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2500 #define IPart_AddRef(This) (This)->lpVtbl->AddRef(This)
   2501 #define IPart_Release(This) (This)->lpVtbl->Release(This)
   2502 /*** IPart methods ***/
   2503 #define IPart_GetName(This,ppwstrName) (This)->lpVtbl->GetName(This,ppwstrName)
   2504 #define IPart_GetLocalId(This,pnId) (This)->lpVtbl->GetLocalId(This,pnId)
   2505 #define IPart_GetGlobalId(This,ppwstrGlobalId) (This)->lpVtbl->GetGlobalId(This,ppwstrGlobalId)
   2506 #define IPart_GetPartType(This,pPartType) (This)->lpVtbl->GetPartType(This,pPartType)
   2507 #define IPart_GetSubType(This,pSubType) (This)->lpVtbl->GetSubType(This,pSubType)
   2508 #define IPart_GetControlInterfaceCount(This,pCount) (This)->lpVtbl->GetControlInterfaceCount(This,pCount)
   2509 #define IPart_GetControlInterface(This,nIndex,ppInterfaceDesc) (This)->lpVtbl->GetControlInterface(This,nIndex,ppInterfaceDesc)
   2510 #define IPart_EnumPartsIncoming(This,ppParts) (This)->lpVtbl->EnumPartsIncoming(This,ppParts)
   2511 #define IPart_EnumPartsOutgoing(This,ppParts) (This)->lpVtbl->EnumPartsOutgoing(This,ppParts)
   2512 #define IPart_GetTopologyObjects(This,ppTopology) (This)->lpVtbl->GetTopologyObjects(This,ppTopology)
   2513 #define IPart_Activate(This,dwClsContext,refiid,ppvObject) (This)->lpVtbl->Activate(This,dwClsContext,refiid,ppvObject)
   2514 #define IPart_RegisterControlChangeCallback(This,riid,pNotify) (This)->lpVtbl->RegisterControlChangeCallback(This,riid,pNotify)
   2515 #define IPart_UnregisterControlChangeCallback(This,pNotify) (This)->lpVtbl->UnregisterControlChangeCallback(This,pNotify)
   2516 #else
   2517 /*** IUnknown methods ***/
   2518 static inline HRESULT IPart_QueryInterface(IPart* This,REFIID riid,void **ppvObject) {
   2519     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2520 }
   2521 static inline ULONG IPart_AddRef(IPart* This) {
   2522     return This->lpVtbl->AddRef(This);
   2523 }
   2524 static inline ULONG IPart_Release(IPart* This) {
   2525     return This->lpVtbl->Release(This);
   2526 }
   2527 /*** IPart methods ***/
   2528 static inline HRESULT IPart_GetName(IPart* This,LPWSTR *ppwstrName) {
   2529     return This->lpVtbl->GetName(This,ppwstrName);
   2530 }
   2531 static inline HRESULT IPart_GetLocalId(IPart* This,UINT *pnId) {
   2532     return This->lpVtbl->GetLocalId(This,pnId);
   2533 }
   2534 static inline HRESULT IPart_GetGlobalId(IPart* This,LPWSTR *ppwstrGlobalId) {
   2535     return This->lpVtbl->GetGlobalId(This,ppwstrGlobalId);
   2536 }
   2537 static inline HRESULT IPart_GetPartType(IPart* This,PartType *pPartType) {
   2538     return This->lpVtbl->GetPartType(This,pPartType);
   2539 }
   2540 static inline HRESULT IPart_GetSubType(IPart* This,GUID *pSubType) {
   2541     return This->lpVtbl->GetSubType(This,pSubType);
   2542 }
   2543 static inline HRESULT IPart_GetControlInterfaceCount(IPart* This,UINT *pCount) {
   2544     return This->lpVtbl->GetControlInterfaceCount(This,pCount);
   2545 }
   2546 static inline HRESULT IPart_GetControlInterface(IPart* This,UINT nIndex,IControlInterface **ppInterfaceDesc) {
   2547     return This->lpVtbl->GetControlInterface(This,nIndex,ppInterfaceDesc);
   2548 }
   2549 static inline HRESULT IPart_EnumPartsIncoming(IPart* This,IPartsList **ppParts) {
   2550     return This->lpVtbl->EnumPartsIncoming(This,ppParts);
   2551 }
   2552 static inline HRESULT IPart_EnumPartsOutgoing(IPart* This,IPartsList **ppParts) {
   2553     return This->lpVtbl->EnumPartsOutgoing(This,ppParts);
   2554 }
   2555 static inline HRESULT IPart_GetTopologyObjects(IPart* This,IDeviceTopology **ppTopology) {
   2556     return This->lpVtbl->GetTopologyObjects(This,ppTopology);
   2557 }
   2558 static inline HRESULT IPart_Activate(IPart* This,DWORD dwClsContext,REFIID refiid,void **ppvObject) {
   2559     return This->lpVtbl->Activate(This,dwClsContext,refiid,ppvObject);
   2560 }
   2561 static inline HRESULT IPart_RegisterControlChangeCallback(IPart* This,REFGUID riid,IControlChangeNotify *pNotify) {
   2562     return This->lpVtbl->RegisterControlChangeCallback(This,riid,pNotify);
   2563 }
   2564 static inline HRESULT IPart_UnregisterControlChangeCallback(IPart* This,IControlChangeNotify *pNotify) {
   2565     return This->lpVtbl->UnregisterControlChangeCallback(This,pNotify);
   2566 }
   2567 #endif
   2568 #endif
   2569 
   2570 #endif
   2571 
   2572 
   2573 #endif  /* __IPart_INTERFACE_DEFINED__ */
   2574 
   2575 /*****************************************************************************
   2576  * IConnector interface
   2577  */
   2578 #ifndef __IConnector_INTERFACE_DEFINED__
   2579 #define __IConnector_INTERFACE_DEFINED__
   2580 
   2581 DEFINE_GUID(IID_IConnector, 0x9c2c4058, 0x23f5, 0x41de, 0x87,0x7a, 0xdf,0x3a,0xf2,0x36,0xa0,0x9e);
   2582 #if defined(__cplusplus) && !defined(CINTERFACE)
   2583 MIDL_INTERFACE("9c2c4058-23f5-41de-877a-df3af236a09e")
   2584 IConnector : public IUnknown
   2585 {
   2586     virtual HRESULT STDMETHODCALLTYPE GetType(
   2587         ConnectorType *pType) = 0;
   2588 
   2589     virtual HRESULT STDMETHODCALLTYPE GetDataFlow(
   2590         DataFlow *pFlow) = 0;
   2591 
   2592     virtual HRESULT STDMETHODCALLTYPE ConnectTo(
   2593         IConnector *pConnectTo) = 0;
   2594 
   2595     virtual HRESULT STDMETHODCALLTYPE Disconnect(
   2596         ) = 0;
   2597 
   2598     virtual HRESULT STDMETHODCALLTYPE IsConnected(
   2599         WINBOOL *pbConnected) = 0;
   2600 
   2601     virtual HRESULT STDMETHODCALLTYPE GetConnectedTo(
   2602         IConnector **ppConTo) = 0;
   2603 
   2604     virtual HRESULT STDMETHODCALLTYPE GetConnectorIdConnectedTo(
   2605         LPWSTR *ppwstrConnectorId) = 0;
   2606 
   2607     virtual HRESULT STDMETHODCALLTYPE GetDeviceIdConnectedTo(
   2608         LPWSTR *ppwstrDeviceId) = 0;
   2609 
   2610 };
   2611 #ifdef __CRT_UUID_DECL
   2612 __CRT_UUID_DECL(IConnector, 0x9c2c4058, 0x23f5, 0x41de, 0x87,0x7a, 0xdf,0x3a,0xf2,0x36,0xa0,0x9e)
   2613 #endif
   2614 #else
   2615 typedef struct IConnectorVtbl {
   2616     BEGIN_INTERFACE
   2617 
   2618     /*** IUnknown methods ***/
   2619     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2620         IConnector *This,
   2621         REFIID riid,
   2622         void **ppvObject);
   2623 
   2624     ULONG (STDMETHODCALLTYPE *AddRef)(
   2625         IConnector *This);
   2626 
   2627     ULONG (STDMETHODCALLTYPE *Release)(
   2628         IConnector *This);
   2629 
   2630     /*** IConnector methods ***/
   2631     HRESULT (STDMETHODCALLTYPE *GetType)(
   2632         IConnector *This,
   2633         ConnectorType *pType);
   2634 
   2635     HRESULT (STDMETHODCALLTYPE *GetDataFlow)(
   2636         IConnector *This,
   2637         DataFlow *pFlow);
   2638 
   2639     HRESULT (STDMETHODCALLTYPE *ConnectTo)(
   2640         IConnector *This,
   2641         IConnector *pConnectTo);
   2642 
   2643     HRESULT (STDMETHODCALLTYPE *Disconnect)(
   2644         IConnector *This);
   2645 
   2646     HRESULT (STDMETHODCALLTYPE *IsConnected)(
   2647         IConnector *This,
   2648         WINBOOL *pbConnected);
   2649 
   2650     HRESULT (STDMETHODCALLTYPE *GetConnectedTo)(
   2651         IConnector *This,
   2652         IConnector **ppConTo);
   2653 
   2654     HRESULT (STDMETHODCALLTYPE *GetConnectorIdConnectedTo)(
   2655         IConnector *This,
   2656         LPWSTR *ppwstrConnectorId);
   2657 
   2658     HRESULT (STDMETHODCALLTYPE *GetDeviceIdConnectedTo)(
   2659         IConnector *This,
   2660         LPWSTR *ppwstrDeviceId);
   2661 
   2662     END_INTERFACE
   2663 } IConnectorVtbl;
   2664 
   2665 interface IConnector {
   2666     CONST_VTBL IConnectorVtbl* lpVtbl;
   2667 };
   2668 
   2669 #ifdef COBJMACROS
   2670 #ifndef WIDL_C_INLINE_WRAPPERS
   2671 /*** IUnknown methods ***/
   2672 #define IConnector_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2673 #define IConnector_AddRef(This) (This)->lpVtbl->AddRef(This)
   2674 #define IConnector_Release(This) (This)->lpVtbl->Release(This)
   2675 /*** IConnector methods ***/
   2676 #define IConnector_GetType(This,pType) (This)->lpVtbl->GetType(This,pType)
   2677 #define IConnector_GetDataFlow(This,pFlow) (This)->lpVtbl->GetDataFlow(This,pFlow)
   2678 #define IConnector_ConnectTo(This,pConnectTo) (This)->lpVtbl->ConnectTo(This,pConnectTo)
   2679 #define IConnector_Disconnect(This) (This)->lpVtbl->Disconnect(This)
   2680 #define IConnector_IsConnected(This,pbConnected) (This)->lpVtbl->IsConnected(This,pbConnected)
   2681 #define IConnector_GetConnectedTo(This,ppConTo) (This)->lpVtbl->GetConnectedTo(This,ppConTo)
   2682 #define IConnector_GetConnectorIdConnectedTo(This,ppwstrConnectorId) (This)->lpVtbl->GetConnectorIdConnectedTo(This,ppwstrConnectorId)
   2683 #define IConnector_GetDeviceIdConnectedTo(This,ppwstrDeviceId) (This)->lpVtbl->GetDeviceIdConnectedTo(This,ppwstrDeviceId)
   2684 #else
   2685 /*** IUnknown methods ***/
   2686 static inline HRESULT IConnector_QueryInterface(IConnector* This,REFIID riid,void **ppvObject) {
   2687     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2688 }
   2689 static inline ULONG IConnector_AddRef(IConnector* This) {
   2690     return This->lpVtbl->AddRef(This);
   2691 }
   2692 static inline ULONG IConnector_Release(IConnector* This) {
   2693     return This->lpVtbl->Release(This);
   2694 }
   2695 /*** IConnector methods ***/
   2696 static inline HRESULT IConnector_GetType(IConnector* This,ConnectorType *pType) {
   2697     return This->lpVtbl->GetType(This,pType);
   2698 }
   2699 static inline HRESULT IConnector_GetDataFlow(IConnector* This,DataFlow *pFlow) {
   2700     return This->lpVtbl->GetDataFlow(This,pFlow);
   2701 }
   2702 static inline HRESULT IConnector_ConnectTo(IConnector* This,IConnector *pConnectTo) {
   2703     return This->lpVtbl->ConnectTo(This,pConnectTo);
   2704 }
   2705 static inline HRESULT IConnector_Disconnect(IConnector* This) {
   2706     return This->lpVtbl->Disconnect(This);
   2707 }
   2708 static inline HRESULT IConnector_IsConnected(IConnector* This,WINBOOL *pbConnected) {
   2709     return This->lpVtbl->IsConnected(This,pbConnected);
   2710 }
   2711 static inline HRESULT IConnector_GetConnectedTo(IConnector* This,IConnector **ppConTo) {
   2712     return This->lpVtbl->GetConnectedTo(This,ppConTo);
   2713 }
   2714 static inline HRESULT IConnector_GetConnectorIdConnectedTo(IConnector* This,LPWSTR *ppwstrConnectorId) {
   2715     return This->lpVtbl->GetConnectorIdConnectedTo(This,ppwstrConnectorId);
   2716 }
   2717 static inline HRESULT IConnector_GetDeviceIdConnectedTo(IConnector* This,LPWSTR *ppwstrDeviceId) {
   2718     return This->lpVtbl->GetDeviceIdConnectedTo(This,ppwstrDeviceId);
   2719 }
   2720 #endif
   2721 #endif
   2722 
   2723 #endif
   2724 
   2725 
   2726 #endif  /* __IConnector_INTERFACE_DEFINED__ */
   2727 
   2728 /*****************************************************************************
   2729  * ISubUnit interface
   2730  */
   2731 #ifndef __ISubUnit_INTERFACE_DEFINED__
   2732 #define __ISubUnit_INTERFACE_DEFINED__
   2733 
   2734 DEFINE_GUID(IID_ISubUnit, 0x82149a85, 0xdba6, 0x4487, 0x86,0xbb, 0xea,0x8f,0x7f,0xef,0xcc,0x71);
   2735 #if defined(__cplusplus) && !defined(CINTERFACE)
   2736 MIDL_INTERFACE("82149a85-dba6-4487-86bb-ea8f7fefcc71")
   2737 ISubUnit : public IUnknown
   2738 {
   2739 };
   2740 #ifdef __CRT_UUID_DECL
   2741 __CRT_UUID_DECL(ISubUnit, 0x82149a85, 0xdba6, 0x4487, 0x86,0xbb, 0xea,0x8f,0x7f,0xef,0xcc,0x71)
   2742 #endif
   2743 #else
   2744 typedef struct ISubUnitVtbl {
   2745     BEGIN_INTERFACE
   2746 
   2747     /*** IUnknown methods ***/
   2748     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2749         ISubUnit *This,
   2750         REFIID riid,
   2751         void **ppvObject);
   2752 
   2753     ULONG (STDMETHODCALLTYPE *AddRef)(
   2754         ISubUnit *This);
   2755 
   2756     ULONG (STDMETHODCALLTYPE *Release)(
   2757         ISubUnit *This);
   2758 
   2759     END_INTERFACE
   2760 } ISubUnitVtbl;
   2761 
   2762 interface ISubUnit {
   2763     CONST_VTBL ISubUnitVtbl* lpVtbl;
   2764 };
   2765 
   2766 #ifdef COBJMACROS
   2767 #ifndef WIDL_C_INLINE_WRAPPERS
   2768 /*** IUnknown methods ***/
   2769 #define ISubUnit_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2770 #define ISubUnit_AddRef(This) (This)->lpVtbl->AddRef(This)
   2771 #define ISubUnit_Release(This) (This)->lpVtbl->Release(This)
   2772 #else
   2773 /*** IUnknown methods ***/
   2774 static inline HRESULT ISubUnit_QueryInterface(ISubUnit* This,REFIID riid,void **ppvObject) {
   2775     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2776 }
   2777 static inline ULONG ISubUnit_AddRef(ISubUnit* This) {
   2778     return This->lpVtbl->AddRef(This);
   2779 }
   2780 static inline ULONG ISubUnit_Release(ISubUnit* This) {
   2781     return This->lpVtbl->Release(This);
   2782 }
   2783 #endif
   2784 #endif
   2785 
   2786 #endif
   2787 
   2788 
   2789 #endif  /* __ISubUnit_INTERFACE_DEFINED__ */
   2790 
   2791 /*****************************************************************************
   2792  * IControlInterface interface
   2793  */
   2794 #ifndef __IControlInterface_INTERFACE_DEFINED__
   2795 #define __IControlInterface_INTERFACE_DEFINED__
   2796 
   2797 DEFINE_GUID(IID_IControlInterface, 0x45d37c3f, 0x5140, 0x444a, 0xae,0x24, 0x40,0x07,0x89,0xf3,0xcb,0xf3);
   2798 #if defined(__cplusplus) && !defined(CINTERFACE)
   2799 MIDL_INTERFACE("45d37c3f-5140-444a-ae24-400789f3cbf3")
   2800 IControlInterface : public IUnknown
   2801 {
   2802     virtual HRESULT STDMETHODCALLTYPE GetName(
   2803         LPWSTR *ppwstrName) = 0;
   2804 
   2805     virtual HRESULT STDMETHODCALLTYPE GetIID(
   2806         GUID *pIID) = 0;
   2807 
   2808 };
   2809 #ifdef __CRT_UUID_DECL
   2810 __CRT_UUID_DECL(IControlInterface, 0x45d37c3f, 0x5140, 0x444a, 0xae,0x24, 0x40,0x07,0x89,0xf3,0xcb,0xf3)
   2811 #endif
   2812 #else
   2813 typedef struct IControlInterfaceVtbl {
   2814     BEGIN_INTERFACE
   2815 
   2816     /*** IUnknown methods ***/
   2817     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2818         IControlInterface *This,
   2819         REFIID riid,
   2820         void **ppvObject);
   2821 
   2822     ULONG (STDMETHODCALLTYPE *AddRef)(
   2823         IControlInterface *This);
   2824 
   2825     ULONG (STDMETHODCALLTYPE *Release)(
   2826         IControlInterface *This);
   2827 
   2828     /*** IControlInterface methods ***/
   2829     HRESULT (STDMETHODCALLTYPE *GetName)(
   2830         IControlInterface *This,
   2831         LPWSTR *ppwstrName);
   2832 
   2833     HRESULT (STDMETHODCALLTYPE *GetIID)(
   2834         IControlInterface *This,
   2835         GUID *pIID);
   2836 
   2837     END_INTERFACE
   2838 } IControlInterfaceVtbl;
   2839 
   2840 interface IControlInterface {
   2841     CONST_VTBL IControlInterfaceVtbl* lpVtbl;
   2842 };
   2843 
   2844 #ifdef COBJMACROS
   2845 #ifndef WIDL_C_INLINE_WRAPPERS
   2846 /*** IUnknown methods ***/
   2847 #define IControlInterface_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2848 #define IControlInterface_AddRef(This) (This)->lpVtbl->AddRef(This)
   2849 #define IControlInterface_Release(This) (This)->lpVtbl->Release(This)
   2850 /*** IControlInterface methods ***/
   2851 #define IControlInterface_GetName(This,ppwstrName) (This)->lpVtbl->GetName(This,ppwstrName)
   2852 #define IControlInterface_GetIID(This,pIID) (This)->lpVtbl->GetIID(This,pIID)
   2853 #else
   2854 /*** IUnknown methods ***/
   2855 static inline HRESULT IControlInterface_QueryInterface(IControlInterface* This,REFIID riid,void **ppvObject) {
   2856     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2857 }
   2858 static inline ULONG IControlInterface_AddRef(IControlInterface* This) {
   2859     return This->lpVtbl->AddRef(This);
   2860 }
   2861 static inline ULONG IControlInterface_Release(IControlInterface* This) {
   2862     return This->lpVtbl->Release(This);
   2863 }
   2864 /*** IControlInterface methods ***/
   2865 static inline HRESULT IControlInterface_GetName(IControlInterface* This,LPWSTR *ppwstrName) {
   2866     return This->lpVtbl->GetName(This,ppwstrName);
   2867 }
   2868 static inline HRESULT IControlInterface_GetIID(IControlInterface* This,GUID *pIID) {
   2869     return This->lpVtbl->GetIID(This,pIID);
   2870 }
   2871 #endif
   2872 #endif
   2873 
   2874 #endif
   2875 
   2876 
   2877 #endif  /* __IControlInterface_INTERFACE_DEFINED__ */
   2878 
   2879 /*****************************************************************************
   2880  * IControlChangeNotify interface
   2881  */
   2882 #ifndef __IControlChangeNotify_INTERFACE_DEFINED__
   2883 #define __IControlChangeNotify_INTERFACE_DEFINED__
   2884 
   2885 DEFINE_GUID(IID_IControlChangeNotify, 0xa09513ed, 0xc709, 0x4d21, 0xbd,0x7b, 0x5f,0x34,0xc4,0x7f,0x39,0x47);
   2886 #if defined(__cplusplus) && !defined(CINTERFACE)
   2887 MIDL_INTERFACE("a09513ed-c709-4d21-bd7b-5f34c47f3947")
   2888 IControlChangeNotify : public IUnknown
   2889 {
   2890     virtual HRESULT STDMETHODCALLTYPE OnNotify(
   2891         DWORD dwSenderProcessId,
   2892         LPCGUID ppguidEventContext) = 0;
   2893 
   2894 };
   2895 #ifdef __CRT_UUID_DECL
   2896 __CRT_UUID_DECL(IControlChangeNotify, 0xa09513ed, 0xc709, 0x4d21, 0xbd,0x7b, 0x5f,0x34,0xc4,0x7f,0x39,0x47)
   2897 #endif
   2898 #else
   2899 typedef struct IControlChangeNotifyVtbl {
   2900     BEGIN_INTERFACE
   2901 
   2902     /*** IUnknown methods ***/
   2903     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   2904         IControlChangeNotify *This,
   2905         REFIID riid,
   2906         void **ppvObject);
   2907 
   2908     ULONG (STDMETHODCALLTYPE *AddRef)(
   2909         IControlChangeNotify *This);
   2910 
   2911     ULONG (STDMETHODCALLTYPE *Release)(
   2912         IControlChangeNotify *This);
   2913 
   2914     /*** IControlChangeNotify methods ***/
   2915     HRESULT (STDMETHODCALLTYPE *OnNotify)(
   2916         IControlChangeNotify *This,
   2917         DWORD dwSenderProcessId,
   2918         LPCGUID ppguidEventContext);
   2919 
   2920     END_INTERFACE
   2921 } IControlChangeNotifyVtbl;
   2922 
   2923 interface IControlChangeNotify {
   2924     CONST_VTBL IControlChangeNotifyVtbl* lpVtbl;
   2925 };
   2926 
   2927 #ifdef COBJMACROS
   2928 #ifndef WIDL_C_INLINE_WRAPPERS
   2929 /*** IUnknown methods ***/
   2930 #define IControlChangeNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   2931 #define IControlChangeNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
   2932 #define IControlChangeNotify_Release(This) (This)->lpVtbl->Release(This)
   2933 /*** IControlChangeNotify methods ***/
   2934 #define IControlChangeNotify_OnNotify(This,dwSenderProcessId,ppguidEventContext) (This)->lpVtbl->OnNotify(This,dwSenderProcessId,ppguidEventContext)
   2935 #else
   2936 /*** IUnknown methods ***/
   2937 static inline HRESULT IControlChangeNotify_QueryInterface(IControlChangeNotify* This,REFIID riid,void **ppvObject) {
   2938     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   2939 }
   2940 static inline ULONG IControlChangeNotify_AddRef(IControlChangeNotify* This) {
   2941     return This->lpVtbl->AddRef(This);
   2942 }
   2943 static inline ULONG IControlChangeNotify_Release(IControlChangeNotify* This) {
   2944     return This->lpVtbl->Release(This);
   2945 }
   2946 /*** IControlChangeNotify methods ***/
   2947 static inline HRESULT IControlChangeNotify_OnNotify(IControlChangeNotify* This,DWORD dwSenderProcessId,LPCGUID ppguidEventContext) {
   2948     return This->lpVtbl->OnNotify(This,dwSenderProcessId,ppguidEventContext);
   2949 }
   2950 #endif
   2951 #endif
   2952 
   2953 #endif
   2954 
   2955 
   2956 #endif  /* __IControlChangeNotify_INTERFACE_DEFINED__ */
   2957 
   2958 /*****************************************************************************
   2959  * IDeviceTopology interface
   2960  */
   2961 #ifndef __IDeviceTopology_INTERFACE_DEFINED__
   2962 #define __IDeviceTopology_INTERFACE_DEFINED__
   2963 
   2964 DEFINE_GUID(IID_IDeviceTopology, 0x2a07407e, 0x6497, 0x4a18, 0x97,0x87, 0x32,0xf7,0x9b,0xd0,0xd9,0x8f);
   2965 #if defined(__cplusplus) && !defined(CINTERFACE)
   2966 MIDL_INTERFACE("2a07407e-6497-4a18-9787-32f79bd0d98f")
   2967 IDeviceTopology : public IUnknown
   2968 {
   2969     virtual HRESULT STDMETHODCALLTYPE GetConnectorCount(
   2970         UINT *pCount) = 0;
   2971 
   2972     virtual HRESULT STDMETHODCALLTYPE GetConnector(
   2973         UINT nIndex,
   2974         IConnector **ppConnector) = 0;
   2975 
   2976     virtual HRESULT STDMETHODCALLTYPE GetSubunitCount(
   2977         UINT *pCount) = 0;
   2978 
   2979     virtual HRESULT STDMETHODCALLTYPE GetSubunit(
   2980         UINT nIndex,
   2981         ISubUnit **ppConnector) = 0;
   2982 
   2983     virtual HRESULT STDMETHODCALLTYPE GetPartById(
   2984         UINT nId,
   2985         IPart **ppPart) = 0;
   2986 
   2987     virtual HRESULT STDMETHODCALLTYPE GetDeviceId(
   2988         LPWSTR *ppwstrDeviceId) = 0;
   2989 
   2990     virtual HRESULT STDMETHODCALLTYPE GetSignalPath(
   2991         IPart *pIPartFrom,
   2992         IPart *pIPartTo,
   2993         WINBOOL bRejectMixedPaths,
   2994         IPartsList **ppParts) = 0;
   2995 
   2996 };
   2997 #ifdef __CRT_UUID_DECL
   2998 __CRT_UUID_DECL(IDeviceTopology, 0x2a07407e, 0x6497, 0x4a18, 0x97,0x87, 0x32,0xf7,0x9b,0xd0,0xd9,0x8f)
   2999 #endif
   3000 #else
   3001 typedef struct IDeviceTopologyVtbl {
   3002     BEGIN_INTERFACE
   3003 
   3004     /*** IUnknown methods ***/
   3005     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
   3006         IDeviceTopology *This,
   3007         REFIID riid,
   3008         void **ppvObject);
   3009 
   3010     ULONG (STDMETHODCALLTYPE *AddRef)(
   3011         IDeviceTopology *This);
   3012 
   3013     ULONG (STDMETHODCALLTYPE *Release)(
   3014         IDeviceTopology *This);
   3015 
   3016     /*** IDeviceTopology methods ***/
   3017     HRESULT (STDMETHODCALLTYPE *GetConnectorCount)(
   3018         IDeviceTopology *This,
   3019         UINT *pCount);
   3020 
   3021     HRESULT (STDMETHODCALLTYPE *GetConnector)(
   3022         IDeviceTopology *This,
   3023         UINT nIndex,
   3024         IConnector **ppConnector);
   3025 
   3026     HRESULT (STDMETHODCALLTYPE *GetSubunitCount)(
   3027         IDeviceTopology *This,
   3028         UINT *pCount);
   3029 
   3030     HRESULT (STDMETHODCALLTYPE *GetSubunit)(
   3031         IDeviceTopology *This,
   3032         UINT nIndex,
   3033         ISubUnit **ppConnector);
   3034 
   3035     HRESULT (STDMETHODCALLTYPE *GetPartById)(
   3036         IDeviceTopology *This,
   3037         UINT nId,
   3038         IPart **ppPart);
   3039 
   3040     HRESULT (STDMETHODCALLTYPE *GetDeviceId)(
   3041         IDeviceTopology *This,
   3042         LPWSTR *ppwstrDeviceId);
   3043 
   3044     HRESULT (STDMETHODCALLTYPE *GetSignalPath)(
   3045         IDeviceTopology *This,
   3046         IPart *pIPartFrom,
   3047         IPart *pIPartTo,
   3048         WINBOOL bRejectMixedPaths,
   3049         IPartsList **ppParts);
   3050 
   3051     END_INTERFACE
   3052 } IDeviceTopologyVtbl;
   3053 
   3054 interface IDeviceTopology {
   3055     CONST_VTBL IDeviceTopologyVtbl* lpVtbl;
   3056 };
   3057 
   3058 #ifdef COBJMACROS
   3059 #ifndef WIDL_C_INLINE_WRAPPERS
   3060 /*** IUnknown methods ***/
   3061 #define IDeviceTopology_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
   3062 #define IDeviceTopology_AddRef(This) (This)->lpVtbl->AddRef(This)
   3063 #define IDeviceTopology_Release(This) (This)->lpVtbl->Release(This)
   3064 /*** IDeviceTopology methods ***/
   3065 #define IDeviceTopology_GetConnectorCount(This,pCount) (This)->lpVtbl->GetConnectorCount(This,pCount)
   3066 #define IDeviceTopology_GetConnector(This,nIndex,ppConnector) (This)->lpVtbl->GetConnector(This,nIndex,ppConnector)
   3067 #define IDeviceTopology_GetSubunitCount(This,pCount) (This)->lpVtbl->GetSubunitCount(This,pCount)
   3068 #define IDeviceTopology_GetSubunit(This,nIndex,ppConnector) (This)->lpVtbl->GetSubunit(This,nIndex,ppConnector)
   3069 #define IDeviceTopology_GetPartById(This,nId,ppPart) (This)->lpVtbl->GetPartById(This,nId,ppPart)
   3070 #define IDeviceTopology_GetDeviceId(This,ppwstrDeviceId) (This)->lpVtbl->GetDeviceId(This,ppwstrDeviceId)
   3071 #define IDeviceTopology_GetSignalPath(This,pIPartFrom,pIPartTo,bRejectMixedPaths,ppParts) (This)->lpVtbl->GetSignalPath(This,pIPartFrom,pIPartTo,bRejectMixedPaths,ppParts)
   3072 #else
   3073 /*** IUnknown methods ***/
   3074 static inline HRESULT IDeviceTopology_QueryInterface(IDeviceTopology* This,REFIID riid,void **ppvObject) {
   3075     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
   3076 }
   3077 static inline ULONG IDeviceTopology_AddRef(IDeviceTopology* This) {
   3078     return This->lpVtbl->AddRef(This);
   3079 }
   3080 static inline ULONG IDeviceTopology_Release(IDeviceTopology* This) {
   3081     return This->lpVtbl->Release(This);
   3082 }
   3083 /*** IDeviceTopology methods ***/
   3084 static inline HRESULT IDeviceTopology_GetConnectorCount(IDeviceTopology* This,UINT *pCount) {
   3085     return This->lpVtbl->GetConnectorCount(This,pCount);
   3086 }
   3087 static inline HRESULT IDeviceTopology_GetConnector(IDeviceTopology* This,UINT nIndex,IConnector **ppConnector) {
   3088     return This->lpVtbl->GetConnector(This,nIndex,ppConnector);
   3089 }
   3090 static inline HRESULT IDeviceTopology_GetSubunitCount(IDeviceTopology* This,UINT *pCount) {
   3091     return This->lpVtbl->GetSubunitCount(This,pCount);
   3092 }
   3093 static inline HRESULT IDeviceTopology_GetSubunit(IDeviceTopology* This,UINT nIndex,ISubUnit **ppConnector) {
   3094     return This->lpVtbl->GetSubunit(This,nIndex,ppConnector);
   3095 }
   3096 static inline HRESULT IDeviceTopology_GetPartById(IDeviceTopology* This,UINT nId,IPart **ppPart) {
   3097     return This->lpVtbl->GetPartById(This,nId,ppPart);
   3098 }
   3099 static inline HRESULT IDeviceTopology_GetDeviceId(IDeviceTopology* This,LPWSTR *ppwstrDeviceId) {
   3100     return This->lpVtbl->GetDeviceId(This,ppwstrDeviceId);
   3101 }
   3102 static inline HRESULT IDeviceTopology_GetSignalPath(IDeviceTopology* This,IPart *pIPartFrom,IPart *pIPartTo,WINBOOL bRejectMixedPaths,IPartsList **ppParts) {
   3103     return This->lpVtbl->GetSignalPath(This,pIPartFrom,pIPartTo,bRejectMixedPaths,ppParts);
   3104 }
   3105 #endif
   3106 #endif
   3107 
   3108 #endif
   3109 
   3110 
   3111 #endif  /* __IDeviceTopology_INTERFACE_DEFINED__ */
   3112 
   3113 #ifndef __DevTopologyLib_LIBRARY_DEFINED__
   3114 #define __DevTopologyLib_LIBRARY_DEFINED__
   3115 
   3116 DEFINE_GUID(LIBID_DevTopologyLib, 0x51b9a01d, 0x8181, 0x4363, 0xb5,0x9c, 0xe6,0x78,0xf4,0x76,0xdd,0x0e);
   3117 
   3118 /*****************************************************************************
   3119  * DeviceTopology coclass
   3120  */
   3121 
   3122 DEFINE_GUID(CLSID_DeviceTopology, 0x1df639d0, 0x5ec1, 0x47aa, 0x93,0x79, 0x82,0x8d,0xc1,0xaa,0x8c,0x59);
   3123 
   3124 #ifdef __cplusplus
   3125 class DECLSPEC_UUID("1df639d0-5ec1-47aa-9379-828dc1aa8c59") DeviceTopology;
   3126 #ifdef __CRT_UUID_DECL
   3127 __CRT_UUID_DECL(DeviceTopology, 0x1df639d0, 0x5ec1, 0x47aa, 0x93,0x79, 0x82,0x8d,0xc1,0xaa,0x8c,0x59)
   3128 #endif
   3129 #endif
   3130 
   3131 #endif /* __DevTopologyLib_LIBRARY_DEFINED__ */
   3132 /* Begin additional prototypes for all interfaces */
   3133 
   3134 
   3135 /* End additional prototypes */
   3136 
   3137 #ifdef __cplusplus
   3138 }
   3139 #endif
   3140 
   3141 #endif /* __devicetopology_h__ */