diff --git a/reactos/base/services/audiosrv/audiosrv.h b/reactos/base/services/audiosrv/audiosrv.h
index 398c26edda8..b4d02a744db 100644
--- a/reactos/base/services/audiosrv/audiosrv.h
+++ b/reactos/base/services/audiosrv/audiosrv.h
@@ -51,6 +51,8 @@ HandleDeviceEvent(
DWORD dwEventType,
LPVOID lpEventData);
+BOOL
+StartSystemAudioServices();
/* Debugging */
diff --git a/reactos/base/services/audiosrv/audiosrv.rbuild b/reactos/base/services/audiosrv/audiosrv.rbuild
index 5f53ac59570..192806d4eeb 100644
--- a/reactos/base/services/audiosrv/audiosrv.rbuild
+++ b/reactos/base/services/audiosrv/audiosrv.rbuild
@@ -10,6 +10,7 @@
pnp_list_manager.c
pnp_list_lock.c
pnp.c
+ services.c
debug.c
audiosrv.rc
diff --git a/reactos/base/services/audiosrv/main.c b/reactos/base/services/audiosrv/main.c
index 6160311eba3..c987433cdb5 100644
--- a/reactos/base/services/audiosrv/main.c
+++ b/reactos/base/services/audiosrv/main.c
@@ -132,6 +132,9 @@ ServiceMain(DWORD argc, LPWSTR argv)
return;
*/
}
+ /* start system audio services */
+ StartSystemAudioServices();
+
InitializeFakeDevice();
diff --git a/reactos/base/services/audiosrv/services.c b/reactos/base/services/audiosrv/services.c
new file mode 100644
index 00000000000..233828a16b9
--- /dev/null
+++ b/reactos/base/services/audiosrv/services.c
@@ -0,0 +1,79 @@
+/*
+ * PROJECT: ReactOS
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/services/audiosrv/services.c
+ * PURPOSE: Audio Service Plug and Play
+ * COPYRIGHT: Copyright 2009 Johannes Anderwald
+ */
+
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+#include "audiosrv.h"
+
+
+BOOL
+StartSystemAudioServices()
+{
+ SC_HANDLE hSCManager, hService;
+
+ logmsg("Starting system audio services\n");
+
+ hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
+ if (!hSCManager)
+ {
+ logmsg("Failed to open service manager\n");
+ return FALSE;
+ }
+
+ hService = OpenService(hSCManager, L"sysaudio", SERVICE_ALL_ACCESS);
+ if (hService)
+ {
+ if (!StartService(hService, 0, NULL))
+ {
+ logmsg("Failed to start sysaudio service\n");
+ CloseServiceHandle(hService);
+ CloseServiceHandle(hSCManager);
+ return FALSE;
+ }
+ CloseServiceHandle(hService);
+ logmsg("Sysaudio service started\n");
+ // FIXME
+ // wait untill service is started
+ }
+
+ hService = OpenService(hSCManager, L"wdmaud", SERVICE_ALL_ACCESS);
+ if (hService)
+ {
+ if (!StartService(hService, 0, NULL))
+ {
+ logmsg("Failed to start sysaudio service\n");
+ CloseServiceHandle(hService);
+ CloseServiceHandle(hSCManager);
+ return FALSE;
+ }
+ CloseServiceHandle(hService);
+ logmsg("Wdmaud service started\n");
+ }
+
+
+ CloseServiceHandle(hSCManager);
+ return TRUE;
+}
+
+
+
+
+
+
+
+
+
+
+