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