--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Configuration of network devices
+ * FILE: dll/directx/dsound_new/classfactory.c
+ * PURPOSE: IClassFactory implementation
+ *
+ * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
+ */
+
+
+#include "precomp.h"
+
+typedef struct
+{
+ const IClassFactoryVtbl *lpVtbl;
+ LONG ref;
+ CLSID *rclsid;
+ LPFNCREATEINSTANCE lpfnCI;
+ const IID * riidInst;
+} IClassFactoryImpl;
+
+
+static
+HRESULT
+WINAPI
+IClassFactory_fnQueryInterface(
+ LPCLASSFACTORY iface,
+ REFIID riid,
+ LPVOID *ppvObj)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+
+ *ppvObj = NULL;
+ if(IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IClassFactory))
+ {
+ *ppvObj = This;
+ InterlockedIncrement(&This->ref);
+ return S_OK;
+ }
+ return E_NOINTERFACE;
+}
+
+static
+ULONG
+WINAPI
+IClassFactory_fnAddRef(
+ LPCLASSFACTORY iface)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+ ULONG refCount = InterlockedIncrement(&This->ref);
+
+ return refCount;
+}
+
+static
+ULONG
+WINAPI
+IClassFactory_fnRelease(
+ LPCLASSFACTORY iface)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+ ULONG refCount = InterlockedDecrement(&This->ref);
+
+ if (!refCount)
+ {
+ CoTaskMemFree(This);
+ return 0;
+ }
+ return refCount;
+}
+
+static
+HRESULT
+WINAPI
+IClassFactory_fnCreateInstance(
+ LPCLASSFACTORY iface,
+ LPUNKNOWN pUnkOuter,
+ REFIID riid,
+ LPVOID *ppvObject)
+{
+ IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+
+ *ppvObject = NULL;
+
+ if ( This->riidInst==NULL || IsEqualCLSID(riid, This->riidInst) || IsEqualCLSID(riid, &IID_IUnknown) )
+ {
+ return This->lpfnCI(pUnkOuter, riid, ppvObject);
+ }
+
+ return E_NOINTERFACE;
+}
+
+static
+HRESULT
+WINAPI IClassFactory_fnLockServer(
+ LPCLASSFACTORY iface,
+ BOOL fLock)
+{
+ //IClassFactoryImpl *This = (IClassFactoryImpl *)iface;
+ return E_NOTIMPL;
+}
+
+
+static const IClassFactoryVtbl dclfvt =
+{
+ IClassFactory_fnQueryInterface,
+ IClassFactory_fnAddRef,
+ IClassFactory_fnRelease,
+ IClassFactory_fnCreateInstance,
+ IClassFactory_fnLockServer
+};
+
+
+IClassFactory *
+IClassFactory_fnConstructor(
+ LPFNCREATEINSTANCE lpfnCI,
+ PLONG pcRefDll,
+ REFIID riidInst)
+{
+ IClassFactoryImpl* lpclf;
+
+ lpclf = CoTaskMemAlloc(sizeof(IClassFactoryImpl));
+ lpclf->ref = 1;
+ lpclf->lpVtbl = &dclfvt;
+ lpclf->lpfnCI = lpfnCI;
+
+ if (pcRefDll)
+ InterlockedIncrement(pcRefDll);
+ lpclf->riidInst = riidInst;
+
+ return (LPCLASSFACTORY)lpclf;
+}
+
+
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Configuration of network devices
+ * FILE: dll/directx/dsound_new/dsound.c
+ * PURPOSE: Handles DSound initialization
+ *
+ * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
+ */
+
+#include "precomp.h"
+
+
+HINSTANCE dsound_hInstance;
+
+HRESULT
+WINAPI
+DllCanUnloadNow()
+{
+ return S_FALSE;
+}
+
+HRESULT
+WINAPI
+DllGetClassObject(
+ REFCLSID rclsid,
+ REFIID riid,
+ LPVOID *ppv)
+{
+ UNIMPLEMENTED
+ return CLASS_E_CLASSNOTAVAILABLE;
+}
+
+BOOL
+WINAPI
+DllMain(
+ HINSTANCE hInstDLL,
+ DWORD fdwReason,
+ LPVOID lpvReserved)
+{
+ switch (fdwReason)
+ {
+ case DLL_PROCESS_ATTACH:
+ dsound_hInstance = hInstDLL;
+ DisableThreadLibraryCalls(dsound_hInstance);
+ break;
+ default:
+ break;
+ }
+
+ return TRUE;
+}
+
--- /dev/null
+1 stdcall DirectSoundCreate(ptr ptr ptr)
+2 stdcall DirectSoundEnumerateA(ptr ptr)
+3 stdcall DirectSoundEnumerateW(ptr ptr)
+6 stdcall DirectSoundCaptureCreate(ptr ptr ptr)
+7 stdcall DirectSoundCaptureEnumerateA(ptr ptr)
+8 stdcall DirectSoundCaptureEnumerateW(ptr ptr)
+9 stdcall GetDeviceID(ptr ptr)
+10 stdcall DirectSoundFullDuplexCreate(ptr ptr ptr ptr long long ptr ptr ptr ptr)
+11 stdcall DirectSoundCreate8(ptr ptr ptr)
+12 stdcall DirectSoundCaptureCreate8(ptr ptr ptr)
+@ stdcall -private DllCanUnloadNow()
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
+@ stdcall -private DllRegisterServer()
+@ stdcall -private DllUnregisterServer()
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
+<module name="dsound_new" type="win32dll" baseaddress="${BASEADDRESS_DSOUND}" installbase="system32" installname="dsound_new.dll" crt="msvcrt">
+ <autoregister infsection="OleControlDlls" type="DllRegisterServer" />
+ <importlibrary definition="dsound.spec" />
+ <include base="dsound">.</include>
+ <library>uuid</library>
+ <library>ntdll</library>
+ <library>kernel32</library>
+ <library>user32</library>
+ <library>advapi32</library>
+ <library>ole32</library>
+ <library>winmm</library>
+ <library>dxguid</library>
+ <file>classfactory.c</file>
+ <file>dsound.c</file>
+ <file>stubs.c</file>
+ <file>version.rc</file>
+</module>
--- /dev/null
+#ifndef PRECOMP_H__
+#define PRECOMP_H__
+
+#define COBJMACROS
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+
+#include <windows.h>
+#include <setupapi.h>
+#include <olectl.h>
+#include <unknwn.h>
+#include <dsound.h>
+#include <debug.h>
+
+
+/* factory method */
+typedef HRESULT (CALLBACK *LPFNCREATEINSTANCE)(IUnknown* pUnkOuter, REFIID riid, LPVOID* ppvObject);
+
+/* factory table */
+typedef struct
+{
+ REFIID riid;
+ LPFNCREATEINSTANCE lpfnCI;
+} INTERFACE_TABLE;
+
+/* globals */
+extern HINSTANCE dsound_hInstance;
+
+
+#endif
--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Configuration of network devices
+ * FILE: dll/directx/dsound_new/stubs.c
+ * PURPOSE: DSound stubs
+ *
+ * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
+ */
+
+#include "precomp.h"
+
+HRESULT
+WINAPI
+DirectSoundCreate(
+ LPCGUID lpcGUID,
+ LPDIRECTSOUND *ppDS,
+ IUnknown *pUnkOuter)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+
+HRESULT
+WINAPI
+DirectSoundEnumerateA(
+ LPDSENUMCALLBACKA lpDSEnumCallback,
+ LPVOID lpContext)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+DirectSoundEnumerateW(
+ LPDSENUMCALLBACKW lpDSEnumCallback,
+ LPVOID lpContext )
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+DllRegisterServer(void)
+{
+ UNIMPLEMENTED
+ return SELFREG_E_CLASS;
+}
+
+HRESULT
+WINAPI
+DllUnregisterServer(void)
+{
+ UNIMPLEMENTED
+ return SELFREG_E_CLASS;
+}
+
+HRESULT
+WINAPI
+DirectSoundCaptureCreate(
+ LPCGUID lpcGUID,
+ LPDIRECTSOUNDCAPTURE *ppDSC,
+ LPUNKNOWN pUnkOuter)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+DirectSoundCaptureCreate8(
+ LPCGUID lpcGUID,
+ LPDIRECTSOUNDCAPTURE8 *ppDSC8,
+ LPUNKNOWN pUnkOuter)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+DirectSoundCreate8(
+ LPCGUID lpcGUID,
+ LPDIRECTSOUND8 *ppDS,
+ IUnknown *pUnkOuter)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+DirectSoundFullDuplexCreate(
+ LPCGUID pcGuidCaptureDevice,
+ LPCGUID pcGuidRenderDevice,
+ LPCDSCBUFFERDESC pcDSCBufferDesc,
+ LPCDSBUFFERDESC pcDSBufferDesc,
+ HWND hWnd,
+ DWORD dwLevel,
+ LPDIRECTSOUNDFULLDUPLEX *ppDSFD,
+ LPDIRECTSOUNDCAPTUREBUFFER8 *ppDSCBuffer8,
+ LPDIRECTSOUNDBUFFER8 *ppDSBuffer8,
+ LPUNKNOWN pUnkOuter)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+DirectSoundCaptureEnumerateA(
+ LPDSENUMCALLBACKA lpDSEnumCallback,
+ LPVOID lpContext)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+DirectSoundCaptureEnumerateW(
+ LPDSENUMCALLBACKW lpDSEnumCallback,
+ LPVOID lpContext)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
+
+HRESULT
+WINAPI
+GetDeviceID(LPCGUID pGuidSrc, LPGUID pGuidDest)
+{
+ UNIMPLEMENTED
+ return DSERR_INVALIDPARAM;
+}
--- /dev/null
+#include <windows.h>
+#include "shlobj.h"
+#include "resource.h"
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+
+#define REACTOS_VERSION_DLL
+#define REACTOS_STR_FILE_DESCRIPTION "DirectSound\0"
+#define REACTOS_STR_INTERNAL_NAME "dsound.dll\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "dsound.dll\0"
+#define REACTOS_STR_PRODUCT_VERSION "5.3.1.904\0"
+#define REACTOS_STR_FILE_VERSION "5.3.1.904\0"
+
+#include <reactos/version.rc>