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