master
   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__
  23typedef interface IKsControl IKsControl;
  24#ifdef __cplusplus
  25interface IKsControl;
  26#endif /* __cplusplus */
  27#endif
  28
  29#ifndef __IPerChannelDbLevel_FWD_DEFINED__
  30#define __IPerChannelDbLevel_FWD_DEFINED__
  31typedef interface IPerChannelDbLevel IPerChannelDbLevel;
  32#ifdef __cplusplus
  33interface IPerChannelDbLevel;
  34#endif /* __cplusplus */
  35#endif
  36
  37#ifndef __IAudioVolumeLevel_FWD_DEFINED__
  38#define __IAudioVolumeLevel_FWD_DEFINED__
  39typedef interface IAudioVolumeLevel IAudioVolumeLevel;
  40#ifdef __cplusplus
  41interface IAudioVolumeLevel;
  42#endif /* __cplusplus */
  43#endif
  44
  45#ifndef __IAudioChannelConfig_FWD_DEFINED__
  46#define __IAudioChannelConfig_FWD_DEFINED__
  47typedef interface IAudioChannelConfig IAudioChannelConfig;
  48#ifdef __cplusplus
  49interface IAudioChannelConfig;
  50#endif /* __cplusplus */
  51#endif
  52
  53#ifndef __IAudioLoudness_FWD_DEFINED__
  54#define __IAudioLoudness_FWD_DEFINED__
  55typedef interface IAudioLoudness IAudioLoudness;
  56#ifdef __cplusplus
  57interface IAudioLoudness;
  58#endif /* __cplusplus */
  59#endif
  60
  61#ifndef __IAudioInputSelector_FWD_DEFINED__
  62#define __IAudioInputSelector_FWD_DEFINED__
  63typedef interface IAudioInputSelector IAudioInputSelector;
  64#ifdef __cplusplus
  65interface IAudioInputSelector;
  66#endif /* __cplusplus */
  67#endif
  68
  69#ifndef __IAudioOutputSelector_FWD_DEFINED__
  70#define __IAudioOutputSelector_FWD_DEFINED__
  71typedef interface IAudioOutputSelector IAudioOutputSelector;
  72#ifdef __cplusplus
  73interface IAudioOutputSelector;
  74#endif /* __cplusplus */
  75#endif
  76
  77#ifndef __IAudioMute_FWD_DEFINED__
  78#define __IAudioMute_FWD_DEFINED__
  79typedef interface IAudioMute IAudioMute;
  80#ifdef __cplusplus
  81interface IAudioMute;
  82#endif /* __cplusplus */
  83#endif
  84
  85#ifndef __IAudioBass_FWD_DEFINED__
  86#define __IAudioBass_FWD_DEFINED__
  87typedef interface IAudioBass IAudioBass;
  88#ifdef __cplusplus
  89interface IAudioBass;
  90#endif /* __cplusplus */
  91#endif
  92
  93#ifndef __IAudioMidRange_FWD_DEFINED__
  94#define __IAudioMidRange_FWD_DEFINED__
  95typedef interface IAudioMidRange IAudioMidRange;
  96#ifdef __cplusplus
  97interface IAudioMidRange;
  98#endif /* __cplusplus */
  99#endif
 100
 101#ifndef __IAudioTreble_FWD_DEFINED__
 102#define __IAudioTreble_FWD_DEFINED__
 103typedef interface IAudioTreble IAudioTreble;
 104#ifdef __cplusplus
 105interface IAudioTreble;
 106#endif /* __cplusplus */
 107#endif
 108
 109#ifndef __IAudioAutoGainControl_FWD_DEFINED__
 110#define __IAudioAutoGainControl_FWD_DEFINED__
 111typedef interface IAudioAutoGainControl IAudioAutoGainControl;
 112#ifdef __cplusplus
 113interface IAudioAutoGainControl;
 114#endif /* __cplusplus */
 115#endif
 116
 117#ifndef __IAudioPeakMeter_FWD_DEFINED__
 118#define __IAudioPeakMeter_FWD_DEFINED__
 119typedef interface IAudioPeakMeter IAudioPeakMeter;
 120#ifdef __cplusplus
 121interface IAudioPeakMeter;
 122#endif /* __cplusplus */
 123#endif
 124
 125#ifndef __IDeviceSpecificProperty_FWD_DEFINED__
 126#define __IDeviceSpecificProperty_FWD_DEFINED__
 127typedef interface IDeviceSpecificProperty IDeviceSpecificProperty;
 128#ifdef __cplusplus
 129interface IDeviceSpecificProperty;
 130#endif /* __cplusplus */
 131#endif
 132
 133#ifndef __IKsFormatSupport_FWD_DEFINED__
 134#define __IKsFormatSupport_FWD_DEFINED__
 135typedef interface IKsFormatSupport IKsFormatSupport;
 136#ifdef __cplusplus
 137interface IKsFormatSupport;
 138#endif /* __cplusplus */
 139#endif
 140
 141#ifndef __IKsJackDescription_FWD_DEFINED__
 142#define __IKsJackDescription_FWD_DEFINED__
 143typedef interface IKsJackDescription IKsJackDescription;
 144#ifdef __cplusplus
 145interface IKsJackDescription;
 146#endif /* __cplusplus */
 147#endif
 148
 149#ifndef __IKsJackDescription2_FWD_DEFINED__
 150#define __IKsJackDescription2_FWD_DEFINED__
 151typedef interface IKsJackDescription2 IKsJackDescription2;
 152#ifdef __cplusplus
 153interface IKsJackDescription2;
 154#endif /* __cplusplus */
 155#endif
 156
 157#ifndef __IKsJackSinkInformation_FWD_DEFINED__
 158#define __IKsJackSinkInformation_FWD_DEFINED__
 159typedef interface IKsJackSinkInformation IKsJackSinkInformation;
 160#ifdef __cplusplus
 161interface IKsJackSinkInformation;
 162#endif /* __cplusplus */
 163#endif
 164
 165#ifndef __IPartsList_FWD_DEFINED__
 166#define __IPartsList_FWD_DEFINED__
 167typedef interface IPartsList IPartsList;
 168#ifdef __cplusplus
 169interface IPartsList;
 170#endif /* __cplusplus */
 171#endif
 172
 173#ifndef __IPart_FWD_DEFINED__
 174#define __IPart_FWD_DEFINED__
 175typedef interface IPart IPart;
 176#ifdef __cplusplus
 177interface IPart;
 178#endif /* __cplusplus */
 179#endif
 180
 181#ifndef __IConnector_FWD_DEFINED__
 182#define __IConnector_FWD_DEFINED__
 183typedef interface IConnector IConnector;
 184#ifdef __cplusplus
 185interface IConnector;
 186#endif /* __cplusplus */
 187#endif
 188
 189#ifndef __ISubUnit_FWD_DEFINED__
 190#define __ISubUnit_FWD_DEFINED__
 191typedef interface ISubUnit ISubUnit;
 192#ifdef __cplusplus
 193interface ISubUnit;
 194#endif /* __cplusplus */
 195#endif
 196
 197#ifndef __IControlInterface_FWD_DEFINED__
 198#define __IControlInterface_FWD_DEFINED__
 199typedef interface IControlInterface IControlInterface;
 200#ifdef __cplusplus
 201interface IControlInterface;
 202#endif /* __cplusplus */
 203#endif
 204
 205#ifndef __IControlChangeNotify_FWD_DEFINED__
 206#define __IControlChangeNotify_FWD_DEFINED__
 207typedef interface IControlChangeNotify IControlChangeNotify;
 208#ifdef __cplusplus
 209interface IControlChangeNotify;
 210#endif /* __cplusplus */
 211#endif
 212
 213#ifndef __IDeviceTopology_FWD_DEFINED__
 214#define __IDeviceTopology_FWD_DEFINED__
 215typedef interface IDeviceTopology IDeviceTopology;
 216#ifdef __cplusplus
 217interface IDeviceTopology;
 218#endif /* __cplusplus */
 219#endif
 220
 221#ifndef __DeviceTopology_FWD_DEFINED__
 222#define __DeviceTopology_FWD_DEFINED__
 223#ifdef __cplusplus
 224typedef class DeviceTopology DeviceTopology;
 225#else
 226typedef 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
 237extern "C" {
 238#endif
 239
 240#ifndef __IPart_FWD_DEFINED__
 241#define __IPart_FWD_DEFINED__
 242typedef interface IPart IPart;
 243#ifdef __cplusplus
 244interface IPart;
 245#endif /* __cplusplus */
 246#endif
 247
 248#ifndef __IControlInterface_FWD_DEFINED__
 249#define __IControlInterface_FWD_DEFINED__
 250typedef interface IControlInterface IControlInterface;
 251#ifdef __cplusplus
 252interface IControlInterface;
 253#endif /* __cplusplus */
 254#endif
 255
 256#ifndef __IDeviceTopology_FWD_DEFINED__
 257#define __IDeviceTopology_FWD_DEFINED__
 258typedef interface IDeviceTopology IDeviceTopology;
 259#ifdef __cplusplus
 260interface IDeviceTopology;
 261#endif /* __cplusplus */
 262#endif
 263
 264#ifndef __IControlChangeNotify_FWD_DEFINED__
 265#define __IControlChangeNotify_FWD_DEFINED__
 266typedef interface IControlChangeNotify IControlChangeNotify;
 267#ifdef __cplusplus
 268interface 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' */
 276DEFINE_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_
 281typedef 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;
 290typedef KSDATAFORMAT *PKSDATAFORMAT;
 291typedef 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;
 301typedef KSIDENTIFIER KSPROPERTY;
 302typedef KSIDENTIFIER *PKSPROPERTY;
 303typedef KSIDENTIFIER KSMETHOD;
 304typedef KSIDENTIFIER *PKSMETHOD;
 305typedef KSIDENTIFIER KSEVENT;
 306typedef KSIDENTIFIER *PKSEVENT;
 307typedef 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;
 321typedef 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;
 338typedef enum __WIDL_devicetopology_generated_name_00000024 {
 339    eGenLocPrimaryBox = 0,
 340    eGenLocInternal = 1,
 341    eGenLocSeparate = 2,
 342    eGenLocOther = 3
 343} EPcxGenLocation;
 344typedef enum __WIDL_devicetopology_generated_name_00000025 {
 345    ePortConnJack = 0,
 346    ePortConnIntegratedDevice = 1,
 347    ePortConnBothIntegratedAndJack = 2,
 348    ePortConnUnknown = 3
 349} EPxcPortConnection;
 350typedef 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;
 359typedef KSJACK_DESCRIPTION *PKSJACK_DESCRIPTION;
 360typedef struct _LUID {
 361    DWORD LowPart;
 362    LONG HighPart;
 363} LUID;
 364typedef struct _LUID *PLUID;
 365typedef enum __WIDL_devicetopology_generated_name_00000027 {
 366    KSJACK_SINK_CONNECTIONTYPE_HDMI = 0,
 367    KSJACK_SINK_CONNECTIONTYPE_DISPLAYPORT = 1
 368} KSJACK_SINK_CONNECTIONTYPE;
 369typedef 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;
 380typedef struct _tagKSJACK_DESCRIPTION2 {
 381    DWORD DeviceStateInfo;
 382    DWORD JackCapabilities;
 383} KSJACK_DESCRIPTION2;
 384typedef struct _tagKSJACK_DESCRIPTION2 *PKSJACK_DESCRIPTION2;
 385#endif
 386typedef enum __WIDL_devicetopology_generated_name_00000028 {
 387    In = 0,
 388    Out = 1
 389} DataFlow;
 390typedef enum __WIDL_devicetopology_generated_name_00000029 {
 391    Connector = 0,
 392    Subunit = 1
 393} PartType;
 394typedef 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
 408DEFINE_GUID(IID_IKsControl, 0x28f54685, 0x06fd, 0x11d2, 0xb2,0x7a, 0x00,0xa0,0xc9,0x22,0x31,0x96);
 409#if defined(__cplusplus) && !defined(CINTERFACE)
 410MIDL_INTERFACE("28f54685-06fd-11d2-b27a-00a0c9223196")
 411IKsControl : 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
 439typedef 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
 482interface 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 ***/
 498static inline HRESULT IKsControl_QueryInterface(IKsControl* This,REFIID riid,void **ppvObject) {
 499    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 500}
 501static inline ULONG IKsControl_AddRef(IKsControl* This) {
 502    return This->lpVtbl->AddRef(This);
 503}
 504static inline ULONG IKsControl_Release(IKsControl* This) {
 505    return This->lpVtbl->Release(This);
 506}
 507/*** IKsControl methods ***/
 508static 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}
 511static 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}
 514static 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
 531DEFINE_GUID(IID_IPerChannelDbLevel, 0xc2f8e001, 0xf205, 0x4bc9, 0x99,0xbc, 0xc1,0x3b,0x1e,0x04,0x8c,0xcb);
 532#if defined(__cplusplus) && !defined(CINTERFACE)
 533MIDL_INTERFACE("c2f8e001-f205-4bc9-99bc-c13b1e048ccb")
 534IPerChannelDbLevel : 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
 568typedef 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
 620interface 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 ***/
 639static inline HRESULT IPerChannelDbLevel_QueryInterface(IPerChannelDbLevel* This,REFIID riid,void **ppvObject) {
 640    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 641}
 642static inline ULONG IPerChannelDbLevel_AddRef(IPerChannelDbLevel* This) {
 643    return This->lpVtbl->AddRef(This);
 644}
 645static inline ULONG IPerChannelDbLevel_Release(IPerChannelDbLevel* This) {
 646    return This->lpVtbl->Release(This);
 647}
 648/*** IPerChannelDbLevel methods ***/
 649static inline HRESULT IPerChannelDbLevel_GetChannelCount(IPerChannelDbLevel* This,UINT *pcChannels) {
 650    return This->lpVtbl->GetChannelCount(This,pcChannels);
 651}
 652static 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}
 655static inline HRESULT IPerChannelDbLevel_GetLevel(IPerChannelDbLevel* This,UINT nChannel,float *pfLevelDB) {
 656    return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
 657}
 658static inline HRESULT IPerChannelDbLevel_SetLevel(IPerChannelDbLevel* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
 659    return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
 660}
 661static inline HRESULT IPerChannelDbLevel_SetLevelUniform(IPerChannelDbLevel* This,float fLevelDB,LPCGUID pguidEventContext) {
 662    return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
 663}
 664static 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
 681DEFINE_GUID(IID_IAudioVolumeLevel, 0x7fb7b48f, 0x531d, 0x44a2, 0xbc,0xb3, 0x5a,0xd5,0xa1,0x34,0xb3,0xdc);
 682#if defined(__cplusplus) && !defined(CINTERFACE)
 683MIDL_INTERFACE("7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc")
 684IAudioVolumeLevel : 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
 691typedef 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
 743interface 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 ***/
 762static inline HRESULT IAudioVolumeLevel_QueryInterface(IAudioVolumeLevel* This,REFIID riid,void **ppvObject) {
 763    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 764}
 765static inline ULONG IAudioVolumeLevel_AddRef(IAudioVolumeLevel* This) {
 766    return This->lpVtbl->AddRef(This);
 767}
 768static inline ULONG IAudioVolumeLevel_Release(IAudioVolumeLevel* This) {
 769    return This->lpVtbl->Release(This);
 770}
 771/*** IPerChannelDbLevel methods ***/
 772static inline HRESULT IAudioVolumeLevel_GetChannelCount(IAudioVolumeLevel* This,UINT *pcChannels) {
 773    return This->lpVtbl->GetChannelCount(This,pcChannels);
 774}
 775static 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}
 778static inline HRESULT IAudioVolumeLevel_GetLevel(IAudioVolumeLevel* This,UINT nChannel,float *pfLevelDB) {
 779    return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
 780}
 781static inline HRESULT IAudioVolumeLevel_SetLevel(IAudioVolumeLevel* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
 782    return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
 783}
 784static inline HRESULT IAudioVolumeLevel_SetLevelUniform(IAudioVolumeLevel* This,float fLevelDB,LPCGUID pguidEventContext) {
 785    return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
 786}
 787static 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
 804DEFINE_GUID(IID_IAudioChannelConfig, 0xbb11c46f, 0xec28, 0x493c, 0xb8,0x8a, 0x5d,0xb8,0x80,0x62,0xce,0x98);
 805#if defined(__cplusplus) && !defined(CINTERFACE)
 806MIDL_INTERFACE("bb11c46f-ec28-493c-b88a-5db88062ce98")
 807IAudioChannelConfig : 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
 822typedef 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
 851interface 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 ***/
 866static inline HRESULT IAudioChannelConfig_QueryInterface(IAudioChannelConfig* This,REFIID riid,void **ppvObject) {
 867    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 868}
 869static inline ULONG IAudioChannelConfig_AddRef(IAudioChannelConfig* This) {
 870    return This->lpVtbl->AddRef(This);
 871}
 872static inline ULONG IAudioChannelConfig_Release(IAudioChannelConfig* This) {
 873    return This->lpVtbl->Release(This);
 874}
 875/*** IAudioChannelConfig methods ***/
 876static inline HRESULT IAudioChannelConfig_SetChannelConfig(IAudioChannelConfig* This,DWORD dwConfig,LPCGUID pguidEventContext) {
 877    return This->lpVtbl->SetChannelConfig(This,dwConfig,pguidEventContext);
 878}
 879static 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
 896DEFINE_GUID(IID_IAudioLoudness, 0x7d8b1437, 0xdd53, 0x4350, 0x9c,0x1b, 0x1e,0xe2,0x89,0x0b,0xd9,0x38);
 897#if defined(__cplusplus) && !defined(CINTERFACE)
 898MIDL_INTERFACE("7d8b1437-dd53-4350-9c1b-1ee2890bd938")
 899IAudioLoudness : 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
 913typedef 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
 941interface 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 ***/
 956static inline HRESULT IAudioLoudness_QueryInterface(IAudioLoudness* This,REFIID riid,void **ppvObject) {
 957    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
 958}
 959static inline ULONG IAudioLoudness_AddRef(IAudioLoudness* This) {
 960    return This->lpVtbl->AddRef(This);
 961}
 962static inline ULONG IAudioLoudness_Release(IAudioLoudness* This) {
 963    return This->lpVtbl->Release(This);
 964}
 965/*** IAudioLoudness methods ***/
 966static inline HRESULT IAudioLoudness_GetEnabled(IAudioLoudness* This,WINBOOL *pbEnabled) {
 967    return This->lpVtbl->GetEnabled(This,pbEnabled);
 968}
 969static 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
 986DEFINE_GUID(IID_IAudioInputSelector, 0x4f03dc02, 0x5e6e, 0x4653, 0x8f,0x72, 0xa0,0x30,0xc1,0x23,0xd5,0x98);
 987#if defined(__cplusplus) && !defined(CINTERFACE)
 988MIDL_INTERFACE("4f03dc02-5e6e-4653-8f72-a030c123d598")
 989IAudioInputSelector : 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
