To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / portaudio_20161030_catalina_patch / src / hostapi / wasapi / mingw-include / mmdeviceapi.h @ 162:d43aab368df9

History | View | Annotate | Download (26.9 KB)

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