ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

services.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.