1 
2 
3 /* this ALWAYS GENERATED file contains the definitions for the interfaces */
4 
5 
6  /* File created by MIDL compiler version 7.00.0499 */
7 /* Compiler settings for mmdeviceapi.idl:
8     Oicf, W1, Zp8, env=Win32 (32b run)
9     protocol : dce , ms_ext, c_ext, robust
10     error checks: allocation ref bounds_check enum stub_data
11     VC __declspec() decoration level:
12          __declspec(uuid()), __declspec(selectany), __declspec(novtable)
13          DECLSPEC_UUID(), MIDL_INTERFACE()
14 */
15 //@@MIDL_FILE_HEADING(  )
16 
17 #pragma warning( disable: 4049 )  /* more than 64k source lines */
18 
19 
20 /* verify that the <rpcndr.h> version is high enough to compile this file*/
21 #ifndef __REQUIRED_RPCNDR_H_VERSION__
22 #define __REQUIRED_RPCNDR_H_VERSION__ 500
23 #endif
24 
25 /* verify that the <rpcsal.h> version is high enough to compile this file*/
26 #ifndef __REQUIRED_RPCSAL_H_VERSION__
27 #define __REQUIRED_RPCSAL_H_VERSION__ 100
28 #endif
29 
30 #include "rpc.h"
31 #include "rpcndr.h"
32 
33 #ifndef __RPCNDR_H_VERSION__
34 #error this stub requires an updated version of <rpcndr.h>
35 #endif // __RPCNDR_H_VERSION__
36 
37 #ifndef COM_NO_WINDOWS_H
38 #include "windows.h"
39 #include "ole2.h"
40 #endif /*COM_NO_WINDOWS_H*/
41 
42 #ifndef __mmdeviceapi_h__
43 #define __mmdeviceapi_h__
44 
45 #if __GNUC__ >=3
46 #pragma GCC system_header
47 #endif
48 
49 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
50 #pragma once
51 #endif
52 
53 /* Forward Declarations */
54 
55 #ifndef __IMMNotificationClient_FWD_DEFINED__
56 #define __IMMNotificationClient_FWD_DEFINED__
57 typedef interface IMMNotificationClient IMMNotificationClient;
58 #endif 	/* __IMMNotificationClient_FWD_DEFINED__ */
59 
60 
61 #ifndef __IMMDevice_FWD_DEFINED__
62 #define __IMMDevice_FWD_DEFINED__
63 typedef interface IMMDevice IMMDevice;
64 #endif 	/* __IMMDevice_FWD_DEFINED__ */
65 
66 
67 #ifndef __IMMDeviceCollection_FWD_DEFINED__
68 #define __IMMDeviceCollection_FWD_DEFINED__
69 typedef interface IMMDeviceCollection IMMDeviceCollection;
70 #endif 	/* __IMMDeviceCollection_FWD_DEFINED__ */
71 
72 
73 #ifndef __IMMEndpoint_FWD_DEFINED__
74 #define __IMMEndpoint_FWD_DEFINED__
75 typedef interface IMMEndpoint IMMEndpoint;
76 #endif 	/* __IMMEndpoint_FWD_DEFINED__ */
77 
78 
79 #ifndef __IMMDeviceEnumerator_FWD_DEFINED__
80 #define __IMMDeviceEnumerator_FWD_DEFINED__
81 typedef interface IMMDeviceEnumerator IMMDeviceEnumerator;
82 #endif 	/* __IMMDeviceEnumerator_FWD_DEFINED__ */
83 
84 
85 #ifndef __IMMDeviceActivator_FWD_DEFINED__
86 #define __IMMDeviceActivator_FWD_DEFINED__
87 typedef interface IMMDeviceActivator IMMDeviceActivator;
88 #endif 	/* __IMMDeviceActivator_FWD_DEFINED__ */
89 
90 
91 #ifndef __MMDeviceEnumerator_FWD_DEFINED__
92 #define __MMDeviceEnumerator_FWD_DEFINED__
93 
94 #ifdef __cplusplus
95 typedef class MMDeviceEnumerator MMDeviceEnumerator;
96 #else
97 typedef struct MMDeviceEnumerator MMDeviceEnumerator;
98 #endif /* __cplusplus */
99 
100 #endif 	/* __MMDeviceEnumerator_FWD_DEFINED__ */
101 
102 
103 /* header files for imported files */
104 #include "unknwn.h"
105 #include "propsys.h"
106 
107 #ifdef __cplusplus
108 extern "C"{
109 #endif
110 
111 
112 /* interface __MIDL_itf_mmdeviceapi_0000_0000 */
113 /* [local] */
114 
115 #define E_NOTFOUND HRESULT_FROM_WIN32(ERROR_NOT_FOUND)
116 #define E_UNSUPPORTED_TYPE HRESULT_FROM_WIN32(ERROR_UNSUPPORTED_TYPE)
117 #define DEVICE_STATE_ACTIVE      0x00000001
118 #define DEVICE_STATE_DISABLED    0x00000002
119 #define DEVICE_STATE_NOTPRESENT  0x00000004
120 #define DEVICE_STATE_UNPLUGGED   0x00000008
121 #define DEVICE_STATEMASK_ALL     0x0000000f
122 #ifdef DEFINE_PROPERTYKEY
123 #undef DEFINE_PROPERTYKEY
124 #endif
125 #ifdef INITGUID
126 #define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name = { { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }, pid }
127 #else
128 #define DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const PROPERTYKEY name
129 #endif // INITGUID
130 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FormFactor, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 0);
131 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_ControlPanelPageProvider, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 1);
132 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Association, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 2);
133 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_PhysicalSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 3);
134 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_GUID, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 4);
135 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_Disable_SysFx, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 5);
136 #define ENDPOINT_SYSFX_ENABLED          0x00000000  // System Effects are enabled.
137 #define ENDPOINT_SYSFX_DISABLED         0x00000001  // System Effects are disabled.
138 DEFINE_PROPERTYKEY(PKEY_AudioEndpoint_FullRangeSpeakers, 0x1da5d803, 0xd492, 0x4edd, 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e, 6);
139 DEFINE_PROPERTYKEY(PKEY_AudioEngine_DeviceFormat, 0xf19f064d, 0x82c, 0x4e27, 0xbc, 0x73, 0x68, 0x82, 0xa1, 0xbb, 0x8e, 0x4c, 0);
140 typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS
141     {
142     DWORD cbDirectXAudioActivationParams;
143     GUID guidAudioSession;
144     DWORD dwAudioStreamFlags;
145     } 	DIRECTX_AUDIO_ACTIVATION_PARAMS;
146 
147 typedef struct tagDIRECTX_AUDIO_ACTIVATION_PARAMS *PDIRECTX_AUDIO_ACTIVATION_PARAMS;
148 
149 typedef /* [public][public][public][public][public] */
150 enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0001
151     {	eRender	= 0,
152 	eCapture	= ( eRender + 1 ) ,
153 	eAll	= ( eCapture + 1 ) ,
154 	EDataFlow_enum_count	= ( eAll + 1 )
155     } 	EDataFlow;
156 
157 typedef /* [public][public][public] */
158 enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0002
159     {	eConsole	= 0,
160 	eMultimedia	= ( eConsole + 1 ) ,
161 	eCommunications	= ( eMultimedia + 1 ) ,
162 	ERole_enum_count	= ( eCommunications + 1 )
163     } 	ERole;
164 
165 typedef /* [public] */
166 enum __MIDL___MIDL_itf_mmdeviceapi_0000_0000_0003
167     {	RemoteNetworkDevice	= 0,
168 	Speakers	= ( RemoteNetworkDevice + 1 ) ,
169 	LineLevel	= ( Speakers + 1 ) ,
170 	Headphones	= ( LineLevel + 1 ) ,
171 	Microphone	= ( Headphones + 1 ) ,
172 	Headset	= ( Microphone + 1 ) ,
173 	Handset	= ( Headset + 1 ) ,
174 	UnknownDigitalPassthrough	= ( Handset + 1 ) ,
175 	SPDIF	= ( UnknownDigitalPassthrough + 1 ) ,
176 	HDMI	= ( SPDIF + 1 ) ,
177 	UnknownFormFactor	= ( HDMI + 1 )
178     } 	EndpointFormFactor;
179 
180 
181 
182 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_c_ifspec;
183 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0000_v0_0_s_ifspec;
184 
185 #ifndef __IMMNotificationClient_INTERFACE_DEFINED__
186 #define __IMMNotificationClient_INTERFACE_DEFINED__
187 
188 /* interface IMMNotificationClient */
189 /* [unique][helpstring][nonextensible][uuid][local][object] */
190 
191 
192 EXTERN_C const IID IID_IMMNotificationClient;
193 
194 #if defined(__cplusplus) && !defined(CINTERFACE)
195 
196     MIDL_INTERFACE("7991EEC9-7E89-4D85-8390-6C703CEC60C0")
197     IMMNotificationClient : public IUnknown
198     {
199     public:
200         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(
201             /* [in] */
202             __in  LPCWSTR pwstrDeviceId,
203             /* [in] */
204             __in  DWORD dwNewState) = 0;
205 
206         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceAdded(
207             /* [in] */
208             __in  LPCWSTR pwstrDeviceId) = 0;
209 
210         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDeviceRemoved(
211             /* [in] */
212             __in  LPCWSTR pwstrDeviceId) = 0;
213 
214         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(
215             /* [in] */
216             __in  EDataFlow flow,
217             /* [in] */
218             __in  ERole role,
219             /* [in] */
220             __in  LPCWSTR pwstrDefaultDeviceId) = 0;
221 
222         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(
223             /* [in] */
224             __in  LPCWSTR pwstrDeviceId,
225             /* [in] */
226             __in  const PROPERTYKEY key) = 0;
227 
228     };
229 
230 #else 	/* C style interface */
231 
232     typedef struct IMMNotificationClientVtbl
233     {
234         BEGIN_INTERFACE
235 
236         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
237             IMMNotificationClient * This,
238             /* [in] */ REFIID riid,
239             /* [iid_is][out] */
240             __RPC__deref_out  void **ppvObject);
241 
242         ULONG ( STDMETHODCALLTYPE *AddRef )(
243             IMMNotificationClient * This);
244 
245         ULONG ( STDMETHODCALLTYPE *Release )(
246             IMMNotificationClient * This);
247 
248         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceStateChanged )(
249             IMMNotificationClient * This,
250             /* [in] */
251             __in  LPCWSTR pwstrDeviceId,
252             /* [in] */
253             __in  DWORD dwNewState);
254 
255         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceAdded )(
256             IMMNotificationClient * This,
257             /* [in] */
258             __in  LPCWSTR pwstrDeviceId);
259 
260         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDeviceRemoved )(
261             IMMNotificationClient * This,
262             /* [in] */
263             __in  LPCWSTR pwstrDeviceId);
264 
265         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnDefaultDeviceChanged )(
266             IMMNotificationClient * This,
267             /* [in] */
268             __in  EDataFlow flow,
269             /* [in] */
270             __in  ERole role,
271             /* [in] */
272             __in  LPCWSTR pwstrDefaultDeviceId);
273 
274         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OnPropertyValueChanged )(
275             IMMNotificationClient * This,
276             /* [in] */
277             __in  LPCWSTR pwstrDeviceId,
278             /* [in] */
279             __in  const PROPERTYKEY key);
280 
281         END_INTERFACE
282     } IMMNotificationClientVtbl;
283 
284     interface IMMNotificationClient
285     {
286         CONST_VTBL struct IMMNotificationClientVtbl *lpVtbl;
287     };
288 
289 
290 
291 #ifdef COBJMACROS
292 
293 
294 #define IMMNotificationClient_QueryInterface(This,riid,ppvObject)	\
295     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
296 
297 #define IMMNotificationClient_AddRef(This)	\
298     ( (This)->lpVtbl -> AddRef(This) )
299 
300 #define IMMNotificationClient_Release(This)	\
301     ( (This)->lpVtbl -> Release(This) )
302 
303 
304 #define IMMNotificationClient_OnDeviceStateChanged(This,pwstrDeviceId,dwNewState)	\
305     ( (This)->lpVtbl -> OnDeviceStateChanged(This,pwstrDeviceId,dwNewState) )
306 
307 #define IMMNotificationClient_OnDeviceAdded(This,pwstrDeviceId)	\
308     ( (This)->lpVtbl -> OnDeviceAdded(This,pwstrDeviceId) )
309 
310 #define IMMNotificationClient_OnDeviceRemoved(This,pwstrDeviceId)	\
311     ( (This)->lpVtbl -> OnDeviceRemoved(This,pwstrDeviceId) )
312 
313 #define IMMNotificationClient_OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId)	\
314     ( (This)->lpVtbl -> OnDefaultDeviceChanged(This,flow,role,pwstrDefaultDeviceId) )
315 
316 #define IMMNotificationClient_OnPropertyValueChanged(This,pwstrDeviceId,key)	\
317     ( (This)->lpVtbl -> OnPropertyValueChanged(This,pwstrDeviceId,key) )
318 
319 #endif /* COBJMACROS */
320 
321 
322 #endif 	/* C style interface */
323 
324 
325 
326 
327 #endif 	/* __IMMNotificationClient_INTERFACE_DEFINED__ */
328 
329 
330 #ifndef __IMMDevice_INTERFACE_DEFINED__
331 #define __IMMDevice_INTERFACE_DEFINED__
332 
333 /* interface IMMDevice */
334 /* [unique][helpstring][nonextensible][uuid][local][object] */
335 
336 
337 EXTERN_C const IID IID_IMMDevice;
338 
339 #if defined(__cplusplus) && !defined(CINTERFACE)
340 
341     MIDL_INTERFACE("D666063F-1587-4E43-81F1-B948E807363F")
342     IMMDevice : public IUnknown
343     {
344     public:
345         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate(
346             /* [in] */
347             __in  REFIID iid,
348             /* [in] */
349             __in  DWORD dwClsCtx,
350             /* [unique][in] */
351             __in_opt  PROPVARIANT *pActivationParams,
352             /* [iid_is][out] */
353             __out  void **ppInterface) = 0;
354 
355         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OpenPropertyStore(
356             /* [in] */
357             __in  DWORD stgmAccess,
358             /* [out] */
359             __out  IPropertyStore **ppProperties) = 0;
360 
361         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetId(
362             /* [out] */
363             __deref_out  LPWSTR *ppstrId) = 0;
364 
365         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetState(
366             /* [out] */
367             __out  DWORD *pdwState) = 0;
368 
369     };
370 
371 #else 	/* C style interface */
372 
373     typedef struct IMMDeviceVtbl
374     {
375         BEGIN_INTERFACE
376 
377         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
378             IMMDevice * This,
379             /* [in] */ REFIID riid,
380             /* [iid_is][out] */
381             __RPC__deref_out  void **ppvObject);
382 
383         ULONG ( STDMETHODCALLTYPE *AddRef )(
384             IMMDevice * This);
385 
386         ULONG ( STDMETHODCALLTYPE *Release )(
387             IMMDevice * This);
388 
389         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )(
390             IMMDevice * This,
391             /* [in] */
392             __in  REFIID iid,
393             /* [in] */
394             __in  DWORD dwClsCtx,
395             /* [unique][in] */
396             __in_opt  PROPVARIANT *pActivationParams,
397             /* [iid_is][out] */
398             __out  void **ppInterface);
399 
400         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *OpenPropertyStore )(
401             IMMDevice * This,
402             /* [in] */
403             __in  DWORD stgmAccess,
404             /* [out] */
405             __out  IPropertyStore **ppProperties);
406 
407         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetId )(
408             IMMDevice * This,
409             /* [out] */
410             __deref_out  LPWSTR *ppstrId);
411 
412         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetState )(
413             IMMDevice * This,
414             /* [out] */
415             __out  DWORD *pdwState);
416 
417         END_INTERFACE
418     } IMMDeviceVtbl;
419 
420     interface IMMDevice
421     {
422         CONST_VTBL struct IMMDeviceVtbl *lpVtbl;
423     };
424 
425 
426 
427 #ifdef COBJMACROS
428 
429 
430 #define IMMDevice_QueryInterface(This,riid,ppvObject)	\
431     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
432 
433 #define IMMDevice_AddRef(This)	\
434     ( (This)->lpVtbl -> AddRef(This) )
435 
436 #define IMMDevice_Release(This)	\
437     ( (This)->lpVtbl -> Release(This) )
438 
439 
440 #define IMMDevice_Activate(This,iid,dwClsCtx,pActivationParams,ppInterface)	\
441     ( (This)->lpVtbl -> Activate(This,iid,dwClsCtx,pActivationParams,ppInterface) )
442 
443 #define IMMDevice_OpenPropertyStore(This,stgmAccess,ppProperties)	\
444     ( (This)->lpVtbl -> OpenPropertyStore(This,stgmAccess,ppProperties) )
445 
446 #define IMMDevice_GetId(This,ppstrId)	\
447     ( (This)->lpVtbl -> GetId(This,ppstrId) )
448 
449 #define IMMDevice_GetState(This,pdwState)	\
450     ( (This)->lpVtbl -> GetState(This,pdwState) )
451 
452 #endif /* COBJMACROS */
453 
454 
455 #endif 	/* C style interface */
456 
457 
458 
459 
460 #endif 	/* __IMMDevice_INTERFACE_DEFINED__ */
461 
462 
463 #ifndef __IMMDeviceCollection_INTERFACE_DEFINED__
464 #define __IMMDeviceCollection_INTERFACE_DEFINED__
465 
466 /* interface IMMDeviceCollection */
467 /* [unique][helpstring][nonextensible][uuid][local][object] */
468 
469 
470 EXTERN_C const IID IID_IMMDeviceCollection;
471 
472 #if defined(__cplusplus) && !defined(CINTERFACE)
473 
474     MIDL_INTERFACE("0BD7A1BE-7A1A-44DB-8397-CC5392387B5E")
475     IMMDeviceCollection : public IUnknown
476     {
477     public:
478         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetCount(
479             /* [out] */
480             __out  UINT *pcDevices) = 0;
481 
482         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Item(
483             /* [in] */
484             __in  UINT nDevice,
485             /* [out] */
486             __out  IMMDevice **ppDevice) = 0;
487 
488     };
489 
490 #else 	/* C style interface */
491 
492     typedef struct IMMDeviceCollectionVtbl
493     {
494         BEGIN_INTERFACE
495 
496         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
497             IMMDeviceCollection * This,
498             /* [in] */ REFIID riid,
499             /* [iid_is][out] */
500             __RPC__deref_out  void **ppvObject);
501 
502         ULONG ( STDMETHODCALLTYPE *AddRef )(
503             IMMDeviceCollection * This);
504 
505         ULONG ( STDMETHODCALLTYPE *Release )(
506             IMMDeviceCollection * This);
507 
508         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetCount )(
509             IMMDeviceCollection * This,
510             /* [out] */
511             __out  UINT *pcDevices);
512 
513         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Item )(
514             IMMDeviceCollection * This,
515             /* [in] */
516             __in  UINT nDevice,
517             /* [out] */
518             __out  IMMDevice **ppDevice);
519 
520         END_INTERFACE
521     } IMMDeviceCollectionVtbl;
522 
523     interface IMMDeviceCollection
524     {
525         CONST_VTBL struct IMMDeviceCollectionVtbl *lpVtbl;
526     };
527 
528 
529 
530 #ifdef COBJMACROS
531 
532 
533 #define IMMDeviceCollection_QueryInterface(This,riid,ppvObject)	\
534     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
535 
536 #define IMMDeviceCollection_AddRef(This)	\
537     ( (This)->lpVtbl -> AddRef(This) )
538 
539 #define IMMDeviceCollection_Release(This)	\
540     ( (This)->lpVtbl -> Release(This) )
541 
542 
543 #define IMMDeviceCollection_GetCount(This,pcDevices)	\
544     ( (This)->lpVtbl -> GetCount(This,pcDevices) )
545 
546 #define IMMDeviceCollection_Item(This,nDevice,ppDevice)	\
547     ( (This)->lpVtbl -> Item(This,nDevice,ppDevice) )
548 
549 #endif /* COBJMACROS */
550 
551 
552 #endif 	/* C style interface */
553 
554 
555 
556 
557 #endif 	/* __IMMDeviceCollection_INTERFACE_DEFINED__ */
558 
559 
560 #ifndef __IMMEndpoint_INTERFACE_DEFINED__
561 #define __IMMEndpoint_INTERFACE_DEFINED__
562 
563 /* interface IMMEndpoint */
564 /* [unique][helpstring][nonextensible][uuid][local][object] */
565 
566 
567 EXTERN_C const IID IID_IMMEndpoint;
568 
569 #if defined(__cplusplus) && !defined(CINTERFACE)
570 
571     MIDL_INTERFACE("1BE09788-6894-4089-8586-9A2A6C265AC5")
572     IMMEndpoint : public IUnknown
573     {
574     public:
575         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDataFlow(
576             /* [out] */
577             __out  EDataFlow *pDataFlow) = 0;
578 
579     };
580 
581 #else 	/* C style interface */
582 
583     typedef struct IMMEndpointVtbl
584     {
585         BEGIN_INTERFACE
586 
587         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
588             IMMEndpoint * This,
589             /* [in] */ REFIID riid,
590             /* [iid_is][out] */
591             __RPC__deref_out  void **ppvObject);
592 
593         ULONG ( STDMETHODCALLTYPE *AddRef )(
594             IMMEndpoint * This);
595 
596         ULONG ( STDMETHODCALLTYPE *Release )(
597             IMMEndpoint * This);
598 
599         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDataFlow )(
600             IMMEndpoint * This,
601             /* [out] */
602             __out  EDataFlow *pDataFlow);
603 
604         END_INTERFACE
605     } IMMEndpointVtbl;
606 
607     interface IMMEndpoint
608     {
609         CONST_VTBL struct IMMEndpointVtbl *lpVtbl;
610     };
611 
612 
613 
614 #ifdef COBJMACROS
615 
616 
617 #define IMMEndpoint_QueryInterface(This,riid,ppvObject)	\
618     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
619 
620 #define IMMEndpoint_AddRef(This)	\
621     ( (This)->lpVtbl -> AddRef(This) )
622 
623 #define IMMEndpoint_Release(This)	\
624     ( (This)->lpVtbl -> Release(This) )
625 
626 
627 #define IMMEndpoint_GetDataFlow(This,pDataFlow)	\
628     ( (This)->lpVtbl -> GetDataFlow(This,pDataFlow) )
629 
630 #endif /* COBJMACROS */
631 
632 
633 #endif 	/* C style interface */
634 
635 
636 
637 
638 #endif 	/* __IMMEndpoint_INTERFACE_DEFINED__ */
639 
640 
641 #ifndef __IMMDeviceEnumerator_INTERFACE_DEFINED__
642 #define __IMMDeviceEnumerator_INTERFACE_DEFINED__
643 
644 /* interface IMMDeviceEnumerator */
645 /* [unique][helpstring][nonextensible][uuid][local][object] */
646 
647 
648 EXTERN_C const IID IID_IMMDeviceEnumerator;
649 
650 #if defined(__cplusplus) && !defined(CINTERFACE)
651 
652     MIDL_INTERFACE("A95664D2-9614-4F35-A746-DE8DB63617E6")
653     IMMDeviceEnumerator : public IUnknown
654     {
655     public:
656         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE EnumAudioEndpoints(
657             /* [in] */
658             __in  EDataFlow dataFlow,
659             /* [in] */
660             __in  DWORD dwStateMask,
661             /* [out] */
662             __out  IMMDeviceCollection **ppDevices) = 0;
663 
664         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDefaultAudioEndpoint(
665             /* [in] */
666             __in  EDataFlow dataFlow,
667             /* [in] */
668             __in  ERole role,
669             /* [out] */
670             __out  IMMDevice **ppEndpoint) = 0;
671 
672         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE GetDevice(
673             /*  */
674             __in  LPCWSTR pwstrId,
675             /* [out] */
676             __out  IMMDevice **ppDevice) = 0;
677 
678         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE RegisterEndpointNotificationCallback(
679             /* [in] */
680             __in  IMMNotificationClient *pClient) = 0;
681 
682         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE UnregisterEndpointNotificationCallback(
683             /* [in] */
684             __in  IMMNotificationClient *pClient) = 0;
685 
686     };
687 
688 #else 	/* C style interface */
689 
690     typedef struct IMMDeviceEnumeratorVtbl
691     {
692         BEGIN_INTERFACE
693 
694         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
695             IMMDeviceEnumerator * This,
696             /* [in] */ REFIID riid,
697             /* [iid_is][out] */
698             __RPC__deref_out  void **ppvObject);
699 
700         ULONG ( STDMETHODCALLTYPE *AddRef )(
701             IMMDeviceEnumerator * This);
702 
703         ULONG ( STDMETHODCALLTYPE *Release )(
704             IMMDeviceEnumerator * This);
705 
706         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *EnumAudioEndpoints )(
707             IMMDeviceEnumerator * This,
708             /* [in] */
709             __in  EDataFlow dataFlow,
710             /* [in] */
711             __in  DWORD dwStateMask,
712             /* [out] */
713             __out  IMMDeviceCollection **ppDevices);
714 
715         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDefaultAudioEndpoint )(
716             IMMDeviceEnumerator * This,
717             /* [in] */
718             __in  EDataFlow dataFlow,
719             /* [in] */
720             __in  ERole role,
721             /* [out] */
722             __out  IMMDevice **ppEndpoint);
723 
724         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *GetDevice )(
725             IMMDeviceEnumerator * This,
726             /*  */
727             __in  LPCWSTR pwstrId,
728             /* [out] */
729             __out  IMMDevice **ppDevice);
730 
731         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *RegisterEndpointNotificationCallback )(
732             IMMDeviceEnumerator * This,
733             /* [in] */
734             __in  IMMNotificationClient *pClient);
735 
736         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *UnregisterEndpointNotificationCallback )(
737             IMMDeviceEnumerator * This,
738             /* [in] */
739             __in  IMMNotificationClient *pClient);
740 
741         END_INTERFACE
742     } IMMDeviceEnumeratorVtbl;
743 
744     interface IMMDeviceEnumerator
745     {
746         CONST_VTBL struct IMMDeviceEnumeratorVtbl *lpVtbl;
747     };
748 
749 
750 
751 #ifdef COBJMACROS
752 
753 
754 #define IMMDeviceEnumerator_QueryInterface(This,riid,ppvObject)	\
755     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
756 
757 #define IMMDeviceEnumerator_AddRef(This)	\
758     ( (This)->lpVtbl -> AddRef(This) )
759 
760 #define IMMDeviceEnumerator_Release(This)	\
761     ( (This)->lpVtbl -> Release(This) )
762 
763 
764 #define IMMDeviceEnumerator_EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices)	\
765     ( (This)->lpVtbl -> EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) )
766 
767 #define IMMDeviceEnumerator_GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint)	\
768     ( (This)->lpVtbl -> GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) )
769 
770 #define IMMDeviceEnumerator_GetDevice(This,pwstrId,ppDevice)	\
771     ( (This)->lpVtbl -> GetDevice(This,pwstrId,ppDevice) )
772 
773 #define IMMDeviceEnumerator_RegisterEndpointNotificationCallback(This,pClient)	\
774     ( (This)->lpVtbl -> RegisterEndpointNotificationCallback(This,pClient) )
775 
776 #define IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(This,pClient)	\
777     ( (This)->lpVtbl -> UnregisterEndpointNotificationCallback(This,pClient) )
778 
779 #endif /* COBJMACROS */
780 
781 
782 #endif 	/* C style interface */
783 
784 
785 
786 
787 #endif 	/* __IMMDeviceEnumerator_INTERFACE_DEFINED__ */
788 
789 
790 #ifndef __IMMDeviceActivator_INTERFACE_DEFINED__
791 #define __IMMDeviceActivator_INTERFACE_DEFINED__
792 
793 /* interface IMMDeviceActivator */
794 /* [unique][helpstring][nonextensible][uuid][local][object] */
795 
796 
797 EXTERN_C const IID IID_IMMDeviceActivator;
798 
799 #if defined(__cplusplus) && !defined(CINTERFACE)
800 
801     MIDL_INTERFACE("3B0D0EA4-D0A9-4B0E-935B-09516746FAC0")
802     IMMDeviceActivator : public IUnknown
803     {
804     public:
805         virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE Activate(
806             /* [in] */
807             __in  REFIID iid,
808             /* [in] */
809             __in  IMMDevice *pDevice,
810             /* [in] */
811             __in_opt  PROPVARIANT *pActivationParams,
812             /* [iid_is][out] */
813             __out  void **ppInterface) = 0;
814 
815     };
816 
817 #else 	/* C style interface */
818 
819     typedef struct IMMDeviceActivatorVtbl
820     {
821         BEGIN_INTERFACE
822 
823         HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
824             IMMDeviceActivator * This,
825             /* [in] */ REFIID riid,
826             /* [iid_is][out] */
827             __RPC__deref_out  void **ppvObject);
828 
829         ULONG ( STDMETHODCALLTYPE *AddRef )(
830             IMMDeviceActivator * This);
831 
832         ULONG ( STDMETHODCALLTYPE *Release )(
833             IMMDeviceActivator * This);
834 
835         /* [helpstring][id] */ HRESULT ( STDMETHODCALLTYPE *Activate )(
836             IMMDeviceActivator * This,
837             /* [in] */
838             __in  REFIID iid,
839             /* [in] */
840             __in  IMMDevice *pDevice,
841             /* [in] */
842             __in_opt  PROPVARIANT *pActivationParams,
843             /* [iid_is][out] */
844             __out  void **ppInterface);
845 
846         END_INTERFACE
847     } IMMDeviceActivatorVtbl;
848 
849     interface IMMDeviceActivator
850     {
851         CONST_VTBL struct IMMDeviceActivatorVtbl *lpVtbl;
852     };
853 
854 
855 
856 #ifdef COBJMACROS
857 
858 
859 #define IMMDeviceActivator_QueryInterface(This,riid,ppvObject)	\
860     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
861 
862 #define IMMDeviceActivator_AddRef(This)	\
863     ( (This)->lpVtbl -> AddRef(This) )
864 
865 #define IMMDeviceActivator_Release(This)	\
866     ( (This)->lpVtbl -> Release(This) )
867 
868 
869 #define IMMDeviceActivator_Activate(This,iid,pDevice,pActivationParams,ppInterface)	\
870     ( (This)->lpVtbl -> Activate(This,iid,pDevice,pActivationParams,ppInterface) )
871 
872 #endif /* COBJMACROS */
873 
874 
875 #endif 	/* C style interface */
876 
877 
878 
879 
880 #endif 	/* __IMMDeviceActivator_INTERFACE_DEFINED__ */
881 
882 
883 /* interface __MIDL_itf_mmdeviceapi_0000_0006 */
884 /* [local] */
885 
886 typedef /* [public] */ struct __MIDL___MIDL_itf_mmdeviceapi_0000_0006_0001
887     {
888     LPARAM AddPageParam;
889     IMMDevice *pEndpoint;
890     IMMDevice *pPnpInterface;
891     IMMDevice *pPnpDevnode;
892     } 	AudioExtensionParams;
893 
894 
895 
896 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_c_ifspec;
897 extern RPC_IF_HANDLE __MIDL_itf_mmdeviceapi_0000_0006_v0_0_s_ifspec;
898 
899 
900 #ifndef __MMDeviceAPILib_LIBRARY_DEFINED__
901 #define __MMDeviceAPILib_LIBRARY_DEFINED__
902 
903 /* library MMDeviceAPILib */
904 /* [helpstring][version][uuid] */
905 
906 
907 EXTERN_C const IID LIBID_MMDeviceAPILib;
908 
909 EXTERN_C const CLSID CLSID_MMDeviceEnumerator;
910 
911 #ifdef __cplusplus
912 
913 class DECLSPEC_UUID("BCDE0395-E52F-467C-8E3D-C4579291692E")
914 MMDeviceEnumerator;
915 #endif
916 #endif /* __MMDeviceAPILib_LIBRARY_DEFINED__ */
917 
918 /* Additional Prototypes for ALL interfaces */
919 
920 /* end of Additional Prototypes */
921 
922 #ifdef __cplusplus
923 }
924 #endif
925 
926 #endif
927 
928 
929 
930