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