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