Author: ion Date: Sat Nov 12 08:16:33 2011 New Revision: 54357
URL: http://svn.reactos.org/svn/reactos?rev=54357&view=rev Log: [WIN32CSR/CSRSS]: Implement the Sound Sentry CSRSS API. Obviously won't work until a real winsrv.dll exists (and its job will be to call NtUserSoundSentry in win32k.sys).
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c trunk/reactos/subsystems/win32/csrss/win32csr/file.c trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win3... ============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/dllmain.c [iso-8859-1] Sat Nov 12 08:16:33 2011 @@ -91,6 +91,7 @@ CSRSS_DEFINE_API(SET_HISTORY_INFO, CsrSetHistoryInfo), CSRSS_DEFINE_API(GET_TEMP_FILE, CsrGetTempFile), CSRSS_DEFINE_API(DEFINE_DOS_DEVICE, CsrDefineDosDevice), + CSRSS_DEFINE_API(SOUND_SENTRY, CsrSoundSentry), { 0, 0, NULL } };
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/file.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win3... ============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/file.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/file.c [iso-8859-1] Sat Nov 12 08:16:33 2011 @@ -16,11 +16,57 @@
/* GLOBALS *******************************************************************/
+typedef BOOL (WINAPI *PUSER_SOUND_SENTRY)(VOID); +BOOL +WINAPI +FirstSoundSentry(VOID); + UINT CsrGetTempFileUnique; LIST_ENTRY DosDeviceHistory; RTL_CRITICAL_SECTION Win32CsrDefineDosDeviceCritSec; +PUSER_SOUND_SENTRY _UserSoundSentry = FirstSoundSentry;
/* FUNCTIONS *****************************************************************/ + +BOOL +WINAPI +FailSoundSentry(VOID) +{ + /* In case the function can't be found/is unimplemented */ + return FALSE; +} + +BOOL +WINAPI +FirstSoundSentry(VOID) +{ + UNICODE_STRING DllString = RTL_CONSTANT_STRING(L"winsrv"); + STRING FuncString = RTL_CONSTANT_STRING("_UserSoundSentry"); + HANDLE DllHandle; + NTSTATUS Status; + PUSER_SOUND_SENTRY NewSoundSentry = FailSoundSentry; + + /* Load winsrv manually */ + Status = LdrGetDllHandle(NULL, NULL, &DllString, &DllHandle); + if (NT_SUCCESS(Status)) + { + /* If it was found, get SoundSentry export */ + Status = LdrGetProcedureAddress(DllHandle, + &FuncString, + 0, + (PVOID*)&NewSoundSentry); + } + + /* Set it as the callback for the future, and call it */ + _UserSoundSentry = NewSoundSentry; + return _UserSoundSentry(); +} + +CSR_API(CsrSoundSentry) +{ + /* Call the API and see if it suceeds */ + return _UserSoundSentry() ? STATUS_SUCCESS : STATUS_ACCESS_DENIED; +}
CSR_API(CsrGetTempFile) {
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win3... ============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/w32csr.h [iso-8859-1] Sat Nov 12 08:16:33 2011 @@ -5,7 +5,7 @@ #include <ndk/mmtypes.h> #include <ndk/mmfuncs.h> #include <ndk/obfuncs.h> - +#include <ndk/umfuncs.h> #include <psapi.h>
/* External Winlogon Header */
Modified: trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/csrss/win3... ============================================================================== --- trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/csrss/win32csr/win32csr.h [iso-8859-1] Sat Nov 12 08:16:33 2011 @@ -75,5 +75,6 @@ CSR_API(CsrSetLogonNotifyWindow); CSR_API(CsrRegisterLogonProcess);
+CSR_API(CsrSoundSentry);
/* EOF */