From 1a9fa20283c70a4b2acf184922da4e470d41649c Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Wed, 18 Jul 2007 09:47:05 +0000 Subject: [PATCH] Implement QuerySecurityAccessMask svn path=/trunk/; revision=27712 --- reactos/dll/win32/advapi32/advapi32.def | 1 + reactos/dll/win32/advapi32/sec/sec.c | 22 ++++++++++++++++++++++ reactos/include/psdk/winbase.h | 3 +++ 3 files changed, 26 insertions(+) diff --git a/reactos/dll/win32/advapi32/advapi32.def b/reactos/dll/win32/advapi32/advapi32.def index da951167a99..75aca3e730c 100644 --- a/reactos/dll/win32/advapi32/advapi32.def +++ b/reactos/dll/win32/advapi32/advapi32.def @@ -451,6 +451,7 @@ PrivilegedServiceAuditAlarmW@20 ;QueryAllTracesA ;QueryAllTracesW QueryRecoveryAgentsOnEncryptedFile@8 +QuerySecurityAccessMask@8 QueryServiceConfig2A@20 QueryServiceConfig2W@20 QueryServiceConfigA@16 diff --git a/reactos/dll/win32/advapi32/sec/sec.c b/reactos/dll/win32/advapi32/sec/sec.c index 560b6472103..35aaf8cbe2a 100644 --- a/reactos/dll/win32/advapi32/sec/sec.c +++ b/reactos/dll/win32/advapi32/sec/sec.c @@ -465,6 +465,28 @@ SetSecurityDescriptorSacl ( } +/* + * @implemented + */ +VOID +WINAPI +QuerySecurityAccessMask(IN SECURITY_INFORMATION SecurityInformation, + OUT LPDWORD DesiredAccess) +{ + *DesiredAccess = 0; + + if (SecurityInformation & (OWNER_SECURITY_INFORMATION | + GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION)) + { + *DesiredAccess |= READ_CONTROL; + } + + if (SecurityInformation & SACL_SECURITY_INFORMATION) + { + *DesiredAccess |= ACCESS_SYSTEM_SECURITY; + } +} + /* * @unimplemented */ diff --git a/reactos/include/psdk/winbase.h b/reactos/include/psdk/winbase.h index ebdca872047..fcdc53b5c30 100644 --- a/reactos/include/psdk/winbase.h +++ b/reactos/include/psdk/winbase.h @@ -1841,6 +1841,9 @@ BOOL WINAPI QueryMemoryResourceNotification(HANDLE,PBOOL); #endif BOOL WINAPI QueryPerformanceCounter(PLARGE_INTEGER); BOOL WINAPI QueryPerformanceFrequency(PLARGE_INTEGER); +#if (_WIN32_WINNT >= 0x0600) +VOID WINAPI QuerySecurityAccessMask(SECURITY_INFORMATION,LPDWORD); +#endif DWORD WINAPI QueueUserAPC(PAPCFUNC,HANDLE,ULONG_PTR); #if (_WIN32_WINNT >= 0x0500) BOOL WINAPI QueueUserWorkItem(LPTHREAD_START_ROUTINE,PVOID,ULONG);