mmdeviceapi.h 35 KB

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