1003typedef 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
1031interface 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 ***/
1046static inline HRESULT IAudioInputSelector_QueryInterface(IAudioInputSelector* This,REFIID riid,void **ppvObject) {
1047    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1048}
1049static inline ULONG IAudioInputSelector_AddRef(IAudioInputSelector* This) {
1050    return This->lpVtbl->AddRef(This);
1051}
1052static inline ULONG IAudioInputSelector_Release(IAudioInputSelector* This) {
1053    return This->lpVtbl->Release(This);
1054}
1055/*** IAudioInputSelector methods ***/
1056static inline HRESULT IAudioInputSelector_GetSelection(IAudioInputSelector* This,UINT *pnIdSelected) {
1057    return This->lpVtbl->GetSelection(This,pnIdSelected);
1058}
1059static 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
1076DEFINE_GUID(IID_IAudioOutputSelector, 0xbb515f69, 0x94a7, 0x429e, 0x8b,0x9c, 0x27,0x1b,0x3f,0x11,0xa3,0xab);
1077#if defined(__cplusplus) && !defined(CINTERFACE)
1078MIDL_INTERFACE("bb515f69-94a7-429e-8b9c-271b3f11a3ab")
1079IAudioOutputSelector : 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
1093typedef 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
1121interface 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 ***/
1136static inline HRESULT IAudioOutputSelector_QueryInterface(IAudioOutputSelector* This,REFIID riid,void **ppvObject) {
1137    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1138}
1139static inline ULONG IAudioOutputSelector_AddRef(IAudioOutputSelector* This) {
1140    return This->lpVtbl->AddRef(This);
1141}
1142static inline ULONG IAudioOutputSelector_Release(IAudioOutputSelector* This) {
1143    return This->lpVtbl->Release(This);
1144}
1145/*** IAudioOutputSelector methods ***/
1146static inline HRESULT IAudioOutputSelector_GetSelection(IAudioOutputSelector* This,UINT *pnIdSelected) {
1147    return This->lpVtbl->GetSelection(This,pnIdSelected);
1148}
1149static 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
1166DEFINE_GUID(IID_IAudioMute, 0xdf45aeea, 0xb74a, 0x4b6b, 0xaf,0xad, 0x23,0x66,0xb6,0xaa,0x01,0x2e);
1167#if defined(__cplusplus) && !defined(CINTERFACE)
1168MIDL_INTERFACE("df45aeea-b74a-4b6b-afad-2366b6aa012e")
1169IAudioMute : 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
1183typedef 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
1211interface 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 ***/
1226static inline HRESULT IAudioMute_QueryInterface(IAudioMute* This,REFIID riid,void **ppvObject) {
1227    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1228}
1229static inline ULONG IAudioMute_AddRef(IAudioMute* This) {
1230    return This->lpVtbl->AddRef(This);
1231}
1232static inline ULONG IAudioMute_Release(IAudioMute* This) {
1233    return This->lpVtbl->Release(This);
1234}
1235/*** IAudioMute methods ***/
1236static inline HRESULT IAudioMute_SetMute(IAudioMute* This,WINBOOL bMute,LPCGUID pguidEventContext) {
1237    return This->lpVtbl->SetMute(This,bMute,pguidEventContext);
1238}
1239static 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
1256DEFINE_GUID(IID_IAudioBass, 0xa2b1a1d9, 0x4db3, 0x425d, 0xa2,0xb2, 0xbd,0x33,0x5c,0xb3,0xe2,0xe5);
1257#if defined(__cplusplus) && !defined(CINTERFACE)
1258MIDL_INTERFACE("a2b1a1d9-4db3-425d-a2b2-bd335cb3e2e5")
1259IAudioBass : 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
1266typedef 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
1318interface 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 ***/
1337static inline HRESULT IAudioBass_QueryInterface(IAudioBass* This,REFIID riid,void **ppvObject) {
1338    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1339}
1340static inline ULONG IAudioBass_AddRef(IAudioBass* This) {
1341    return This->lpVtbl->AddRef(This);
1342}
1343static inline ULONG IAudioBass_Release(IAudioBass* This) {
1344    return This->lpVtbl->Release(This);
1345}
1346/*** IPerChannelDbLevel methods ***/
1347static inline HRESULT IAudioBass_GetChannelCount(IAudioBass* This,UINT *pcChannels) {
1348    return This->lpVtbl->GetChannelCount(This,pcChannels);
1349}
1350static 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}
1353static inline HRESULT IAudioBass_GetLevel(IAudioBass* This,UINT nChannel,float *pfLevelDB) {
1354    return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
1355}
1356static inline HRESULT IAudioBass_SetLevel(IAudioBass* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
1357    return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
1358}
1359static inline HRESULT IAudioBass_SetLevelUniform(IAudioBass* This,float fLevelDB,LPCGUID pguidEventContext) {
1360    return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
1361}
1362static 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
1379DEFINE_GUID(IID_IAudioMidRange, 0x5e54b6d7, 0xb44b, 0x40d9, 0x9a,0x9e, 0xe6,0x91,0xd9,0xce,0x6e,0xdf);
1380#if defined(__cplusplus) && !defined(CINTERFACE)
1381MIDL_INTERFACE("5e54b6d7-b44b-40d9-9a9e-e691d9ce6edf")
1382IAudioMidRange : 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
1389typedef 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
1441interface 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 ***/
1460static inline HRESULT IAudioMidRange_QueryInterface(IAudioMidRange* This,REFIID riid,void **ppvObject) {
1461    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1462}
1463static inline ULONG IAudioMidRange_AddRef(IAudioMidRange* This) {
1464    return This->lpVtbl->AddRef(This);
1465}
1466static inline ULONG IAudioMidRange_Release(IAudioMidRange* This) {
1467    return This->lpVtbl->Release(This);
1468}
1469/*** IPerChannelDbLevel methods ***/
1470static inline HRESULT IAudioMidRange_GetChannelCount(IAudioMidRange* This,UINT *pcChannels) {
1471    return This->lpVtbl->GetChannelCount(This,pcChannels);
1472}
1473static 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}
1476static inline HRESULT IAudioMidRange_GetLevel(IAudioMidRange* This,UINT nChannel,float *pfLevelDB) {
1477    return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
1478}
1479static inline HRESULT IAudioMidRange_SetLevel(IAudioMidRange* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
1480    return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
1481}
1482static inline HRESULT IAudioMidRange_SetLevelUniform(IAudioMidRange* This,float fLevelDB,LPCGUID pguidEventContext) {
1483    return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
1484}
1485static 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
1502DEFINE_GUID(IID_IAudioTreble, 0x0a717812, 0x694e, 0x4907, 0xb7,0x4b, 0xba,0xfa,0x5c,0xfd,0xca,0x7b);
1503#if defined(__cplusplus) && !defined(CINTERFACE)
1504MIDL_INTERFACE("0a717812-694e-4907-b74b-bafa5cfdca7b")
1505IAudioTreble : 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
1512typedef 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
1564interface 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 ***/
1583static inline HRESULT IAudioTreble_QueryInterface(IAudioTreble* This,REFIID riid,void **ppvObject) {
1584    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1585}
1586static inline ULONG IAudioTreble_AddRef(IAudioTreble* This) {
1587    return This->lpVtbl->AddRef(This);
1588}
1589static inline ULONG IAudioTreble_Release(IAudioTreble* This) {
1590    return This->lpVtbl->Release(This);
1591}
1592/*** IPerChannelDbLevel methods ***/
1593static inline HRESULT IAudioTreble_GetChannelCount(IAudioTreble* This,UINT *pcChannels) {
1594    return This->lpVtbl->GetChannelCount(This,pcChannels);
1595}
1596static 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}
1599static inline HRESULT IAudioTreble_GetLevel(IAudioTreble* This,UINT nChannel,float *pfLevelDB) {
1600    return This->lpVtbl->GetLevel(This,nChannel,pfLevelDB);
1601}
1602static inline HRESULT IAudioTreble_SetLevel(IAudioTreble* This,UINT nChannel,float fLevelDB,LPCGUID pguidEventContext) {
1603    return This->lpVtbl->SetLevel(This,nChannel,fLevelDB,pguidEventContext);
1604}
1605static inline HRESULT IAudioTreble_SetLevelUniform(IAudioTreble* This,float fLevelDB,LPCGUID pguidEventContext) {
1606    return This->lpVtbl->SetLevelUniform(This,fLevelDB,pguidEventContext);
1607}
1608static 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
1625DEFINE_GUID(IID_IAudioAutoGainControl, 0x85401fd4, 0x6de4, 0x4b9d, 0x98,0x69, 0x2d,0x67,0x53,0xa8,0x2f,0x3c);
1626#if defined(__cplusplus) && !defined(CINTERFACE)
1627MIDL_INTERFACE("85401fd4-6de4-4b9d-9869-2d6753a82f3c")
1628IAudioAutoGainControl : 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
1642typedef 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
1670interface 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 ***/
1685static inline HRESULT IAudioAutoGainControl_QueryInterface(IAudioAutoGainControl* This,REFIID riid,void **ppvObject) {
1686    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1687}
1688static inline ULONG IAudioAutoGainControl_AddRef(IAudioAutoGainControl* This) {
1689    return This->lpVtbl->AddRef(This);
1690}
1691static inline ULONG IAudioAutoGainControl_Release(IAudioAutoGainControl* This) {
1692    return This->lpVtbl->Release(This);
1693}
1694/*** IAudioAutoGainControl methods ***/
1695static inline HRESULT IAudioAutoGainControl_GetEnabled(IAudioAutoGainControl* This,WINBOOL bEnabled,LPCGUID pguidEventContext) {
1696    return This->lpVtbl->GetEnabled(This,bEnabled,pguidEventContext);
1697}
1698static 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
1715DEFINE_GUID(IID_IAudioPeakMeter, 0xdd79923c, 0x0599, 0x45e0, 0xb8,0xb6, 0xc8,0xdf,0x7d,0xb6,0xe7,0x96);
1716#if defined(__cplusplus) && !defined(CINTERFACE)
1717MIDL_INTERFACE("dd79923c-0599-45e0-b8b6-c8df7db6e796")
1718IAudioPeakMeter : 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
1732typedef 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
1760interface 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 ***/
1775static inline HRESULT IAudioPeakMeter_QueryInterface(IAudioPeakMeter* This,REFIID riid,void **ppvObject) {
1776    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1777}
1778static inline ULONG IAudioPeakMeter_AddRef(IAudioPeakMeter* This) {
1779    return This->lpVtbl->AddRef(This);
1780}
1781static inline ULONG IAudioPeakMeter_Release(IAudioPeakMeter* This) {
1782    return This->lpVtbl->Release(This);
1783}
1784/*** IAudioPeakMeter methods ***/
1785static inline HRESULT IAudioPeakMeter_GetChannelCount(IAudioPeakMeter* This,UINT *pcChannels) {
1786    return This->lpVtbl->GetChannelCount(This,pcChannels);
1787}
1788static 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
1805DEFINE_GUID(IID_IDeviceSpecificProperty, 0x3b22bcbf, 0x2586, 0x4af0, 0x85,0x83, 0x20,0x5d,0x39,0x1b,0x80,0x7c);
1806#if defined(__cplusplus) && !defined(CINTERFACE)
1807MIDL_INTERFACE("3b22bcbf-2586-4af0-8583-205d391b807c")
1808IDeviceSpecificProperty : 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
1832typedef 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
1872interface 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 ***/
1889static inline HRESULT IDeviceSpecificProperty_QueryInterface(IDeviceSpecificProperty* This,REFIID riid,void **ppvObject) {
1890    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1891}
1892static inline ULONG IDeviceSpecificProperty_AddRef(IDeviceSpecificProperty* This) {
1893    return This->lpVtbl->AddRef(This);
1894}
1895static inline ULONG IDeviceSpecificProperty_Release(IDeviceSpecificProperty* This) {
1896    return This->lpVtbl->Release(This);
1897}
1898/*** IDeviceSpecificProperty methods ***/
1899static inline HRESULT IDeviceSpecificProperty_GetType(IDeviceSpecificProperty* This,VARTYPE *pVType) {
1900    return This->lpVtbl->GetType(This,pVType);
1901}
1902static inline HRESULT IDeviceSpecificProperty_GetValue(IDeviceSpecificProperty* This,VARTYPE *pvType,DWORD *pcbValue) {
1903    return This->lpVtbl->GetValue(This,pvType,pcbValue);
1904}
1905static inline HRESULT IDeviceSpecificProperty_SetValue(IDeviceSpecificProperty* This,void *pvValue,DWORD cbValue,LPCGUID pguidEventContext) {
1906    return This->lpVtbl->SetValue(This,pvValue,cbValue,pguidEventContext);
1907}
1908static 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
1925DEFINE_GUID(IID_IKsFormatSupport, 0x3cb4a69d, 0xbb6f, 0x4d2b, 0x95,0xb7, 0x45,0x2d,0x2c,0x15,0x5d,0xb5);
1926#if defined(__cplusplus) && !defined(CINTERFACE)
1927MIDL_INTERFACE("3cb4a69d-bb6f-4d2b-95b7-452d2c155db5")
1928IKsFormatSupport : 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
1943typedef 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
1972interface 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 ***/
1987static inline HRESULT IKsFormatSupport_QueryInterface(IKsFormatSupport* This,REFIID riid,void **ppvObject) {
1988    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
1989}
1990static inline ULONG IKsFormatSupport_AddRef(IKsFormatSupport* This) {
1991    return This->lpVtbl->AddRef(This);
1992}
1993static inline ULONG IKsFormatSupport_Release(IKsFormatSupport* This) {
1994    return This->lpVtbl->Release(This);
1995}
1996/*** IKsFormatSupport methods ***/
1997static inline HRESULT IKsFormatSupport_IsFormatSupported(IKsFormatSupport* This,PKSDATAFORMAT pKsFormat,DWORD cbFormat,WINBOOL *pbSupported) {
1998    return This->lpVtbl->IsFormatSupported(This,pKsFormat,cbFormat,pbSupported);
1999}
2000static 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
2017DEFINE_GUID(IID_IKsJackDescription, 0x4509f757, 0x2d46, 0x4637, 0x8e,0x62, 0xce,0x7d,0xb9,0x44,0xf5,0x7b);
2018#if defined(__cplusplus) && !defined(CINTERFACE)
2019MIDL_INTERFACE("4509f757-2d46-4637-8e62-ce7db944f57b")
2020IKsJackDescription : 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
2034typedef 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
2062interface 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 ***/
2077static inline HRESULT IKsJackDescription_QueryInterface(IKsJackDescription* This,REFIID riid,void **ppvObject) {
2078    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2079}
2080static inline ULONG IKsJackDescription_AddRef(IKsJackDescription* This) {
2081    return This->lpVtbl->AddRef(This);
2082}
2083static inline ULONG IKsJackDescription_Release(IKsJackDescription* This) {
2084    return This->lpVtbl->Release(This);
2085}
2086/*** IKsJackDescription methods ***/
2087static inline HRESULT IKsJackDescription_GetJackCount(IKsJackDescription* This,UINT *pcJacks) {
2088    return This->lpVtbl->GetJackCount(This,pcJacks);
2089}
2090static 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
2107DEFINE_GUID(IID_IKsJackDescription2, 0x478f3a9b, 0xe0c9, 0x4827, 0x92,0x28, 0x6f,0x55,0x05,0xff,0xe7,0x6a);
2108#if defined(__cplusplus) && !defined(CINTERFACE)
2109MIDL_INTERFACE("478f3a9b-e0c9-4827-9228-6f5505ffe76a")
2110IKsJackDescription2 : 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
2124typedef 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
2152interface 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 ***/
2167static inline HRESULT IKsJackDescription2_QueryInterface(IKsJackDescription2* This,REFIID riid,void **ppvObject) {
2168    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2169}
2170static inline ULONG IKsJackDescription2_AddRef(IKsJackDescription2* This) {
2171    return This->lpVtbl->AddRef(This);
2172}
2173static inline ULONG IKsJackDescription2_Release(IKsJackDescription2* This) {
2174    return This->lpVtbl->Release(This);
2175}
2176/*** IKsJackDescription2 methods ***/
2177static inline HRESULT IKsJackDescription2_GetJackCount(IKsJackDescription2* This,UINT *pcJacks) {
2178    return This->lpVtbl->GetJackCount(This,pcJacks);
2179}
2180static 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
2197DEFINE_GUID(IID_IKsJackSinkInformation, 0xd9bd72ed, 0x290f, 0x4581, 0x9f,0xf3, 0x61,0x02,0x7a,0x8f,0xe5,0x32);
2198#if defined(__cplusplus) && !defined(CINTERFACE)
2199MIDL_INTERFACE("d9bd72ed-290f-4581-9ff3-61027a8fe532")
2200IKsJackSinkInformation : 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
2210typedef 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
2233interface 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 ***/
2247static inline HRESULT IKsJackSinkInformation_QueryInterface(IKsJackSinkInformation* This,REFIID riid,void **ppvObject) {
2248    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2249}
2250static inline ULONG IKsJackSinkInformation_AddRef(IKsJackSinkInformation* This) {
2251    return This->lpVtbl->AddRef(This);
2252}
2253static inline ULONG IKsJackSinkInformation_Release(IKsJackSinkInformation* This) {
2254    return This->lpVtbl->Release(This);
2255}
2256/*** IKsJackSinkInformation methods ***/
2257static 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
2274DEFINE_GUID(IID_IPartsList, 0x6daa848c, 0x5eb0, 0x45cc, 0xae,0xa5, 0x99,0x8a,0x2c,0xda,0x1f,0xfb);
2275#if defined(__cplusplus) && !defined(CINTERFACE)
2276MIDL_INTERFACE("6daa848c-5eb0-45cc-aea5-998a2cda1ffb")
2277IPartsList : 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
2291typedef 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
2319interface 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 ***/
2334static inline HRESULT IPartsList_QueryInterface(IPartsList* This,REFIID riid,void **ppvObject) {
2335    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2336}
2337static inline ULONG IPartsList_AddRef(IPartsList* This) {
2338    return This->lpVtbl->AddRef(This);
2339}
2340static inline ULONG IPartsList_Release(IPartsList* This) {
2341    return This->lpVtbl->Release(This);
2342}
2343/*** IPartsList methods ***/
2344static inline HRESULT IPartsList_GetCount(IPartsList* This,UINT *pCount) {
2345    return This->lpVtbl->GetCount(This,pCount);
2346}
2347static 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
2364DEFINE_GUID(IID_IPart, 0xae2de0e4, 0x5bca, 0x4f2d, 0xaa,0x46, 0x5d,0x13,0xf8,0xfd,0xb3,0xa9);
2365#if defined(__cplusplus) && !defined(CINTERFACE)
2366MIDL_INTERFACE("ae2de0e4-5bca-4f2d-aa46-5d13f8fdb3a9")
2367IPart : 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
2417typedef 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
2492interface 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 ***/
2518static inline HRESULT IPart_QueryInterface(IPart* This,REFIID riid,void **ppvObject) {
2519    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2520}
2521static inline ULONG IPart_AddRef(IPart* This) {
2522    return This->lpVtbl->AddRef(This);
2523}
2524static inline ULONG IPart_Release(IPart* This) {
2525    return This->lpVtbl->Release(This);
2526}
2527/*** IPart methods ***/
2528static inline HRESULT IPart_GetName(IPart* This,LPWSTR *ppwstrName) {
2529    return This->lpVtbl->GetName(This,ppwstrName);
2530}
2531static inline HRESULT IPart_GetLocalId(IPart* This,UINT *pnId) {
2532    return This->lpVtbl->GetLocalId(This,pnId);
2533}
2534static inline HRESULT IPart_GetGlobalId(IPart* This,LPWSTR *ppwstrGlobalId) {
2535    return This->lpVtbl->GetGlobalId(This,ppwstrGlobalId);
2536}
2537static inline HRESULT IPart_GetPartType(IPart* This,PartType *pPartType) {
2538    return This->lpVtbl->GetPartType(This,pPartType);
2539}
2540static inline HRESULT IPart_GetSubType(IPart* This,GUID *pSubType) {
2541    return This->lpVtbl->GetSubType(This,pSubType);
2542}
2543static inline HRESULT IPart_GetControlInterfaceCount(IPart* This,UINT *pCount) {
2544    return This->lpVtbl->GetControlInterfaceCount(This,pCount);
2545}
2546static inline HRESULT IPart_GetControlInterface(IPart* This,UINT nIndex,IControlInterface **ppInterfaceDesc) {
2547    return This->lpVtbl->GetControlInterface(This,nIndex,ppInterfaceDesc);
2548}
2549static inline HRESULT IPart_EnumPartsIncoming(IPart* This,IPartsList **ppParts) {
2550    return This->lpVtbl->EnumPartsIncoming(This,ppParts);
2551}
2552static inline HRESULT IPart_EnumPartsOutgoing(IPart* This,IPartsList **ppParts) {
2553    return This->lpVtbl->EnumPartsOutgoing(This,ppParts);
2554}
2555static inline HRESULT IPart_GetTopologyObjects(IPart* This,IDeviceTopology **ppTopology) {
2556    return This->lpVtbl->GetTopologyObjects(This,ppTopology);
2557}
2558static inline HRESULT IPart_Activate(IPart* This,DWORD dwClsContext,REFIID refiid,void **ppvObject) {
2559    return This->lpVtbl->Activate(This,dwClsContext,refiid,ppvObject);
2560}
2561static inline HRESULT IPart_RegisterControlChangeCallback(IPart* This,REFGUID riid,IControlChangeNotify *pNotify) {
2562    return This->lpVtbl->RegisterControlChangeCallback(This,riid,pNotify);
2563}
2564static 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
2581DEFINE_GUID(IID_IConnector, 0x9c2c4058, 0x23f5, 0x41de, 0x87,0x7a, 0xdf,0x3a,0xf2,0x36,0xa0,0x9e);
2582#if defined(__cplusplus) && !defined(CINTERFACE)
2583MIDL_INTERFACE("9c2c4058-23f5-41de-877a-df3af236a09e")
2584IConnector : 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
2615typedef 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
2665interface 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 ***/
2686static inline HRESULT IConnector_QueryInterface(IConnector* This,REFIID riid,void **ppvObject) {
2687    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2688}
2689static inline ULONG IConnector_AddRef(IConnector* This) {
2690    return This->lpVtbl->AddRef(This);
2691}
2692static inline ULONG IConnector_Release(IConnector* This) {
2693    return This->lpVtbl->Release(This);
2694}
2695/*** IConnector methods ***/
2696static inline HRESULT IConnector_GetType(IConnector* This,ConnectorType *pType) {
2697    return This->lpVtbl->GetType(This,pType);
2698}
2699static inline HRESULT IConnector_GetDataFlow(IConnector* This,DataFlow *pFlow) {
2700    return This->lpVtbl->GetDataFlow(This,pFlow);
2701}
2702static inline HRESULT IConnector_ConnectTo(IConnector* This,IConnector *pConnectTo) {
2703    return This->lpVtbl->ConnectTo(This,pConnectTo);
2704}
2705static inline HRESULT IConnector_Disconnect(IConnector* This) {
2706    return This->lpVtbl->Disconnect(This);
2707}
2708static inline HRESULT IConnector_IsConnected(IConnector* This,WINBOOL *pbConnected) {
2709    return This->lpVtbl->IsConnected(This,pbConnected);
2710}
2711static inline HRESULT IConnector_GetConnectedTo(IConnector* This,IConnector **ppConTo) {
2712    return This->lpVtbl->GetConnectedTo(This,ppConTo);
2713}
2714static inline HRESULT IConnector_GetConnectorIdConnectedTo(IConnector* This,LPWSTR *ppwstrConnectorId) {
2715    return This->lpVtbl->GetConnectorIdConnectedTo(This,ppwstrConnectorId);
2716}
2717static 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
2734DEFINE_GUID(IID_ISubUnit, 0x82149a85, 0xdba6, 0x4487, 0x86,0xbb, 0xea,0x8f,0x7f,0xef,0xcc,0x71);
2735#if defined(__cplusplus) && !defined(CINTERFACE)
2736MIDL_INTERFACE("82149a85-dba6-4487-86bb-ea8f7fefcc71")
2737ISubUnit : 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
2744typedef 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
2762interface 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 ***/
2774static inline HRESULT ISubUnit_QueryInterface(ISubUnit* This,REFIID riid,void **ppvObject) {
2775    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2776}
2777static inline ULONG ISubUnit_AddRef(ISubUnit* This) {
2778    return This->lpVtbl->AddRef(This);
2779}
2780static 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
2797DEFINE_GUID(IID_IControlInterface, 0x45d37c3f, 0x5140, 0x444a, 0xae,0x24, 0x40,0x07,0x89,0xf3,0xcb,0xf3);
2798#if defined(__cplusplus) && !defined(CINTERFACE)
2799MIDL_INTERFACE("45d37c3f-5140-444a-ae24-400789f3cbf3")
2800IControlInterface : 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
2813typedef 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
2840interface 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 ***/
2855static inline HRESULT IControlInterface_QueryInterface(IControlInterface* This,REFIID riid,void **ppvObject) {
2856    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2857}
2858static inline ULONG IControlInterface_AddRef(IControlInterface* This) {
2859    return This->lpVtbl->AddRef(This);
2860}
2861static inline ULONG IControlInterface_Release(IControlInterface* This) {
2862    return This->lpVtbl->Release(This);
2863}
2864/*** IControlInterface methods ***/
2865static inline HRESULT IControlInterface_GetName(IControlInterface* This,LPWSTR *ppwstrName) {
2866    return This->lpVtbl->GetName(This,ppwstrName);
2867}
2868static 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
2885DEFINE_GUID(IID_IControlChangeNotify, 0xa09513ed, 0xc709, 0x4d21, 0xbd,0x7b, 0x5f,0x34,0xc4,0x7f,0x39,0x47);
2886#if defined(__cplusplus) && !defined(CINTERFACE)
2887MIDL_INTERFACE("a09513ed-c709-4d21-bd7b-5f34c47f3947")
2888IControlChangeNotify : 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
2899typedef 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
2923interface 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 ***/
2937static inline HRESULT IControlChangeNotify_QueryInterface(IControlChangeNotify* This,REFIID riid,void **ppvObject) {
2938    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
2939}
2940static inline ULONG IControlChangeNotify_AddRef(IControlChangeNotify* This) {
2941    return This->lpVtbl->AddRef(This);
2942}
2943static inline ULONG IControlChangeNotify_Release(IControlChangeNotify* This) {
2944    return This->lpVtbl->Release(This);
2945}
2946/*** IControlChangeNotify methods ***/
2947static 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
2964DEFINE_GUID(IID_IDeviceTopology, 0x2a07407e, 0x6497, 0x4a18, 0x97,0x87, 0x32,0xf7,0x9b,0xd0,0xd9,0x8f);
2965#if defined(__cplusplus) && !defined(CINTERFACE)
2966MIDL_INTERFACE("2a07407e-6497-4a18-9787-32f79bd0d98f")
2967IDeviceTopology : 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
3001typedef 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
3054interface 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 ***/
3074static inline HRESULT IDeviceTopology_QueryInterface(IDeviceTopology* This,REFIID riid,void **ppvObject) {
3075    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
3076}
3077static inline ULONG IDeviceTopology_AddRef(IDeviceTopology* This) {
3078    return This->lpVtbl->AddRef(This);
3079}
3080static inline ULONG IDeviceTopology_Release(IDeviceTopology* This) {
3081    return This->lpVtbl->Release(This);
3082}
3083/*** IDeviceTopology methods ***/
3084static inline HRESULT IDeviceTopology_GetConnectorCount(IDeviceTopology* This,UINT *pCount) {
3085    return This->lpVtbl->GetConnectorCount(This,pCount);
3086}
3087static inline HRESULT IDeviceTopology_GetConnector(IDeviceTopology* This,UINT nIndex,IConnector **ppConnector) {
3088    return This->lpVtbl->GetConnector(This,nIndex,ppConnector);
3089}
3090static inline HRESULT IDeviceTopology_GetSubunitCount(IDeviceTopology* This,UINT *pCount) {
3091    return This->lpVtbl->GetSubunitCount(This,pCount);
3092}
3093static inline HRESULT IDeviceTopology_GetSubunit(IDeviceTopology* This,UINT nIndex,ISubUnit **ppConnector) {
3094    return This->lpVtbl->GetSubunit(This,nIndex,ppConnector);
3095}
3096static inline HRESULT IDeviceTopology_GetPartById(IDeviceTopology* This,UINT nId,IPart **ppPart) {
3097    return This->lpVtbl->GetPartById(This,nId,ppPart);
3098}
3099static inline HRESULT IDeviceTopology_GetDeviceId(IDeviceTopology* This,LPWSTR *ppwstrDeviceId) {
3100    return This->lpVtbl->GetDeviceId(This,ppwstrDeviceId);
3101}
3102static 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
3116DEFINE_GUID(LIBID_DevTopologyLib, 0x51b9a01d, 0x8181, 0x4363, 0xb5,0x9c, 0xe6,0x78,0xf4,0x76,0xdd,0x0e);
3117
3118/*****************************************************************************
3119 * DeviceTopology coclass
3120 */
3121
3122DEFINE_GUID(CLSID_DeviceTopology, 0x1df639d0, 0x5ec1, 0x47aa, 0x93,0x79, 0x82,0x8d,0xc1,0xaa,0x8c,0x59);
3123
3124#ifdef __cplusplus
3125class 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__ */