The ActivateAudioInterfaceAsync function is added to mmdeviceapi.dll for all platforms.
See https://docs.microsoft.com/en-us/windows/win32/api/mmdeviceapi/nf-mmdeviceapi-activateaudiointerfaceasync and https://docs.microsoft.com/en-us/windows/desktop/api/mmdeviceapi/nn-mmdeviceapi-iactivateaudiointerfaceasyncoperation --- mingw-w64-crt/lib-common/mmdevapi.def | 42 ++++++ mingw-w64-crt/lib32/Makefile.am | 1 + mingw-w64-crt/lib32/mmdevapi.def | 42 ++++++ mingw-w64-crt/lib64/Makefile.am | 1 + mingw-w64-crt/libarm64/Makefile.am | 1 + mingw-w64-headers/include/mmdeviceapi.h | 176 ++++++++++++++++++++++ mingw-w64-headers/include/mmdeviceapi.idl | 34 +++++ 7 files changed, 297 insertions(+) create mode 100644 mingw-w64-crt/lib-common/mmdevapi.def create mode 100644 mingw-w64-crt/lib32/mmdevapi.def diff --git a/mingw-w64-crt/lib-common/mmdevapi.def b/mingw-w64-crt/lib-common/mmdevapi.def new file mode 100644 index 00000000..ac55760c --- /dev/null +++ b/mingw-w64-crt/lib-common/mmdevapi.def @@ -0,0 +1,42 @@ +; +; Definition file of mmdevapi.DLL +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "mmdevapi.DLL" +EXPORTS +ord_2 @2 +ord_3 @3 +ord_4 @4 +ord_5 @5 +ord_6 @6 +ord_7 @7 +ord_8 @8 +ord_9 @9 +ord_10 @10 +ord_11 @11 +ord_12 @12 +ord_13 @13 +ord_14 @14 +ord_15 @15 +ord_16 @16 +ActivateAudioInterfaceAsync +ord_18 @18 +ord_19 @19 +ord_20 @20 +ord_21 @21 +ord_22 @22 +ord_23 @23 +ord_24 @24 +ord_25 @25 +ord_26 @26 +ord_27 @27 +ord_28 @28 +ord_29 @29 +ord_30 @30 +ord_31 @31 +ord_32 @32 +DllCanUnloadNow +DllGetClassObject +DllRegisterServer +DllUnregisterServer diff --git a/mingw-w64-crt/lib32/Makefile.am b/mingw-w64-crt/lib32/Makefile.am index 3bd44d8d..82400f1e 100644 --- a/mingw-w64-crt/lib32/Makefile.am +++ b/mingw-w64-crt/lib32/Makefile.am @@ -169,6 +169,7 @@ lib32_DATA += %reldir%/libmfplat.a lib32_DATA += %reldir%/libmfreadwrite.a lib32_DATA += %reldir%/libmgmtapi.a lib32_DATA += %reldir%/libmincore.a +lib32_DATA += %reldir%/libmmdevapi.a lib32_DATA += %reldir%/libmpr.a lib32_DATA += %reldir%/libmprapi.a lib32_DATA += %reldir%/libmqrt.a diff --git a/mingw-w64-crt/lib32/mmdevapi.def b/mingw-w64-crt/lib32/mmdevapi.def new file mode 100644 index 00000000..86915260 --- /dev/null +++ b/mingw-w64-crt/lib32/mmdevapi.def @@ -0,0 +1,42 @@ +; +; Definition file of mmdevapi.DLL +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "mmdevapi.DLL" +EXPORTS +ord_2 @2 +ord_3 @3 +ord_4 @4 +ord_5 @5 +ord_6 @6 +ord_7 @7 +ord_8 @8 +ord_9 @9 +ord_10 @10 +ord_11 @11 +ord_12 @12 +ord_13 @13 +ord_14 @14 +ord_15 @15 +ord_16 @16 +ActivateAudioInterfaceAsync@20 +ord_18 @18 +ord_19 @19 +ord_20 @20 +ord_21 @21 +ord_22 @22 +ord_23 @23 +ord_24 @24 +ord_25 @25 +ord_26 @26 +ord_27 @27 +ord_28 @28 +ord_29 @29 +ord_30 @30 +ord_31 @31 +ord_32 @32 +DllCanUnloadNow@0 +DllGetClassObject@12 +DllRegisterServer@0 +DllUnregisterServer@0 diff --git a/mingw-w64-crt/lib64/Makefile.am b/mingw-w64-crt/lib64/Makefile.am index 816a2aa4..83583340 100644 --- a/mingw-w64-crt/lib64/Makefile.am +++ b/mingw-w64-crt/lib64/Makefile.am @@ -305,6 +305,7 @@ lib64_DATA += %reldir%/libmlang.a lib64_DATA += %reldir%/libmll_hp.a lib64_DATA += %reldir%/libmll_mtf.a lib64_DATA += %reldir%/libmll_qic.a +lib64_DATA += %reldir%/libmmdevapi.a lib64_DATA += %reldir%/libmmfutil.a lib64_DATA += %reldir%/libmmutilse.a lib64_DATA += %reldir%/libmobsync.a diff --git a/mingw-w64-crt/libarm64/Makefile.am b/mingw-w64-crt/libarm64/Makefile.am index 69603f47..adfaaa61 100644 --- a/mingw-w64-crt/libarm64/Makefile.am +++ b/mingw-w64-crt/libarm64/Makefile.am @@ -152,6 +152,7 @@ libarm64_DATA += %reldir%/libmgmtapi.a libarm64_DATA += %reldir%/libmidimap.a libarm64_DATA += %reldir%/libmincore.a libarm64_DATA += %reldir%/libmlang.a +libarm64_DATA += %reldir%/libmmdevapi.a libarm64_DATA += %reldir%/libmodemui.a libarm64_DATA += %reldir%/libmpr.a libarm64_DATA += %reldir%/libmsacm32.a diff --git a/mingw-w64-headers/include/mmdeviceapi.h b/mingw-w64-headers/include/mmdeviceapi.h index 7c9f8801..716fa184 100644 --- a/mingw-w64-headers/include/mmdeviceapi.h +++ b/mingw-w64-headers/include/mmdeviceapi.h @@ -66,6 +66,22 @@ interface IMMDeviceActivator; #endif /* __cplusplus */ #endif +#ifndef __IActivateAudioInterfaceAsyncOperation_FWD_DEFINED__ +#define __IActivateAudioInterfaceAsyncOperation_FWD_DEFINED__ +typedef interface IActivateAudioInterfaceAsyncOperation IActivateAudioInterfaceAsyncOperation; +#ifdef __cplusplus +interface IActivateAudioInterfaceAsyncOperation; +#endif /* __cplusplus */ +#endif + +#ifndef __IActivateAudioInterfaceCompletionHandler_FWD_DEFINED__ +#define __IActivateAudioInterfaceCompletionHandler_FWD_DEFINED__ +typedef interface IActivateAudioInterfaceCompletionHandler IActivateAudioInterfaceCompletionHandler; +#ifdef __cplusplus +interface IActivateAudioInterfaceCompletionHandler; +#endif /* __cplusplus */ +#endif + #ifndef __MMDeviceEnumerator_FWD_DEFINED__ #define __MMDeviceEnumerator_FWD_DEFINED__ #ifdef __cplusplus @@ -769,6 +785,166 @@ static FORCEINLINE HRESULT IMMDeviceActivator_Activate(IMMDeviceActivator* This, #endif /* __IMMDeviceActivator_INTERFACE_DEFINED__ */ +/***************************************************************************** + * IActivateAudioInterfaceAsyncOperation interface + */ +#ifndef __IActivateAudioInterfaceAsyncOperation_INTERFACE_DEFINED__ +#define __IActivateAudioInterfaceAsyncOperation_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActivateAudioInterfaceAsyncOperation, 0x72a22d78, 0xcde4, 0x431d, 0xb8,0xcc, 0x84,0x3a,0x71,0x19,0x9b,0x6d); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("72a22d78-cde4-431d-b8cc-843a71199b6d") +IActivateAudioInterfaceAsyncOperation : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE GetActivateResult( + HRESULT *activateResult, + IUnknown **activatedInterface) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IActivateAudioInterfaceAsyncOperation, 0x72a22d78, 0xcde4, 0x431d, 0xb8,0xcc, 0x84,0x3a,0x71,0x19,0x9b,0x6d) +#endif +#else +typedef struct IActivateAudioInterfaceAsyncOperationVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActivateAudioInterfaceAsyncOperation *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActivateAudioInterfaceAsyncOperation *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActivateAudioInterfaceAsyncOperation *This); + + /*** IActivateAudioInterfaceAsyncOperation methods ***/ + HRESULT (STDMETHODCALLTYPE *GetActivateResult)( + IActivateAudioInterfaceAsyncOperation *This, + HRESULT *activateResult, + IUnknown **activatedInterface); + + END_INTERFACE +} IActivateAudioInterfaceAsyncOperationVtbl; + +interface IActivateAudioInterfaceAsyncOperation { + CONST_VTBL IActivateAudioInterfaceAsyncOperationVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IActivateAudioInterfaceAsyncOperation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IActivateAudioInterfaceAsyncOperation_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IActivateAudioInterfaceAsyncOperation_Release(This) (This)->lpVtbl->Release(This) +/*** IActivateAudioInterfaceAsyncOperation methods ***/ +#define IActivateAudioInterfaceAsyncOperation_GetActivateResult(This,activateResult,activatedInterface) (This)->lpVtbl->GetActivateResult(This,activateResult,activatedInterface) +#else +/*** IUnknown methods ***/ +static FORCEINLINE HRESULT IActivateAudioInterfaceAsyncOperation_QueryInterface(IActivateAudioInterfaceAsyncOperation* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static FORCEINLINE ULONG IActivateAudioInterfaceAsyncOperation_AddRef(IActivateAudioInterfaceAsyncOperation* This) { + return This->lpVtbl->AddRef(This); +} +static FORCEINLINE ULONG IActivateAudioInterfaceAsyncOperation_Release(IActivateAudioInterfaceAsyncOperation* This) { + return This->lpVtbl->Release(This); +} +/*** IActivateAudioInterfaceAsyncOperation methods ***/ +static FORCEINLINE HRESULT IActivateAudioInterfaceAsyncOperation_GetActivateResult(IActivateAudioInterfaceAsyncOperation* This,HRESULT *activateResult,IUnknown **activatedInterface) { + return This->lpVtbl->GetActivateResult(This,activateResult,activatedInterface); +} +#endif +#endif + +#endif + + +#endif /* __IActivateAudioInterfaceAsyncOperation_INTERFACE_DEFINED__ */ + +/***************************************************************************** + * IActivateAudioInterfaceCompletionHandler interface + */ +#ifndef __IActivateAudioInterfaceCompletionHandler_INTERFACE_DEFINED__ +#define __IActivateAudioInterfaceCompletionHandler_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IActivateAudioInterfaceCompletionHandler, 0x41d949ab, 0x9862, 0x444a, 0x80,0xf6, 0xc2,0x61,0x33,0x4d,0xa5,0xeb); +#if defined(__cplusplus) && !defined(CINTERFACE) +MIDL_INTERFACE("41d949ab-9862-444a-80f6-c261334da5eb") +IActivateAudioInterfaceCompletionHandler : public IUnknown +{ + virtual HRESULT STDMETHODCALLTYPE ActivateCompleted( + IActivateAudioInterfaceAsyncOperation *activateOperation) = 0; + +}; +#ifdef __CRT_UUID_DECL +__CRT_UUID_DECL(IActivateAudioInterfaceCompletionHandler, 0x41d949ab, 0x9862, 0x444a, 0x80,0xf6, 0xc2,0x61,0x33,0x4d,0xa5,0xeb) +#endif +#else +typedef struct IActivateAudioInterfaceCompletionHandlerVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IActivateAudioInterfaceCompletionHandler *This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IActivateAudioInterfaceCompletionHandler *This); + + ULONG (STDMETHODCALLTYPE *Release)( + IActivateAudioInterfaceCompletionHandler *This); + + /*** IActivateAudioInterfaceCompletionHandler methods ***/ + HRESULT (STDMETHODCALLTYPE *ActivateCompleted)( + IActivateAudioInterfaceCompletionHandler *This, + IActivateAudioInterfaceAsyncOperation *activateOperation); + + END_INTERFACE +} IActivateAudioInterfaceCompletionHandlerVtbl; + +interface IActivateAudioInterfaceCompletionHandler { + CONST_VTBL IActivateAudioInterfaceCompletionHandlerVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +#ifndef WIDL_C_INLINE_WRAPPERS +/*** IUnknown methods ***/ +#define IActivateAudioInterfaceCompletionHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IActivateAudioInterfaceCompletionHandler_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IActivateAudioInterfaceCompletionHandler_Release(This) (This)->lpVtbl->Release(This) +/*** IActivateAudioInterfaceCompletionHandler methods ***/ +#define IActivateAudioInterfaceCompletionHandler_ActivateCompleted(This,activateOperation) (This)->lpVtbl->ActivateCompleted(This,activateOperation) +#else +/*** IUnknown methods ***/ +static FORCEINLINE HRESULT IActivateAudioInterfaceCompletionHandler_QueryInterface(IActivateAudioInterfaceCompletionHandler* This,REFIID riid,void **ppvObject) { + return This->lpVtbl->QueryInterface(This,riid,ppvObject); +} +static FORCEINLINE ULONG IActivateAudioInterfaceCompletionHandler_AddRef(IActivateAudioInterfaceCompletionHandler* This) { + return This->lpVtbl->AddRef(This); +} +static FORCEINLINE ULONG IActivateAudioInterfaceCompletionHandler_Release(IActivateAudioInterfaceCompletionHandler* This) { + return This->lpVtbl->Release(This); +} +/*** IActivateAudioInterfaceCompletionHandler methods ***/ +static FORCEINLINE HRESULT IActivateAudioInterfaceCompletionHandler_ActivateCompleted(IActivateAudioInterfaceCompletionHandler* This,IActivateAudioInterfaceAsyncOperation *activateOperation) { + return This->lpVtbl->ActivateCompleted(This,activateOperation); +} +#endif +#endif + +#endif + + +#endif /* __IActivateAudioInterfaceCompletionHandler_INTERFACE_DEFINED__ */ + +HRESULT WINAPI ActivateAudioInterfaceAsync(LPCWSTR deviceInterfacePath, REFIID riid, PROPVARIANT *activationParams, + IActivateAudioInterfaceCompletionHandler *completionHandler, + IActivateAudioInterfaceAsyncOperation **activationOperation); + typedef struct _AudioExtensionParams { LPARAM AddPageParam; IMMDevice *pEndPoint; diff --git a/mingw-w64-headers/include/mmdeviceapi.idl b/mingw-w64-headers/include/mmdeviceapi.idl index d1fb6ae7..9fc93722 100644 --- a/mingw-w64-headers/include/mmdeviceapi.idl +++ b/mingw-w64-headers/include/mmdeviceapi.idl @@ -229,6 +229,40 @@ interface IMMDeviceActivator : IUnknown ); } +[ + object, + local, + uuid(72a22d78-cde4-431d-b8cc-843a71199b6d), + nonextensible, + pointer_default(unique) +] +interface IActivateAudioInterfaceAsyncOperation : IUnknown +{ + [id(1)] HRESULT GetActivateResult( + [out] HRESULT *activateResult, + [out] IUnknown **activatedInterface + ); +} + +[ + object, + local, + uuid(41d949ab-9862-444a-80f6-c261334da5eb), + nonextensible, + pointer_default(unique) +] +interface IActivateAudioInterfaceCompletionHandler : IUnknown +{ + [id(1)] HRESULT ActivateCompleted( + [out] IActivateAudioInterfaceAsyncOperation *activateOperation + ); +} + +cpp_quote("HRESULT WINAPI ActivateAudioInterfaceAsync(LPCWSTR deviceInterfacePath, REFIID riid, PROPVARIANT *activationParams,") +cpp_quote(" IActivateAudioInterfaceCompletionHandler *completionHandler,") +cpp_quote(" IActivateAudioInterfaceAsyncOperation **activationOperation);") +cpp_quote("") + typedef struct _AudioExtensionParams { LPARAM AddPageParam; -- 2.26.2 _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
