gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

mmdeviceapi.h (27566B)


      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