From 9672dc50479f42c6da51b426618f05a9394a9ef2 Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Sat, 18 Feb 2023 18:28:30 +0100 Subject: [PATCH] [AUDIOSRV] Overhaul logging interfaces CORE-16912 (#5067) --- base/services/audiosrv/CMakeLists.txt | 3 +- base/services/audiosrv/audiosrv.h | 13 ++---- base/services/audiosrv/debug.c | 33 --------------- base/services/audiosrv/main.c | 50 ++++++++++++----------- base/services/audiosrv/pnp.c | 18 ++++---- base/services/audiosrv/pnp_list_lock.c | 9 ++-- base/services/audiosrv/pnp_list_manager.c | 47 +++++++++------------ base/services/audiosrv/services.c | 28 +++++++------ 8 files changed, 79 insertions(+), 122 deletions(-) delete mode 100644 base/services/audiosrv/debug.c diff --git a/base/services/audiosrv/CMakeLists.txt b/base/services/audiosrv/CMakeLists.txt index 979161a36c2..094f948ce93 100644 --- a/base/services/audiosrv/CMakeLists.txt +++ b/base/services/audiosrv/CMakeLists.txt @@ -5,11 +5,10 @@ list(APPEND SOURCE pnp_list_lock.c pnp.c services.c - debug.c audiosrv.h) add_executable(audiosrv ${SOURCE} audiosrv.rc) set_module_type(audiosrv win32cui UNICODE) -add_importlibs(audiosrv advapi32 user32 setupapi msvcrt kernel32) +add_importlibs(audiosrv advapi32 user32 setupapi msvcrt kernel32 ntdll) add_pch(audiosrv audiosrv.h SOURCE) add_cd_file(TARGET audiosrv DESTINATION reactos/system32 FOR all) diff --git a/base/services/audiosrv/audiosrv.h b/base/services/audiosrv/audiosrv.h index 567465717e8..e143f11b230 100644 --- a/base/services/audiosrv/audiosrv.h +++ b/base/services/audiosrv/audiosrv.h @@ -1,9 +1,8 @@ /* - * PROJECT: ReactOS - * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/services/audiosrv/audiosrv.h - * PURPOSE: Audio Service (private header) - * COPYRIGHT: Copyright 2007 Andrew Greenwood + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Audio Service (private header) + * COPYRIGHT: Copyright 2007 Andrew Greenwood */ #ifndef _AUDIOSRV_PCH_ @@ -62,10 +61,6 @@ HandleDeviceEvent( BOOL StartSystemAudioServices(VOID); -/* Debugging */ - -void logmsg(char* string, ...); - #endif #endif /* _AUDIOSRV_PCH_ */ diff --git a/base/services/audiosrv/debug.c b/base/services/audiosrv/debug.c deleted file mode 100644 index c19aada3538..00000000000 --- a/base/services/audiosrv/debug.c +++ /dev/null @@ -1,33 +0,0 @@ -/* Service debugging (simply logs to a file) */ - -#include "audiosrv.h" - -#include - -// FIXME: Disabled to work around CORE-16814 (and CORE-16912). -// #define ENABLE_LOGMSG_FILE - -void logmsg(char* string, ...) -{ - va_list args; - -#ifdef ENABLE_LOGMSG_FILE - FILE* debug_file = fopen("c:\\audiosrv-debug.txt", "a"); - - if (debug_file) - { - va_start(args, string); - vfprintf(debug_file, string, args); - va_end(args); - fclose(debug_file); - } - else -#endif - { - char buf[256]; - va_start(args, string); - vsprintf(buf, string, args); - OutputDebugStringA(buf); - va_end(args); - } -} diff --git a/base/services/audiosrv/main.c b/base/services/audiosrv/main.c index efbff7dc81e..5a5157f0e3d 100644 --- a/base/services/audiosrv/main.c +++ b/base/services/audiosrv/main.c @@ -1,13 +1,15 @@ /* - * PROJECT: ReactOS - * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/services/audiosrv/main.c - * PURPOSE: Audio Service - * COPYRIGHT: Copyright 2007 Andrew Greenwood + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Audio Service + * COPYRIGHT: Copyright 2007 Andrew Greenwood */ #include "audiosrv.h" +#define NDEBUG +#include + SERVICE_STATUS_HANDLE service_status_handle; SERVICE_STATUS service_status; @@ -34,19 +36,19 @@ ServiceControlHandler( { case SERVICE_CONTROL_INTERROGATE : { - logmsg("* Interrogation\n"); + DPRINT("* Interrogation\n"); return NO_ERROR; } case SERVICE_CONTROL_STOP : case SERVICE_CONTROL_SHUTDOWN : { - logmsg("* Service Stop/Shutdown request received\n"); + DPRINT("* Service Stop/Shutdown request received\n"); - logmsg("Unregistering device notifications\n"); + DPRINT("Unregistering device notifications\n"); UnregisterDeviceNotifications(); - logmsg("Destroying audio device list\n"); + DPRINT("Destroying audio device list\n"); DestroyAudioDeviceList(); service_status.dwCurrentState = SERVICE_STOP_PENDING; @@ -57,14 +59,14 @@ ServiceControlHandler( SetServiceStatus(service_status_handle, &service_status); - logmsg("* Service stopped\n"); + DPRINT("* Service stopped\n"); return NO_ERROR; } case SERVICE_CONTROL_DEVICEEVENT : { - logmsg("* Device Event\n"); + DPRINT("* Device Event\n"); return HandleDeviceEvent(dwEventType, lpEventData); } @@ -78,16 +80,16 @@ ServiceControlHandler( VOID CALLBACK ServiceMain(DWORD argc, LPWSTR argv) { - logmsg("* Service starting\n"); - logmsg("Registering service control handler...\n"); + DPRINT("* Service starting\n"); + DPRINT("Registering service control handler\n"); service_status_handle = RegisterServiceCtrlHandlerExW(SERVICE_NAME, ServiceControlHandler, NULL); - logmsg("Service status handle %d\n", service_status_handle); + DPRINT("Service status handle %d\n", service_status_handle); if (!service_status_handle) { - logmsg("Failed to register service control handler\n"); + DPRINT("Failed to register service control handler\n"); /* FIXME - we should fail */ } @@ -103,23 +105,23 @@ ServiceMain(DWORD argc, LPWSTR argv) service_status.dwCurrentState = SERVICE_START_PENDING; SetServiceStatus(service_status_handle, &service_status); - logmsg("Creating audio device list\n"); + DPRINT("Creating audio device list\n"); /* This creates the audio device list and mutex */ if (!CreateAudioDeviceList(AUDIO_LIST_MAX_SIZE)) { - logmsg("Failed to create audio device list\n"); + DPRINT("Failed to create audio device list\n"); service_status.dwCurrentState = SERVICE_STOPPED; service_status.dwWin32ExitCode = -1; SetServiceStatus(service_status_handle, &service_status); return; } - logmsg("Registering for device notifications\n"); + DPRINT("Registering for device notifications\n"); /* We want to know when devices are added/removed */ if (!RegisterForDeviceNotifications()) { /* FIXME: This is not fatal at present as ROS does not support this */ - logmsg("Failed to register for device notifications\n"); + DPRINT("Failed to register for device notifications\n"); /* DestroyAudioDeviceList(); @@ -134,11 +136,11 @@ ServiceMain(DWORD argc, LPWSTR argv) InitializeFakeDevice(); - logmsg("Processing existing devices\n"); + DPRINT("Processing existing devices\n"); /* Now find any devices that already exist on the system */ if (!ProcessExistingDevices()) { - logmsg("Could not process existing devices\n"); + DPRINT("Could not process existing devices\n"); UnregisterDeviceNotifications(); DestroyAudioDeviceList(); @@ -148,7 +150,7 @@ ServiceMain(DWORD argc, LPWSTR argv) return; } - logmsg("* Service started\n"); + DPRINT("* Service started\n"); /* Tell SCM we are now running, and we may be stopped */ service_status.dwCurrentState = SERVICE_RUNNING; service_status.dwControlsAccepted = SERVICE_ACCEPT_STOP; @@ -163,9 +165,9 @@ int wmain(VOID) { NULL, NULL } }; - logmsg("Audio Service main()\n"); + DPRINT("Audio Service main()\n"); if (!StartServiceCtrlDispatcherW(service_table)) - logmsg("StartServiceCtrlDispatcher failed\n"); + DPRINT("StartServiceCtrlDispatcher failed\n"); return 0; } diff --git a/base/services/audiosrv/pnp.c b/base/services/audiosrv/pnp.c index 7db8a550569..26a2fae9449 100644 --- a/base/services/audiosrv/pnp.c +++ b/base/services/audiosrv/pnp.c @@ -1,9 +1,8 @@ /* - * PROJECT: ReactOS - * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/services/audiosrv/pnp.c - * PURPOSE: Audio Service Plug and Play - * COPYRIGHT: Copyright 2007 Andrew Greenwood + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Audio Service Plug and Play + * COPYRIGHT: Copyright 2007 Andrew Greenwood */ #include "audiosrv.h" @@ -15,6 +14,9 @@ #include #include +#define NDEBUG +#include + static HDEVNOTIFY device_notification_handle = NULL; /* @@ -42,8 +44,6 @@ ProcessExistingDevices(VOID) NULL, NULL); -/* printf("%s:\n", ClassString); */ - interface_data.cbSize = sizeof(interface_data); interface_data.Reserved = 0; @@ -60,7 +60,7 @@ ProcessExistingDevices(VOID) if ( ! detail_data ) { - logmsg("ProcessExistingDevices() failed to allocate detail_data\n"); + DPRINT("failed to allocate detail_data\n"); return TRUE; } @@ -143,7 +143,7 @@ RegisterForDeviceNotifications(VOID) DEVICE_NOTIFY_ALL_INTERFACE_CLASSES*/); if (!device_notification_handle) { - logmsg("RegisterDeviceNotification() failed with error %d\n", GetLastError()); + DPRINT("failed with error %d\n", GetLastError()); } return ( device_notification_handle != NULL ); diff --git a/base/services/audiosrv/pnp_list_lock.c b/base/services/audiosrv/pnp_list_lock.c index ea6224a6ed3..209c4bc9f5d 100644 --- a/base/services/audiosrv/pnp_list_lock.c +++ b/base/services/audiosrv/pnp_list_lock.c @@ -1,9 +1,8 @@ /* - * PROJECT: ReactOS - * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/services/audiosrv/pnp_list_lock.c - * PURPOSE: Audio Service Plug and Play list locking mechanism - * COPYRIGHT: Copyright 2007 Andrew Greenwood + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Audio Service Plug and Play list locking mechanism + * COPYRIGHT: Copyright 2007 Andrew Greenwood */ #include "audiosrv.h" diff --git a/base/services/audiosrv/pnp_list_manager.c b/base/services/audiosrv/pnp_list_manager.c index 0854d69eb4a..b477a2b1923 100644 --- a/base/services/audiosrv/pnp_list_manager.c +++ b/base/services/audiosrv/pnp_list_manager.c @@ -1,13 +1,15 @@ /* - * PROJECT: ReactOS - * LICENSE: GPL - See COPYING in the top level directory - * FILE: base/services/audiosrv/pnp_list_manager.c - * PURPOSE: Audio Service List Manager - * COPYRIGHT: Copyright 2007 Andrew Greenwood + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Audio Service List Manager + * COPYRIGHT: Copyright 2007 Andrew Greenwood */ #include "audiosrv.h" +#define NDEBUG +#include + /* Device descriptor */ @@ -20,12 +22,10 @@ CreateDeviceDescriptor(WCHAR* path, BOOL is_enabled) int path_length = WideStringSize(path); int size = sizeof(PnP_AudioDevice) + path_length; -/* printf("path_length %d, total %d\n", path_length, size);*/ - device = malloc(size); if (! device) { - logmsg("Failed to create a device descriptor (malloc fail)\n"); + DPRINT("Failed to malloc device descriptor\n"); return NULL; } @@ -64,15 +64,10 @@ AppendAudioDeviceToList(PnP_AudioDevice* device) LockAudioDeviceList(); -/* - printf("list size is %d\n", audio_device_list->size); - printf("device info size is %d bytes\n", device_info_size); -*/ - /* We DON'T want to overshoot the end of the buffer! */ if (audio_device_list->size + device_info_size > audio_device_list->max_size) { - /*printf("max_size would be exceeded! Failing...\n");*/ + /*DPRINT("failed, max_size would be exceeded\n");*/ UnlockAudioDeviceList(); @@ -90,7 +85,7 @@ AppendAudioDeviceToList(PnP_AudioDevice* device) UnlockAudioDeviceList(); - logmsg("Device added to list\n"); + DPRINT("Device added to list\n"); return TRUE; } @@ -98,11 +93,9 @@ AppendAudioDeviceToList(PnP_AudioDevice* device) BOOL CreateAudioDeviceList(DWORD max_size) { -/* printf("Initializing memory device list lock\n");*/ - if (!InitializeAudioDeviceListLock()) { - /*printf("Failed!\n");*/ + /*DPRINT("Failed\n");*/ return FALSE; } @@ -111,7 +104,7 @@ CreateAudioDeviceList(DWORD max_size) turning up before we're ready... */ LockAudioDeviceList(); - logmsg("Creating file mapping\n"); + DPRINT("Creating file mapping\n"); /* Expose our device list to the world */ device_list_file = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, @@ -121,7 +114,7 @@ CreateAudioDeviceList(DWORD max_size) AUDIO_LIST_NAME); if (!device_list_file) { - logmsg("Creation of audio device list failed (err %d)\n", GetLastError()); + DPRINT("Creation of audio device list failed (err %d)\n", GetLastError()); UnlockAudioDeviceList(); KillAudioDeviceListLock(); @@ -129,7 +122,7 @@ CreateAudioDeviceList(DWORD max_size) return FALSE; } - logmsg("Mapping view of file\n"); + DPRINT("Mapping view of file\n"); /* Of course, we'll need to access the list ourselves */ audio_device_list = MapViewOfFile(device_list_file, FILE_MAP_WRITE, @@ -138,7 +131,7 @@ CreateAudioDeviceList(DWORD max_size) max_size); if (!audio_device_list) { - logmsg("MapViewOfFile FAILED (err %d)\n", GetLastError()); + DPRINT("MapViewOfFile FAILED (err %d)\n", GetLastError()); CloseHandle(device_list_file); device_list_file = NULL; @@ -159,7 +152,7 @@ CreateAudioDeviceList(DWORD max_size) UnlockAudioDeviceList(); - logmsg("Device list created\n"); + DPRINT("Device list created\n"); return TRUE; } @@ -167,20 +160,20 @@ CreateAudioDeviceList(DWORD max_size) VOID DestroyAudioDeviceList(VOID) { - logmsg("Destroying device list\n"); + DPRINT("Destroying device list\n"); LockAudioDeviceList(); - /*printf("Unmapping view\n");*/ + /*DPRINT("Unmapping view\n");*/ UnmapViewOfFile(audio_device_list); audio_device_list = NULL; - /*printf("Closing memory mapped file\n");*/ + /*DPRINT("Closing memory mapped file\n");*/ CloseHandle(device_list_file); device_list_file = NULL; UnlockAudioDeviceList(); - /*printf("Killing devlist lock\n");*/ + /*DPRINT("Killing devlist lock\n");*/ KillAudioDeviceListLock(); } diff --git a/base/services/audiosrv/services.c b/base/services/audiosrv/services.c index 68c14835e06..c6af09cd551 100644 --- a/base/services/audiosrv/services.c +++ b/base/services/audiosrv/services.c @@ -1,13 +1,15 @@ /* - * 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 + * PROJECT: ReactOS + * LICENSE: GPL - See COPYING in the top level directory + * PURPOSE: Audio Service Plug and Play + * COPYRIGHT: Copyright 2009 Johannes Anderwald */ #include "audiosrv.h" +#define NDEBUG +#include + BOOL WaitForService( SC_HANDLE hService, @@ -21,7 +23,7 @@ WaitForService( { if (!QueryServiceStatusEx(hService, SC_STATUS_PROCESS_INFO, (LPBYTE)&Info, sizeof(SERVICE_STATUS_PROCESS), &dwSize)) { - logmsg("QueryServiceStatusEx failed %x\n", GetLastError()); + DPRINT("QueryServiceStatusEx failed %x\n", GetLastError()); break; } @@ -32,7 +34,7 @@ WaitForService( } while (Index++ < RetryCount); - logmsg("Timeout while waiting for service to become ready %p\n", hService); + DPRINT("Timeout while waiting for service to become ready %p\n", hService); return FALSE; } @@ -49,13 +51,13 @@ StartAudioService( hService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS); if (!hService) { - logmsg("Failed to open service %S %x\n", ServiceName, GetLastError()); + DPRINT("Failed to open service %S %x\n", ServiceName, GetLastError()); return FALSE; } if (!StartService(hService, 0, NULL)) { - logmsg("Failed to start service %S %x\n", ServiceName, GetLastError()); + DPRINT("Failed to start service %S %x\n", ServiceName, GetLastError()); CloseServiceHandle(hService); return FALSE; } @@ -71,18 +73,18 @@ StartSystemAudioServices(VOID) { SC_HANDLE hSCManager; - logmsg("Starting system audio services\n"); + DPRINT("Starting system audio services\n"); hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT); if (!hSCManager) { - logmsg("Failed to open service manager %x\n", GetLastError()); + DPRINT("Failed to open service manager %x\n", GetLastError()); return FALSE; } - logmsg("Starting sysaudio service\n"); + DPRINT("Starting sysaudio service\n"); StartAudioService(hSCManager, L"sysaudio", 20); - logmsg("Starting wdmaud service\n"); + DPRINT("Starting wdmaud service\n"); StartAudioService(hSCManager, L"wdmaud", 20); CloseServiceHandle(hSCManager);