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