diff --git a/configure b/configure index 6c87c038ebd..817ddd77b33 100755 --- a/configure +++ b/configure @@ -1321,6 +1321,7 @@ enable_wuapi enable_wuaueng enable_x3daudio1_7 enable_xapofx1_1 +enable_xaudio2_7 enable_xinput1_1 enable_xinput1_2 enable_xinput1_3 @@ -17544,6 +17545,7 @@ wine_fn_config_dll wuapi enable_wuapi clean wine_fn_config_dll wuaueng enable_wuaueng wine_fn_config_dll x3daudio1_7 enable_x3daudio1_7 wine_fn_config_dll xapofx1_1 enable_xapofx1_1 +wine_fn_config_dll xaudio2_7 enable_xaudio2_7 wine_fn_config_dll xinput1_1 enable_xinput1_1 wine_fn_config_dll xinput1_2 enable_xinput1_2 wine_fn_config_dll xinput1_3 enable_xinput1_3 implib xinput diff --git a/configure.ac b/configure.ac index 8263c66a125..df3c37b256e 100644 --- a/configure.ac +++ b/configure.ac @@ -3368,6 +3368,7 @@ WINE_CONFIG_DLL(wuapi,,[clean]) WINE_CONFIG_DLL(wuaueng) WINE_CONFIG_DLL(x3daudio1_7) WINE_CONFIG_DLL(xapofx1_1) +WINE_CONFIG_DLL(xaudio2_7) WINE_CONFIG_DLL(xinput1_1) WINE_CONFIG_DLL(xinput1_2) WINE_CONFIG_DLL(xinput1_3,,[implib],[xinput]) diff --git a/dlls/xaudio2_7/Makefile.in b/dlls/xaudio2_7/Makefile.in new file mode 100644 index 00000000000..853d1d67223 --- /dev/null +++ b/dlls/xaudio2_7/Makefile.in @@ -0,0 +1,5 @@ +MODULE = xaudio2_7.dll +IMPORTS = advapi32 kernel32 ole32 user32 uuid + +C_SRCS = \ + xaudio_dll.c diff --git a/dlls/xaudio2_7/xaudio2_7.spec b/dlls/xaudio2_7/xaudio2_7.spec new file mode 100644 index 00000000000..b16365d0c9f --- /dev/null +++ b/dlls/xaudio2_7/xaudio2_7.spec @@ -0,0 +1,4 @@ +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c new file mode 100644 index 00000000000..c8b79040207 --- /dev/null +++ b/dlls/xaudio2_7/xaudio_dll.c @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2015 Mark Harmstone + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" + +#include "ole2.h" +#include "rpcproxy.h" + +#include "wine/debug.h" +#include +#include "initguid.h" +#include "xaudio2.h" + +WINE_DEFAULT_DEBUG_CHANNEL(xaudio2); + +static HINSTANCE instance; + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + TRACE("(%p, %d, %p)\n", hinstDLL, fdwReason, lpvReserved); + + switch (fdwReason) + { + case DLL_WINE_PREATTACH: + return FALSE; /* prefer native version */ + case DLL_PROCESS_ATTACH: + instance = hinstDLL; + DisableThreadLibraryCalls( hinstDLL ); + break; + } + return TRUE; +} + +HRESULT WINAPI DllCanUnloadNow(void) +{ + return S_FALSE; +} + +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) +{ + TRACE("(%s, %s, %p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); + + if (ppv == NULL) { + WARN("invalid parameter\n"); + return E_INVALIDARG; + } + + *ppv = NULL; + + WARN("(%s, %s, %p): no class found.\n", debugstr_guid(rclsid), + debugstr_guid(riid), ppv); + return CLASS_E_CLASSNOTAVAILABLE; +} + +HRESULT WINAPI DllRegisterServer(void) +{ + TRACE("\n"); + return __wine_register_resources( instance ); +} + +HRESULT WINAPI DllUnregisterServer(void) +{ + TRACE("\n"); + return __wine_unregister_resources( instance ); +}