Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenservices.c
Go to the documentation of this file.
00001 /* 00002 * PROJECT: ReactOS 00003 * LICENSE: GPL - See COPYING in the top level directory 00004 * FILE: base/services/audiosrv/services.c 00005 * PURPOSE: Audio Service Plug and Play 00006 * COPYRIGHT: Copyright 2009 Johannes Anderwald 00007 */ 00008 00009 #include "audiosrv.h" 00010 00011 BOOL 00012 WaitForService( 00013 SC_HANDLE hService, 00014 ULONG RetryCount) 00015 { 00016 ULONG Index = 0; 00017 DWORD dwSize; 00018 SERVICE_STATUS_PROCESS Info; 00019 00020 do 00021 { 00022 if (!QueryServiceStatusEx(hService, SC_STATUS_PROCESS_INFO, (LPBYTE)&Info, sizeof(SERVICE_STATUS_PROCESS), &dwSize)) 00023 { 00024 logmsg("QueryServiceStatusEx failed %x\n", GetLastError()); 00025 break; 00026 } 00027 00028 if (Info.dwCurrentState == SERVICE_RUNNING) 00029 return TRUE; 00030 00031 Sleep(1000); 00032 00033 }while(Index++ < RetryCount); 00034 00035 logmsg("Timeout while waiting for service to become ready %p\n", hService); 00036 00037 return FALSE; 00038 } 00039 00040 BOOL 00041 StartAudioService( 00042 SC_HANDLE hSCManager, 00043 LPWSTR ServiceName, 00044 ULONG RetryCount) 00045 { 00046 SC_HANDLE hService; 00047 BOOL ret; 00048 00049 hService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS); 00050 00051 if (!hService) 00052 { 00053 logmsg("Failed to open service %S %x\n", ServiceName, GetLastError()); 00054 return FALSE; 00055 } 00056 00057 if (!StartService(hService, 0, NULL)) 00058 { 00059 logmsg("Failed to start service %S %x\n", ServiceName, GetLastError()); 00060 CloseServiceHandle(hService); 00061 return FALSE; 00062 } 00063 00064 ret = WaitForService(hService, RetryCount); 00065 00066 CloseServiceHandle(hService); 00067 return ret; 00068 } 00069 00070 00071 00072 00073 BOOL 00074 StartSystemAudioServices() 00075 { 00076 SC_HANDLE hSCManager; 00077 00078 logmsg("Starting system audio services\n"); 00079 00080 hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT); 00081 if (!hSCManager) 00082 { 00083 logmsg("Failed to open service manager %x\n", GetLastError()); 00084 return FALSE; 00085 } 00086 00087 logmsg("Starting sysaudio service\n"); 00088 StartAudioService(hSCManager, L"sysaudio", 20); 00089 logmsg("Starting wdmaud service\n"); 00090 StartAudioService(hSCManager, L"wdmaud", 20); 00091 00092 CloseServiceHandle(hSCManager); 00093 return TRUE; 00094 } 00095 00096 00097 00098 00099 00100 00101 00102 00103 00104 00105 Generated on Sun May 27 2012 04:17:51 for ReactOS by
1.7.6.1
|