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