1 /*** Autogenerated by WIDL 6.4 from include/mmdeviceapi.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 __mmdeviceapi_h__
17 #define __mmdeviceapi_h__
18 
19 /* Forward declarations */
20 
21 #ifndef __IMMNotificationClient_FWD_DEFINED__
22 #define __IMMNotificationClient_FWD_DEFINED__
23 typedef interface IMMNotificationClient IMMNotificationClient;
24 #ifdef __cplusplus
25 interface IMMNotificationClient;
26 #endif /* __cplusplus */
27 #endif
28 
29 #ifndef __IMMDevice_FWD_DEFINED__
30 #define __IMMDevice_FWD_DEFINED__
31 typedef interface IMMDevice IMMDevice;
32 #ifdef __cplusplus
33 interface IMMDevice;
34 #endif /* __cplusplus */
35 #endif
36 
37 #ifndef __IMMDeviceCollection_FWD_DEFINED__
38 #define __IMMDeviceCollection_FWD_DEFINED__
39 typedef interface IMMDeviceCollection IMMDeviceCollection;
40 #ifdef __cplusplus
41 interface IMMDeviceCollection;
42 #endif /* __cplusplus */
43 #endif
44 
45 #ifndef __IMMEndpoint_FWD_DEFINED__
46 #define __IMMEndpoint_FWD_DEFINED__
47 typedef interface IMMEndpoint IMMEndpoint;
48 #ifdef __cplusplus
49 interface IMMEndpoint;
50 #endif /* __cplusplus */
51 #endif
52 
53 #ifndef __IMMDeviceEnumerator_FWD_DEFINED__
54 #define __IMMDeviceEnumerator_FWD_DEFINED__
55 typedef interface IMMDeviceEnumerator IMMDeviceEnumerator;
56 #ifdef __cplusplus
57 interface IMMDeviceEnumerator;
58 #endif /* __cplusplus */
59 #endif
60 
61 #ifndef __IMMDeviceActivator_FWD_DEFINED__
62 #define __IMMDeviceActivator_FWD_DEFINED__
63 typedef interface IMMDeviceActivator IMMDeviceActivator;
64 #ifdef __cplusplus
65 interface IMMDeviceActivator;
66 #endif /* __cplusplus */
67 #endif
68 
69 #ifndef __IActivateAudioInterfaceAsyncOperation_FWD_DEFINED__
70 #define __IActivateAudioInterfaceAsyncOperation_FWD_DEFINED__
71 typedef interface IActivateAudioInterfaceAsyncOperation IActivateAudioInterfaceAsyncOperation;
72 #ifdef __cplusplus
73 interface IActivateAudioInterfaceAsyncOperation;
74 #endif /* __cplusplus */
75 #endif
76 
77 #ifndef __IActivateAudioInterfaceCompletionHandler_FWD_DEFINED__
78 #define __IActivateAudioInterfaceCompletionHandler_FWD_DEFINED__
79 typedef interface IActivateAudioInterfaceCompletionHandler IActivateAudioInterfaceCompletionHandler;
80 #ifdef __cplusplus
81 interface IActivateAudioInterfaceCompletionHandler;
82 #endif /* __cplusplus */
83 #endif
84 
85 #ifndef __MMDeviceEnumerator_FWD_DEFINED__
86 #define __MMDeviceEnumerator_FWD_DEFINED__
87 #ifdef __cplusplus
88 typedef class MMDeviceEnumerator MMDeviceEnumerator;
89 #else
90 typedef struct MMDeviceEnumerator MMDeviceEnumerator;
91 #endif /* defined __cplusplus */
92 #endif /* defined __MMDeviceEnumerator_FWD_DEFINED__ */
93 
94 /* Headers for imported files */
95 
96 #include <unknwn.h>
97 #include <propsys.h>
98 
99 #ifdef __cplusplus
100 extern "C" {
101 #endif
102 
103 #ifndef E_NOTFOUND
104 #define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
105 #endif
106 #ifndef E_UNSUPPORTED_TYPE
107 #define E_UNSUPPORTED_TYPE HRESULT_FROM_WIN32(ERROR_UNSUPPORTED_TYPE)
108 #endif
109 DEFINE_GUID(DEVINTERFACE_AUDIO_RENDER, 0xe6327cad,0xdcec,0x4949,0xae,0x8a,0x99,0x1e,0x97,0x6a,0x79,0xd2);
110 DEFINE_GUID(DEVINTERFACE_AUDIO_CAPTURE, 0x2eef81be,0x33fa,0x4800,0x96,0x70,0x1c,0xd4,0x74,0x97,0x2c,0x3f);
111 #define DEVICE_STATE_ACTIVE 0x1
112 #define DEVICE_STATE_DISABLED 0x2
113 #define DEVICE_STATE_NOTPRESENT 0x4
114 #define DEVICE_STATE_UNPLUGGED 0x8
115 #define DEVICE_STATEMASK_ALL 0xf
116 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FormFactor,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,0);
117 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_ControlPanelPageProvider,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,1);
118 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Association,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,2);
119 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_PhysicalSpeakers,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,3);
120 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_GUID,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,4);
121 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Disable_SysFx,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,5);
122 #define ENDPOINT_SYSFX_ENABLED 0
123 #define ENDPOINT_SYSFX_DISABLED 1
124 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FullRangeSpeakers,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,6);
125 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Supports_EventDriven_Mode,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,7);
126 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_JackSubType,0x1da5d803,0xd492,0x4edd,0x8c,0x23,0xe0,0xc0,0xff,0xee,0x7f,0x0e,8);
127 DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat,0xf19f064d,0x082c,0x4e27,0xbc,0x73,0x68,0x82,0xa1,0xbb,0x8e,0x4c,0);
128 DEFINE_PROPERTYKEY(PKEY_AudioEngine_OEMFormat,0xe4870e26,0x3cc5,0x4cd2,0xba,0x46,0xca,0x0a,0x9a,0x70,0xed,0x04,3);
129 typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS {
130     DWORD cbDirectXAudioActivationParams;
131     GUID guidAudioSession;
132     DWORD dwAudioStreamFlags;
133 } DIRECTX_AUDIO_ACTIVATION_PARAMS;
134 typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS *PDIRECTX_AUDIO_ACTIVATION_PARAMS;
135 typedef enum _EDataFlow {
136     eRender = 0,
137     eCapture = 1,
138     eAll = 2,
139     EDataFlow_enum_count = 3
140 } EDataFlow;
141 typedef enum _ERole {
142     eConsole = 0,
143     eMultimedia = 1,
144     eCommunications = 2,
145     ERole_enum_count = 3
146 } ERole;
147 typedef enum _EndpointFormFactor {
148     RemoteNetworkDevice = 0,
149     Speakers = 1,
150     LineLevel = 2,
151     Headphones = 3,
152     Microphone = 4,
153     Headset = 5,
154     Handset = 6,
155     UnknownDigitalPassthrough = 7,
156     SPDIF = 8,
157     DigitalAudioDisplayDevice = 9,
158     UnknownFormFactor = 10,
159     EndpointFormFactor_enum_count = 11
160 } EndpointFormFactor;
161 #define HDMI DigitalAudioDisplayDevice
162 /*****************************************************************************
163  * IMMNotificationClient interface
164  */
165 #ifndef __IMMNotificationClient_INTERFACE_DEFINED__
166 #define __IMMNotificationClient_INTERFACE_DEFINED__
167 
168 DEFINE_GUID(IID_IMMNotificationClient, 0x7991eec9, 0x7e89, 0x4d85, 0x83,0x90, 0x6c,0x70,0x3c,0xec,0x60,0xc0);
169 #if defined(__cplusplus) && !defined(CINTERFACE)
170 MIDL_INTERFACE("7991eec9-7e89-4d85-8390-6c703cec60c0")
171 IMMNotificationClient : public IUnknown
172 {
173     virtual HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(
174         LPCWSTR pwstrDeviceId,
175         DWORD dwNewState) = 0;
176 
177     virtual HRESULT STDMETHODCALLTYPE OnDeviceAdded(
178         LPCWSTR pwstrDeviceId) = 0;
179 
180     virtual HRESULT STDMETHODCALLTYPE OnDeviceRemoved(
181         LPCWSTR pwstrDeviceId) = 0;
182 
183     virtual HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(
184         EDataFlow flow,
185         ERole role,
186         LPCWSTR pwstrDeviceId) = 0;
187 
188     virtual HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(
189         LPCWSTR pwstrDeviceId,
190         const PROPERTYKEY key) = 0;
191 
192 };
193 #ifdef __CRT_UUID_DECL
194 __CRT_UUID_DECL(IMMNotificationClient, 0x7991eec9, 0x7e89, 0x4d85, 0x83,0x90, 0x6c,0x70,0x3c,0xec,0x60,0xc0)
195 #endif
196 #else
197 typedef struct IMMNotificationClientVtbl {
198     BEGIN_INTERFACE
199 
200     /*** IUnknown methods ***/
201     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
202         IMMNotificationClient *This,
203         REFIID riid,
204         void **ppvObject);
205 
206     ULONG (STDMETHODCALLTYPE *AddRef)(
207         IMMNotificationClient *This);
208 
209     ULONG (STDMETHODCALLTYPE *Release)(
210         IMMNotificationClient *This);
211 
212     /*** IMMNotificationClient methods ***/
213     HRESULT (STDMETHODCALLTYPE *OnDeviceStateChanged)(
214         IMMNotificationClient *This,
215         LPCWSTR pwstrDeviceId,
216         DWORD dwNewState);
217 
218     HRESULT (STDMETHODCALLTYPE *OnDeviceAdded)(
219         IMMNotificationClient *This,
220         LPCWSTR pwstrDeviceId);
221 
222     HRESULT (STDMETHODCALLTYPE *OnDeviceRemoved)(
223         IMMNotificationClient *This,
224         LPCWSTR pwstrDeviceId);
225 
226     HRESULT (STDMETHODCALLTYPE *OnDefaultDeviceChanged)(
227         IMMNotificationClient *This,
228         EDataFlow flow,
229         ERole role,
230         LPCWSTR pwstrDeviceId);
231 
232     HRESULT (STDMETHODCALLTYPE *OnPropertyValueChanged)(
233         IMMNotificationClient *This,
234         LPCWSTR pwstrDeviceId,
235         const PROPERTYKEY key);
236 
237     END_INTERFACE
238 } IMMNotificationClientVtbl;
239 
240 interface IMMNotificationClient {
241     CONST_VTBL IMMNotificationClientVtbl* lpVtbl;
242 };
243 
244 #ifdef COBJMACROS
245 #ifndef WIDL_C_INLINE_WRAPPERS
246 /*** IUnknown methods ***/
247 #define IMMNotificationClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
248 #define IMMNotificationClient_AddRef(This) (This)->lpVtbl->AddRef(This)
249 #define IMMNotificationClient_Release(This) (This)->lpVtbl->Release(This)
250 /*** IMMNotificationClient methods ***/
251 #define IMMNotificationClient_OnDeviceStateChanged(This,pwstrDeviceId,dwNewState) (This)->lpVtbl->OnDeviceStateChanged(This,pwstrDeviceId,dwNewState)
252 #define IMMNotificationClient_OnDeviceAdded(This,pwstrDeviceId) (This)->lpVtbl->OnDeviceAdded(This,pwstrDeviceId)
253 #define IMMNotificationClient_OnDeviceRemoved(This,pwstrDeviceId) (This)->lpVtbl->OnDeviceRemoved(This,pwstrDeviceId)
254 #define IMMNotificationClient_OnDefaultDeviceChanged(This,flow,role,pwstrDeviceId) (This)->lpVtbl->OnDefaultDeviceChanged(This,flow,role,pwstrDeviceId)
255 #define IMMNotificationClient_OnPropertyValueChanged(This,pwstrDeviceId,key) (This)->lpVtbl->OnPropertyValueChanged(This,pwstrDeviceId,key)
256 #else
257 /*** IUnknown methods ***/
258 static FORCEINLINE HRESULT IMMNotificationClient_QueryInterface(IMMNotificationClient* This,REFIID riid,void **ppvObject) {
259     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
260 }
261 static FORCEINLINE ULONG IMMNotificationClient_AddRef(IMMNotificationClient* This) {
262     return This->lpVtbl->AddRef(This);
263 }
264 static FORCEINLINE ULONG IMMNotificationClient_Release(IMMNotificationClient* This) {
265     return This->lpVtbl->Release(This);
266 }
267 /*** IMMNotificationClient methods ***/
268 static FORCEINLINE HRESULT IMMNotificationClient_OnDeviceStateChanged(IMMNotificationClient* This,LPCWSTR pwstrDeviceId,DWORD dwNewState) {
269     return This->lpVtbl->OnDeviceStateChanged(This,pwstrDeviceId,dwNewState);
270 }
271 static FORCEINLINE HRESULT IMMNotificationClient_OnDeviceAdded(IMMNotificationClient* This,LPCWSTR pwstrDeviceId) {
272     return This->lpVtbl->OnDeviceAdded(This,pwstrDeviceId);
273 }
274 static FORCEINLINE HRESULT IMMNotificationClient_OnDeviceRemoved(IMMNotificationClient* This,LPCWSTR pwstrDeviceId) {
275     return This->lpVtbl->OnDeviceRemoved(This,pwstrDeviceId);
276 }
277 static FORCEINLINE HRESULT IMMNotificationClient_OnDefaultDeviceChanged(IMMNotificationClient* This,EDataFlow flow,ERole role,LPCWSTR pwstrDeviceId) {
278     return This->lpVtbl->OnDefaultDeviceChanged(This,flow,role,pwstrDeviceId);
279 }
280 static FORCEINLINE HRESULT IMMNotificationClient_OnPropertyValueChanged(IMMNotificationClient* This,LPCWSTR pwstrDeviceId,const PROPERTYKEY key) {
281     return This->lpVtbl->OnPropertyValueChanged(This,pwstrDeviceId,key);
282 }
283 #endif
284 #endif
285 
286 #endif
287 
288 
289 #endif  /* __IMMNotificationClient_INTERFACE_DEFINED__ */
290 
291 /*****************************************************************************
292  * IMMDevice interface
293  */
294 #ifndef __IMMDevice_INTERFACE_DEFINED__
295 #define __IMMDevice_INTERFACE_DEFINED__
296 
297 DEFINE_GUID(IID_IMMDevice, 0xd666063f, 0x1587, 0x4e43, 0x81,0xf1, 0xb9,0x48,0xe8,0x07,0x36,0x3f);
298 #if defined(__cplusplus) && !defined(CINTERFACE)
299 MIDL_INTERFACE("d666063f-1587-4e43-81f1-b948e807363f")
300 IMMDevice : public IUnknown
301 {
302     virtual HRESULT STDMETHODCALLTYPE Activate(
303         REFIID iid,
304         DWORD dwClsCtx,
305         PROPVARIANT *pActivationParams,
306         void **ppv) = 0;
307 
308     virtual HRESULT STDMETHODCALLTYPE OpenPropertyStore(
309         DWORD stgmAccess,
310         IPropertyStore **ppProperties) = 0;
311 
312     virtual HRESULT STDMETHODCALLTYPE GetId(
313         LPWSTR *ppstrId) = 0;
314 
315     virtual HRESULT STDMETHODCALLTYPE GetState(
316         DWORD *pdwState) = 0;
317 
318 };
319 #ifdef __CRT_UUID_DECL
320 __CRT_UUID_DECL(IMMDevice, 0xd666063f, 0x1587, 0x4e43, 0x81,0xf1, 0xb9,0x48,0xe8,0x07,0x36,0x3f)
321 #endif
322 #else
323 typedef struct IMMDeviceVtbl {
324     BEGIN_INTERFACE
325 
326     /*** IUnknown methods ***/
327     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
328         IMMDevice *This,
329         REFIID riid,
330         void **ppvObject);
331 
332     ULONG (STDMETHODCALLTYPE *AddRef)(
333         IMMDevice *This);
334 
335     ULONG (STDMETHODCALLTYPE *Release)(
336         IMMDevice *This);
337 
338     /*** IMMDevice methods ***/
339     HRESULT (STDMETHODCALLTYPE *Activate)(
340         IMMDevice *This,
341         REFIID iid,
342         DWORD dwClsCtx,
343         PROPVARIANT *pActivationParams,
344         void **ppv);
345 
346     HRESULT (STDMETHODCALLTYPE *OpenPropertyStore)(
347         IMMDevice *This,
348         DWORD stgmAccess,
349         IPropertyStore **ppProperties);
350 
351     HRESULT (STDMETHODCALLTYPE *GetId)(
352         IMMDevice *This,
353         LPWSTR *ppstrId);
354 
355     HRESULT (STDMETHODCALLTYPE *GetState)(
356         IMMDevice *This,
357         DWORD *pdwState);
358 
359     END_INTERFACE
360 } IMMDeviceVtbl;
361 
362 interface IMMDevice {
363     CONST_VTBL IMMDeviceVtbl* lpVtbl;
364 };
365 
366 #ifdef COBJMACROS
367 #ifndef WIDL_C_INLINE_WRAPPERS
368 /*** IUnknown methods ***/
369 #define IMMDevice_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
370 #define IMMDevice_AddRef(This) (This)->lpVtbl->AddRef(This)
371 #define IMMDevice_Release(This) (This)->lpVtbl->Release(This)
372 /*** IMMDevice methods ***/
373 #define IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppv) (This)->lpVtbl->Activate(This,iid,dwClsCtx,pActivationParams,ppv)
374 #define IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties) (This)->lpVtbl->OpenPropertyStore(This,stgmAccess,ppProperties)
375 #define IMMDevice_GetId(This,ppstrId) (This)->lpVtbl->GetId(This,ppstrId)
376 #define IMMDevice_GetState(This,pdwState) (This)->lpVtbl->GetState(This,pdwState)
377 #else
378 /*** IUnknown methods ***/
379 static FORCEINLINE HRESULT IMMDevice_QueryInterface(IMMDevice* This,REFIID riid,void **ppvObject) {
380     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
381 }
382 static FORCEINLINE ULONG IMMDevice_AddRef(IMMDevice* This) {
383     return This->lpVtbl->AddRef(This);
384 }
385 static FORCEINLINE ULONG IMMDevice_Release(IMMDevice* This) {
386     return This->lpVtbl->Release(This);
387 }
388 /*** IMMDevice methods ***/
389 static FORCEINLINE HRESULT IMMDevice_Activate(IMMDevice* This,REFIID iid,DWORD dwClsCtx,PROPVARIANT *pActivationParams,void **ppv) {
390     return This->lpVtbl->Activate(This,iid,dwClsCtx,pActivationParams,ppv);
391 }
392 static FORCEINLINE HRESULT IMMDevice_OpenPropertyStore(IMMDevice* This,DWORD stgmAccess,IPropertyStore **ppProperties) {
393     return This->lpVtbl->OpenPropertyStore(This,stgmAccess,ppProperties);
394 }
395 static FORCEINLINE HRESULT IMMDevice_GetId(IMMDevice* This,LPWSTR *ppstrId) {
396     return This->lpVtbl->GetId(This,ppstrId);
397 }
398 static FORCEINLINE HRESULT IMMDevice_GetState(IMMDevice* This,DWORD *pdwState) {
399     return This->lpVtbl->GetState(This,pdwState);
400 }
401 #endif
402 #endif
403 
404 #endif
405 
406 
407 #endif  /* __IMMDevice_INTERFACE_DEFINED__ */
408 
409 /*****************************************************************************
410  * IMMDeviceCollection interface
411  */
412 #ifndef __IMMDeviceCollection_INTERFACE_DEFINED__
413 #define __IMMDeviceCollection_INTERFACE_DEFINED__
414 
415 DEFINE_GUID(IID_IMMDeviceCollection, 0x0bd7a1be, 0x7a1a, 0x44db, 0x83,0x97, 0xcc,0x53,0x92,0x38,0x7b,0x5e);
416 #if defined(__cplusplus) && !defined(CINTERFACE)
417 MIDL_INTERFACE("0bd7a1be-7a1a-44db-8397-cc5392387b5e")
418 IMMDeviceCollection : public IUnknown
419 {
420     virtual HRESULT STDMETHODCALLTYPE GetCount(
421         UINT *pcDevices) = 0;
422 
423     virtual HRESULT STDMETHODCALLTYPE Item(
424         UINT nDevice,
425         IMMDevice **ppdevice) = 0;
426 
427 };
428 #ifdef __CRT_UUID_DECL
429 __CRT_UUID_DECL(IMMDeviceCollection, 0x0bd7a1be, 0x7a1a, 0x44db, 0x83,0x97, 0xcc,0x53,0x92,0x38,0x7b,0x5e)
430 #endif
431 #else
432 typedef struct IMMDeviceCollectionVtbl {
433     BEGIN_INTERFACE
434 
435     /*** IUnknown methods ***/
436     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
437         IMMDeviceCollection *This,
438         REFIID riid,
439         void **ppvObject);
440 
441     ULONG (STDMETHODCALLTYPE *AddRef)(
442         IMMDeviceCollection *This);
443 
444     ULONG (STDMETHODCALLTYPE *Release)(
445         IMMDeviceCollection *This);
446 
447     /*** IMMDeviceCollection methods ***/
448     HRESULT (STDMETHODCALLTYPE *GetCount)(
449         IMMDeviceCollection *This,
450         UINT *pcDevices);
451 
452     HRESULT (STDMETHODCALLTYPE *Item)(
453         IMMDeviceCollection *This,
454         UINT nDevice,
455         IMMDevice **ppdevice);
456 
457     END_INTERFACE
458 } IMMDeviceCollectionVtbl;
459 
460 interface IMMDeviceCollection {
461     CONST_VTBL IMMDeviceCollectionVtbl* lpVtbl;
462 };
463 
464 #ifdef COBJMACROS
465 #ifndef WIDL_C_INLINE_WRAPPERS
466 /*** IUnknown methods ***/
467 #define IMMDeviceCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
468 #define IMMDeviceCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
469 #define IMMDeviceCollection_Release(This) (This)->lpVtbl->Release(This)
470 /*** IMMDeviceCollection methods ***/
471 #define IMMDeviceCollection_GetCount(This,pcDevices) (This)->lpVtbl->GetCount(This,pcDevices)
472 #define IMMDeviceCollection_Item(This,nDevice,ppdevice) (This)->lpVtbl->Item(This,nDevice,ppdevice)
473 #else
474 /*** IUnknown methods ***/
475 static FORCEINLINE HRESULT IMMDeviceCollection_QueryInterface(IMMDeviceCollection* This,REFIID riid,void **ppvObject) {
476     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
477 }
478 static FORCEINLINE ULONG IMMDeviceCollection_AddRef(IMMDeviceCollection* This) {
479     return This->lpVtbl->AddRef(This);
480 }
481 static FORCEINLINE ULONG IMMDeviceCollection_Release(IMMDeviceCollection* This) {
482     return This->lpVtbl->Release(This);
483 }
484 /*** IMMDeviceCollection methods ***/
485 static FORCEINLINE HRESULT IMMDeviceCollection_GetCount(IMMDeviceCollection* This,UINT *pcDevices) {
486     return This->lpVtbl->GetCount(This,pcDevices);
487 }
488 static FORCEINLINE HRESULT IMMDeviceCollection_Item(IMMDeviceCollection* This,UINT nDevice,IMMDevice **ppdevice) {
489     return This->lpVtbl->Item(This,nDevice,ppdevice);
490 }
491 #endif
492 #endif
493 
494 #endif
495 
496 
497 #endif  /* __IMMDeviceCollection_INTERFACE_DEFINED__ */
498 
499 /*****************************************************************************
500  * IMMEndpoint interface
501  */
502 #ifndef __IMMEndpoint_INTERFACE_DEFINED__
503 #define __IMMEndpoint_INTERFACE_DEFINED__
504 
505 DEFINE_GUID(IID_IMMEndpoint, 0x1be09788, 0x6894, 0x4089, 0x85,0x86, 0x9a,0x2a,0x6c,0x26,0x5a,0xc5);
506 #if defined(__cplusplus) && !defined(CINTERFACE)
507 MIDL_INTERFACE("1be09788-6894-4089-8586-9a2a6c265ac5")
508 IMMEndpoint : public IUnknown
509 {
510     virtual HRESULT STDMETHODCALLTYPE GetDataFlow(
511         EDataFlow *pDataFlow) = 0;
512 
513 };
514 #ifdef __CRT_UUID_DECL
515 __CRT_UUID_DECL(IMMEndpoint, 0x1be09788, 0x6894, 0x4089, 0x85,0x86, 0x9a,0x2a,0x6c,0x26,0x5a,0xc5)
516 #endif
517 #else
518 typedef struct IMMEndpointVtbl {
519     BEGIN_INTERFACE
520 
521     /*** IUnknown methods ***/
522     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
523         IMMEndpoint *This,
524         REFIID riid,
525         void **ppvObject);
526 
527     ULONG (STDMETHODCALLTYPE *AddRef)(
528         IMMEndpoint *This);
529 
530     ULONG (STDMETHODCALLTYPE *Release)(
531         IMMEndpoint *This);
532 
533     /*** IMMEndpoint methods ***/
534     HRESULT (STDMETHODCALLTYPE *GetDataFlow)(
535         IMMEndpoint *This,
536         EDataFlow *pDataFlow);
537 
538     END_INTERFACE
539 } IMMEndpointVtbl;
540 
541 interface IMMEndpoint {
542     CONST_VTBL IMMEndpointVtbl* lpVtbl;
543 };
544 
545 #ifdef COBJMACROS
546 #ifndef WIDL_C_INLINE_WRAPPERS
547 /*** IUnknown methods ***/
548 #define IMMEndpoint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
549 #define IMMEndpoint_AddRef(This) (This)->lpVtbl->AddRef(This)
550 #define IMMEndpoint_Release(This) (This)->lpVtbl->Release(This)
551 /*** IMMEndpoint methods ***/
552 #define IMMEndpoint_GetDataFlow(This,pDataFlow) (This)->lpVtbl->GetDataFlow(This,pDataFlow)
553 #else
554 /*** IUnknown methods ***/
555 static FORCEINLINE HRESULT IMMEndpoint_QueryInterface(IMMEndpoint* This,REFIID riid,void **ppvObject) {
556     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
557 }
558 static FORCEINLINE ULONG IMMEndpoint_AddRef(IMMEndpoint* This) {
559     return This->lpVtbl->AddRef(This);
560 }
561 static FORCEINLINE ULONG IMMEndpoint_Release(IMMEndpoint* This) {
562     return This->lpVtbl->Release(This);
563 }
564 /*** IMMEndpoint methods ***/
565 static FORCEINLINE HRESULT IMMEndpoint_GetDataFlow(IMMEndpoint* This,EDataFlow *pDataFlow) {
566     return This->lpVtbl->GetDataFlow(This,pDataFlow);
567 }
568 #endif
569 #endif
570 
571 #endif
572 
573 
574 #endif  /* __IMMEndpoint_INTERFACE_DEFINED__ */
575 
576 /*****************************************************************************
577  * IMMDeviceEnumerator interface
578  */
579 #ifndef __IMMDeviceEnumerator_INTERFACE_DEFINED__
580 #define __IMMDeviceEnumerator_INTERFACE_DEFINED__
581 
582 DEFINE_GUID(IID_IMMDeviceEnumerator, 0xa95664d2, 0x9614, 0x4f35, 0xa7,0x46, 0xde,0x8d,0xb6,0x36,0x17,0xe6);
583 #if defined(__cplusplus) && !defined(CINTERFACE)
584 MIDL_INTERFACE("a95664d2-9614-4f35-a746-de8db63617e6")
585 IMMDeviceEnumerator : public IUnknown
586 {
587     virtual HRESULT STDMETHODCALLTYPE EnumAudioEndpoints(
588         EDataFlow dataFlow,
589         DWORD dwStateMask,
590         IMMDeviceCollection **ppDevices) = 0;
591 
592     virtual HRESULT STDMETHODCALLTYPE GetDefaultAudioEndpoint(
593         EDataFlow dataFlow,
594         ERole role,
595         IMMDevice **ppEndpoint) = 0;
596 
597     virtual HRESULT STDMETHODCALLTYPE GetDevice(
598         LPCWSTR pwstrId,
599         IMMDevice **ppDevice) = 0;
600 
601     virtual HRESULT STDMETHODCALLTYPE RegisterEndpointNotificationCallback(
602         IMMNotificationClient *pClient) = 0;
603 
604     virtual HRESULT STDMETHODCALLTYPE UnregisterEndpointNotificationCallback(
605         IMMNotificationClient *pClient) = 0;
606 
607 };
608 #ifdef __CRT_UUID_DECL
609 __CRT_UUID_DECL(IMMDeviceEnumerator, 0xa95664d2, 0x9614, 0x4f35, 0xa7,0x46, 0xde,0x8d,0xb6,0x36,0x17,0xe6)
610 #endif
611 #else
612 typedef struct IMMDeviceEnumeratorVtbl {
613     BEGIN_INTERFACE
614 
615     /*** IUnknown methods ***/
616     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
617         IMMDeviceEnumerator *This,
618         REFIID riid,
619         void **ppvObject);
620 
621     ULONG (STDMETHODCALLTYPE *AddRef)(
622         IMMDeviceEnumerator *This);
623 
624     ULONG (STDMETHODCALLTYPE *Release)(
625         IMMDeviceEnumerator *This);
626 
627     /*** IMMDeviceEnumerator methods ***/
628     HRESULT (STDMETHODCALLTYPE *EnumAudioEndpoints)(
629         IMMDeviceEnumerator *This,
630         EDataFlow dataFlow,
631         DWORD dwStateMask,
632         IMMDeviceCollection **ppDevices);
633 
634     HRESULT (STDMETHODCALLTYPE *GetDefaultAudioEndpoint)(
635         IMMDeviceEnumerator *This,
636         EDataFlow dataFlow,
637         ERole role,
638         IMMDevice **ppEndpoint);
639 
640     HRESULT (STDMETHODCALLTYPE *GetDevice)(
641         IMMDeviceEnumerator *This,
642         LPCWSTR pwstrId,
643         IMMDevice **ppDevice);
644 
645     HRESULT (STDMETHODCALLTYPE *RegisterEndpointNotificationCallback)(
646         IMMDeviceEnumerator *This,
647         IMMNotificationClient *pClient);
648 
649     HRESULT (STDMETHODCALLTYPE *UnregisterEndpointNotificationCallback)(
650         IMMDeviceEnumerator *This,
651         IMMNotificationClient *pClient);
652 
653     END_INTERFACE
654 } IMMDeviceEnumeratorVtbl;
655 
656 interface IMMDeviceEnumerator {
657     CONST_VTBL IMMDeviceEnumeratorVtbl* lpVtbl;
658 };
659 
660 #ifdef COBJMACROS
661 #ifndef WIDL_C_INLINE_WRAPPERS
662 /*** IUnknown methods ***/
663 #define IMMDeviceEnumerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
664 #define IMMDeviceEnumerator_AddRef(This) (This)->lpVtbl->AddRef(This)
665 #define IMMDeviceEnumerator_Release(This) (This)->lpVtbl->Release(This)
666 /*** IMMDeviceEnumerator methods ***/
667 #define IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) (This)->lpVtbl->EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices)
668 #define IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) (This)->lpVtbl->GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint)
669 #define IMMDeviceEnumerator_GetDevice(This,pwstrId,ppDevice) (This)->lpVtbl->GetDevice(This,pwstrId,ppDevice)
670 #define IMMDeviceEnumerator_RegisterEndpointNotificationCallback(This,pClient) (This)->lpVtbl->RegisterEndpointNotificationCallback(This,pClient)
671 #define IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(This,pClient) (This)->lpVtbl->UnregisterEndpointNotificationCallback(This,pClient)
672 #else
673 /*** IUnknown methods ***/
674 static FORCEINLINE HRESULT IMMDeviceEnumerator_QueryInterface(IMMDeviceEnumerator* This,REFIID riid,void **ppvObject) {
675     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
676 }
677 static FORCEINLINE ULONG IMMDeviceEnumerator_AddRef(IMMDeviceEnumerator* This) {
678     return This->lpVtbl->AddRef(This);
679 }
680 static FORCEINLINE ULONG IMMDeviceEnumerator_Release(IMMDeviceEnumerator* This) {
681     return This->lpVtbl->Release(This);
682 }
683 /*** IMMDeviceEnumerator methods ***/
684 static FORCEINLINE HRESULT IMMDeviceEnumerator_EnumAudioEndpoints(IMMDeviceEnumerator* This,EDataFlow dataFlow,DWORD dwStateMask,IMMDeviceCollection **ppDevices) {
685     return This->lpVtbl->EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices);
686 }
687 static FORCEINLINE HRESULT IMMDeviceEnumerator_GetDefaultAudioEndpoint(IMMDeviceEnumerator* This,EDataFlow dataFlow,ERole role,IMMDevice **ppEndpoint) {
688     return This->lpVtbl->GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint);
689 }
690 static FORCEINLINE HRESULT IMMDeviceEnumerator_GetDevice(IMMDeviceEnumerator* This,LPCWSTR pwstrId,IMMDevice **ppDevice) {
691     return This->lpVtbl->GetDevice(This,pwstrId,ppDevice);
692 }
693 static FORCEINLINE HRESULT IMMDeviceEnumerator_RegisterEndpointNotificationCallback(IMMDeviceEnumerator* This,IMMNotificationClient *pClient) {
694     return This->lpVtbl->RegisterEndpointNotificationCallback(This,pClient);
695 }
696 static FORCEINLINE HRESULT IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(IMMDeviceEnumerator* This,IMMNotificationClient *pClient) {
697     return This->lpVtbl->UnregisterEndpointNotificationCallback(This,pClient);
698 }
699 #endif
700 #endif
701 
702 #endif
703 
704 
705 #endif  /* __IMMDeviceEnumerator_INTERFACE_DEFINED__ */
706 
707 /*****************************************************************************
708  * IMMDeviceActivator interface
709  */
710 #ifndef __IMMDeviceActivator_INTERFACE_DEFINED__
711 #define __IMMDeviceActivator_INTERFACE_DEFINED__
712 
713 DEFINE_GUID(IID_IMMDeviceActivator, 0x3b0d0ea4, 0xd0a9, 0x4b0e, 0x93,0x5b, 0x09,0x51,0x67,0x46,0xfa,0xc0);
714 #if defined(__cplusplus) && !defined(CINTERFACE)
715 MIDL_INTERFACE("3b0d0ea4-d0a9-4b0e-935b-09516746fac0")
716 IMMDeviceActivator : public IUnknown
717 {
718     virtual HRESULT STDMETHODCALLTYPE Activate(
719         REFIID iid,
720         IMMDevice *pDevice,
721         PROPVARIANT *pActivationParams,
722         void **ppv) = 0;
723 
724 };
725 #ifdef __CRT_UUID_DECL
726 __CRT_UUID_DECL(IMMDeviceActivator, 0x3b0d0ea4, 0xd0a9, 0x4b0e, 0x93,0x5b, 0x09,0x51,0x67,0x46,0xfa,0xc0)
727 #endif
728 #else
729 typedef struct IMMDeviceActivatorVtbl {
730     BEGIN_INTERFACE
731 
732     /*** IUnknown methods ***/
733     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
734         IMMDeviceActivator *This,
735         REFIID riid,
736         void **ppvObject);
737 
738     ULONG (STDMETHODCALLTYPE *AddRef)(
739         IMMDeviceActivator *This);
740 
741     ULONG (STDMETHODCALLTYPE *Release)(
742         IMMDeviceActivator *This);
743 
744     /*** IMMDeviceActivator methods ***/
745     HRESULT (STDMETHODCALLTYPE *Activate)(
746         IMMDeviceActivator *This,
747         REFIID iid,
748         IMMDevice *pDevice,
749         PROPVARIANT *pActivationParams,
750         void **ppv);
751 
752     END_INTERFACE
753 } IMMDeviceActivatorVtbl;
754 
755 interface IMMDeviceActivator {
756     CONST_VTBL IMMDeviceActivatorVtbl* lpVtbl;
757 };
758 
759 #ifdef COBJMACROS
760 #ifndef WIDL_C_INLINE_WRAPPERS
761 /*** IUnknown methods ***/
762 #define IMMDeviceActivator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
763 #define IMMDeviceActivator_AddRef(This) (This)->lpVtbl->AddRef(This)
764 #define IMMDeviceActivator_Release(This) (This)->lpVtbl->Release(This)
765 /*** IMMDeviceActivator methods ***/
766 #define IMMDeviceActivator_Activate(This,iid,pDevice,pActivationParams,ppv) (This)->lpVtbl->Activate(This,iid,pDevice,pActivationParams,ppv)
767 #else
768 /*** IUnknown methods ***/
769 static FORCEINLINE HRESULT IMMDeviceActivator_QueryInterface(IMMDeviceActivator* This,REFIID riid,void **ppvObject) {
770     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
771 }
772 static FORCEINLINE ULONG IMMDeviceActivator_AddRef(IMMDeviceActivator* This) {
773     return This->lpVtbl->AddRef(This);
774 }
775 static FORCEINLINE ULONG IMMDeviceActivator_Release(IMMDeviceActivator* This) {
776     return This->lpVtbl->Release(This);
777 }
778 /*** IMMDeviceActivator methods ***/
779 static FORCEINLINE HRESULT IMMDeviceActivator_Activate(IMMDeviceActivator* This,REFIID iid,IMMDevice *pDevice,PROPVARIANT *pActivationParams,void **ppv) {
780     return This->lpVtbl->Activate(This,iid,pDevice,pActivationParams,ppv);
781 }
782 #endif
783 #endif
784 
785 #endif
786 
787 
788 #endif  /* __IMMDeviceActivator_INTERFACE_DEFINED__ */
789 
790 typedef struct _AudioExtensionParams {
791     LPARAM AddPageParam;
792     IMMDevice *pEndPoint;
793     IMMDevice *pPnpInterface;
794     IMMDevice *pPnpDevnode;
795 } AudioExtensionParams;
796 /*****************************************************************************
797  * IActivateAudioInterfaceAsyncOperation interface
798  */
799 #ifndef __IActivateAudioInterfaceAsyncOperation_INTERFACE_DEFINED__
800 #define __IActivateAudioInterfaceAsyncOperation_INTERFACE_DEFINED__
801 
802 DEFINE_GUID(IID_IActivateAudioInterfaceAsyncOperation, 0x72a22d78, 0xcde4, 0x431d, 0xb8,0xcc, 0x84,0x3a,0x71,0x19,0x9b,0x6d);
803 #if defined(__cplusplus) && !defined(CINTERFACE)
804 MIDL_INTERFACE("72a22d78-cde4-431d-b8cc-843a71199b6d")
805 IActivateAudioInterfaceAsyncOperation : public IUnknown
806 {
807     virtual HRESULT STDMETHODCALLTYPE GetActivateResult(
808         HRESULT *result,
809         IUnknown **iface) = 0;
810 
811 };
812 #ifdef __CRT_UUID_DECL
813 __CRT_UUID_DECL(IActivateAudioInterfaceAsyncOperation, 0x72a22d78, 0xcde4, 0x431d, 0xb8,0xcc, 0x84,0x3a,0x71,0x19,0x9b,0x6d)
814 #endif
815 #else
816 typedef struct IActivateAudioInterfaceAsyncOperationVtbl {
817     BEGIN_INTERFACE
818 
819     /*** IUnknown methods ***/
820     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
821         IActivateAudioInterfaceAsyncOperation *This,
822         REFIID riid,
823         void **ppvObject);
824 
825     ULONG (STDMETHODCALLTYPE *AddRef)(
826         IActivateAudioInterfaceAsyncOperation *This);
827 
828     ULONG (STDMETHODCALLTYPE *Release)(
829         IActivateAudioInterfaceAsyncOperation *This);
830 
831     /*** IActivateAudioInterfaceAsyncOperation methods ***/
832     HRESULT (STDMETHODCALLTYPE *GetActivateResult)(
833         IActivateAudioInterfaceAsyncOperation *This,
834         HRESULT *result,
835         IUnknown **iface);
836 
837     END_INTERFACE
838 } IActivateAudioInterfaceAsyncOperationVtbl;
839 
840 interface IActivateAudioInterfaceAsyncOperation {
841     CONST_VTBL IActivateAudioInterfaceAsyncOperationVtbl* lpVtbl;
842 };
843 
844 #ifdef COBJMACROS
845 #ifndef WIDL_C_INLINE_WRAPPERS
846 /*** IUnknown methods ***/
847 #define IActivateAudioInterfaceAsyncOperation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
848 #define IActivateAudioInterfaceAsyncOperation_AddRef(This) (This)->lpVtbl->AddRef(This)
849 #define IActivateAudioInterfaceAsyncOperation_Release(This) (This)->lpVtbl->Release(This)
850 /*** IActivateAudioInterfaceAsyncOperation methods ***/
851 #define IActivateAudioInterfaceAsyncOperation_GetActivateResult(This,result,iface) (This)->lpVtbl->GetActivateResult(This,result,iface)
852 #else
853 /*** IUnknown methods ***/
854 static FORCEINLINE HRESULT IActivateAudioInterfaceAsyncOperation_QueryInterface(IActivateAudioInterfaceAsyncOperation* This,REFIID riid,void **ppvObject) {
855     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
856 }
857 static FORCEINLINE ULONG IActivateAudioInterfaceAsyncOperation_AddRef(IActivateAudioInterfaceAsyncOperation* This) {
858     return This->lpVtbl->AddRef(This);
859 }
860 static FORCEINLINE ULONG IActivateAudioInterfaceAsyncOperation_Release(IActivateAudioInterfaceAsyncOperation* This) {
861     return This->lpVtbl->Release(This);
862 }
863 /*** IActivateAudioInterfaceAsyncOperation methods ***/
864 static FORCEINLINE HRESULT IActivateAudioInterfaceAsyncOperation_GetActivateResult(IActivateAudioInterfaceAsyncOperation* This,HRESULT *result,IUnknown **iface) {
865     return This->lpVtbl->GetActivateResult(This,result,iface);
866 }
867 #endif
868 #endif
869 
870 #endif
871 
872 
873 #endif  /* __IActivateAudioInterfaceAsyncOperation_INTERFACE_DEFINED__ */
874 
875 /*****************************************************************************
876  * IActivateAudioInterfaceCompletionHandler interface
877  */
878 #ifndef __IActivateAudioInterfaceCompletionHandler_INTERFACE_DEFINED__
879 #define __IActivateAudioInterfaceCompletionHandler_INTERFACE_DEFINED__
880 
881 DEFINE_GUID(IID_IActivateAudioInterfaceCompletionHandler, 0x41d949ab, 0x9862, 0x444a, 0x80,0xf6, 0xc2,0x61,0x33,0x4d,0xa5,0xeb);
882 #if defined(__cplusplus) && !defined(CINTERFACE)
883 MIDL_INTERFACE("41d949ab-9862-444a-80f6-c261334da5eb")
884 IActivateAudioInterfaceCompletionHandler : public IUnknown
885 {
886     virtual HRESULT STDMETHODCALLTYPE ActivateCompleted(
887         IActivateAudioInterfaceAsyncOperation *op) = 0;
888 
889 };
890 #ifdef __CRT_UUID_DECL
891 __CRT_UUID_DECL(IActivateAudioInterfaceCompletionHandler, 0x41d949ab, 0x9862, 0x444a, 0x80,0xf6, 0xc2,0x61,0x33,0x4d,0xa5,0xeb)
892 #endif
893 #else
894 typedef struct IActivateAudioInterfaceCompletionHandlerVtbl {
895     BEGIN_INTERFACE
896 
897     /*** IUnknown methods ***/
898     HRESULT (STDMETHODCALLTYPE *QueryInterface)(
899         IActivateAudioInterfaceCompletionHandler *This,
900         REFIID riid,
901         void **ppvObject);
902 
903     ULONG (STDMETHODCALLTYPE *AddRef)(
904         IActivateAudioInterfaceCompletionHandler *This);
905 
906     ULONG (STDMETHODCALLTYPE *Release)(
907         IActivateAudioInterfaceCompletionHandler *This);
908 
909     /*** IActivateAudioInterfaceCompletionHandler methods ***/
910     HRESULT (STDMETHODCALLTYPE *ActivateCompleted)(
911         IActivateAudioInterfaceCompletionHandler *This,
912         IActivateAudioInterfaceAsyncOperation *op);
913 
914     END_INTERFACE
915 } IActivateAudioInterfaceCompletionHandlerVtbl;
916 
917 interface IActivateAudioInterfaceCompletionHandler {
918     CONST_VTBL IActivateAudioInterfaceCompletionHandlerVtbl* lpVtbl;
919 };
920 
921 #ifdef COBJMACROS
922 #ifndef WIDL_C_INLINE_WRAPPERS
923 /*** IUnknown methods ***/
924 #define IActivateAudioInterfaceCompletionHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
925 #define IActivateAudioInterfaceCompletionHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
926 #define IActivateAudioInterfaceCompletionHandler_Release(This) (This)->lpVtbl->Release(This)
927 /*** IActivateAudioInterfaceCompletionHandler methods ***/
928 #define IActivateAudioInterfaceCompletionHandler_ActivateCompleted(This,op) (This)->lpVtbl->ActivateCompleted(This,op)
929 #else
930 /*** IUnknown methods ***/
931 static FORCEINLINE HRESULT IActivateAudioInterfaceCompletionHandler_QueryInterface(IActivateAudioInterfaceCompletionHandler* This,REFIID riid,void **ppvObject) {
932     return This->lpVtbl->QueryInterface(This,riid,ppvObject);
933 }
934 static FORCEINLINE ULONG IActivateAudioInterfaceCompletionHandler_AddRef(IActivateAudioInterfaceCompletionHandler* This) {
935     return This->lpVtbl->AddRef(This);
936 }
937 static FORCEINLINE ULONG IActivateAudioInterfaceCompletionHandler_Release(IActivateAudioInterfaceCompletionHandler* This) {
938     return This->lpVtbl->Release(This);
939 }
940 /*** IActivateAudioInterfaceCompletionHandler methods ***/
941 static FORCEINLINE HRESULT IActivateAudioInterfaceCompletionHandler_ActivateCompleted(IActivateAudioInterfaceCompletionHandler* This,IActivateAudioInterfaceAsyncOperation *op) {
942     return This->lpVtbl->ActivateCompleted(This,op);
943 }
944 #endif
945 #endif
946 
947 #endif
948 
949 
950 #endif  /* __IActivateAudioInterfaceCompletionHandler_INTERFACE_DEFINED__ */
951 
952 HRESULT WINAPI ActivateAudioInterfaceAsync(
953         const WCHAR *path, REFIID riid, PROPVARIANT *params,
954         IActivateAudioInterfaceCompletionHandler *done_handler,
955         IActivateAudioInterfaceAsyncOperation **op);
956 #ifndef __MMDeviceAPILib_LIBRARY_DEFINED__
957 #define __MMDeviceAPILib_LIBRARY_DEFINED__
958 
959 DEFINE_GUID(LIBID_MMDeviceAPILib, 0x2fdaafa3, 0x7523, 0x4f66, 0x99,0x57, 0x9d,0x5e,0x7f,0xe6,0x98,0xf6);
960 
961 /*****************************************************************************
962  * MMDeviceEnumerator coclass
963  */
964 
965 DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xbcde0395, 0xe52f, 0x467c, 0x8e,0x3d, 0xc4,0x57,0x92,0x91,0x69,0x2e);
966 
967 #ifdef __cplusplus
968 class DECLSPEC_UUID("bcde0395-e52f-467c-8e3d-c4579291692e") MMDeviceEnumerator;
969 #ifdef __CRT_UUID_DECL
970 __CRT_UUID_DECL(MMDeviceEnumerator, 0xbcde0395, 0xe52f, 0x467c, 0x8e,0x3d, 0xc4,0x57,0x92,0x91,0x69,0x2e)
971 #endif
972 #endif
973 
974 #endif /* __MMDeviceAPILib_LIBRARY_DEFINED__ */
975 /* Begin additional prototypes for all interfaces */
976 
977 
978 /* End additional prototypes */
979 
980 #ifdef __cplusplus
981 }
982 #endif
983 
984 #endif /* __mmdeviceapi_h__ */
985