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