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; +} + + + + + + + + + + +