2 * winsecur.h: some miscellaneous security-related helper functions,
3 * defined in winsecur.c, that use the advapi32 library. Also
4 * centralises the machinery for dynamically loading that library.
7 #if !defined NO_SECURITY
11 #ifndef WINSECUR_GLOBAL
12 #define WINSECUR_GLOBAL extern
16 * Functions loaded from advapi32.dll.
18 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL
, BOOL
, OpenProcessToken
,
19 (HANDLE
, DWORD
, PHANDLE
));
20 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL
, BOOL
, GetTokenInformation
,
21 (HANDLE
, TOKEN_INFORMATION_CLASS
,
22 LPVOID
, DWORD
, PDWORD
));
23 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL
, BOOL
, InitializeSecurityDescriptor
,
24 (PSECURITY_DESCRIPTOR
, DWORD
));
25 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL
, BOOL
, SetSecurityDescriptorOwner
,
26 (PSECURITY_DESCRIPTOR
, PSID
, BOOL
));
27 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL
, DWORD
, GetSecurityInfo
,
28 (HANDLE
, SE_OBJECT_TYPE
, SECURITY_INFORMATION
,
29 PSID
*, PSID
*, PACL
*, PACL
*,
30 PSECURITY_DESCRIPTOR
*));
31 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL
, DWORD
, SetEntriesInAclA
,
32 (ULONG
, PEXPLICIT_ACCESS
, PACL
, PACL
*));
36 * Functions loaded from crypt32.dll.
38 DECL_WINDOWS_FUNCTION(WINSECUR_GLOBAL
, BOOL
, CryptProtectMemory
,
39 (LPVOID
, DWORD
, DWORD
));
43 * Find the SID describing the current user. The return value (if not
44 * NULL for some error-related reason) is smalloced.
46 PSID
get_user_sid(void);
49 * Construct a PSECURITY_DESCRIPTOR of the type used for named pipe
50 * servers, i.e. allowing access only to the current user id and also
51 * only local (i.e. not over SMB) connections.
53 * If this function returns TRUE, then 'psd' and 'acl' will have been
54 * filled in with memory allocated using LocalAlloc (and hence must be
55 * freed later using LocalFree). If it returns FALSE, then instead
56 * 'error' has been filled with a dynamically allocated error message.
58 int make_private_security_descriptor(DWORD permissions
,
59 PSECURITY_DESCRIPTOR
*psd
,