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

Reply via email to