xref: /reactos/dll/win32/advapi32/advapi32.h (revision 5100859e)
1 /*
2  * COPYRIGHT:       See COPYING in the top level directory
3  * PROJECT:         ReactOS System Libraries
4  * FILE:            lib/advapi32/advapi32.h
5  * PURPOSE:         Win32 Advanced API Library Header
6  * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
7  */
8 #ifndef __ADVAPI32_H
9 #define __ADVAPI32_H
10 
11 /* INCLUDES ******************************************************************/
12 
13 /* C Headers */
14 #include <limits.h>
15 #include <stdio.h>
16 
17 /* PSDK/NDK Headers */
18 #define WINE_STRICT_PROTOTYPES
19 #define WIN32_NO_STATUS
20 #define WIN32_LEAN_AND_MEAN
21 #define _INC_WINDOWS
22 #define COM_NO_WINDOWS_H
23 #define _WMI_SOURCE_
24 #include <aclapi.h>
25 #include <winsafer.h>
26 #define NTOS_MODE_USER
27 #include <ndk/iofuncs.h>
28 #include <ndk/obfuncs.h>
29 #include <ndk/psfuncs.h>
30 #include <ndk/rtlfuncs.h>
31 #include <ndk/sefuncs.h>
32 
33 /* this has to go after the NDK when being used with the NDK */
34 #include <ntsecapi.h>
35 
36 #include <services/services.h>
37 #include <svcctl_c.h>
38 #include <winreg_c.h>
39 
40 #include <wine/debug.h>
41 #include <wine/unicode.h>
42 
43 #include "wine/crypt.h"
44 
45 #ifndef HAS_FN_PROGRESSW
46 #define FN_PROGRESSW FN_PROGRESS
47 #endif
48 #ifndef HAS_FN_PROGRESSA
49 #define FN_PROGRESSA FN_PROGRESS
50 #endif
51 
52 /* logon.c */
53 
54 NTSTATUS
55 CloseLogonLsaHandle(VOID);
56 
57 /* rpc.c */
58 
59 RPC_STATUS EvtBindRpc(LPCWSTR pszMachine,
60                       RPC_BINDING_HANDLE* BindingHandle);
61 RPC_STATUS EvtUnbindRpc(RPC_BINDING_HANDLE *BindingHandle);
62 
63 BOOL
64 EvtGetLocalHandle(RPC_BINDING_HANDLE *BindingHandle);
65 RPC_STATUS EvtUnbindLocalHandle(void);
66 
67 /* scm.c */
68 DWORD
69 ScmRpcStatusToWinError(RPC_STATUS Status);
70 
71 /* Interface to ntmarta.dll **************************************************/
72 
73 typedef struct _NTMARTA
74 {
75     HINSTANCE hDllInstance;
76 
77     /* 2CC */PVOID LookupAccountTrustee;
78     /* 2D0 */PVOID LookupAccountName;
79     /* 2D4 */PVOID LookupAccountSid;
80     /* 2D8 */PVOID SetEntriesInAList;
81     /* 2DC */PVOID ConvertAccessToSecurityDescriptor;
82     /* 2E0 */PVOID ConvertSDToAccess;
83     /* 2E4 */PVOID ConvertAclToAccess;
84     /* 2E8 */PVOID GetAccessForTrustee;
85     /* 2EC */PVOID GetExplicitEntries;
86     /* 2F0 */
87     DWORD (WINAPI *RewriteGetNamedRights)(LPWSTR pObjectName,
88                                            SE_OBJECT_TYPE ObjectType,
89                                            SECURITY_INFORMATION SecurityInfo,
90                                            PSID* ppsidOwner,
91                                            PSID* ppsidGroup,
92                                            PACL* ppDacl,
93                                            PACL* ppSacl,
94                                            PSECURITY_DESCRIPTOR* ppSecurityDescriptor);
95 
96     /* 2F4 */
97     DWORD (WINAPI *RewriteSetNamedRights)(LPWSTR pObjectName,
98                                            SE_OBJECT_TYPE ObjectType,
99                                            SECURITY_INFORMATION SecurityInfo,
100                                            PSECURITY_DESCRIPTOR pSecurityDescriptor);
101 
102     /*2F8*/
103     DWORD (WINAPI *RewriteGetHandleRights)(HANDLE handle,
104                                             SE_OBJECT_TYPE ObjectType,
105                                             SECURITY_INFORMATION SecurityInfo,
106                                             PSID* ppsidOwner,
107                                             PSID* ppsidGroup,
108                                             PACL* ppDacl,
109                                             PACL* ppSacl,
110                                             PSECURITY_DESCRIPTOR* ppSecurityDescriptor);
111 
112     /* 2FC */
113     DWORD (WINAPI *RewriteSetHandleRights)(HANDLE handle,
114                                             SE_OBJECT_TYPE ObjectType,
115                                             SECURITY_INFORMATION SecurityInfo,
116                                             PSECURITY_DESCRIPTOR pSecurityDescriptor);
117 
118     /* 300 */
119     DWORD (WINAPI *RewriteSetEntriesInAcl)(ULONG cCountOfExplicitEntries,
120                                             PEXPLICIT_ACCESS_W pListOfExplicitEntries,
121                                             PACL OldAcl,
122                                             PACL* NewAcl);
123 
124     /* 304 */
125     DWORD (WINAPI *RewriteGetExplicitEntriesFromAcl)(PACL pacl,
126                                                       PULONG pcCountOfExplicitEntries,
127                                                       PEXPLICIT_ACCESS_W* pListOfExplicitEntries);
128 
129     /* 308 */
130     DWORD (WINAPI *TreeResetNamedSecurityInfo)(LPWSTR pObjectName,
131                                                 SE_OBJECT_TYPE ObjectType,
132                                                 SECURITY_INFORMATION SecurityInfo,
133                                                 PSID pOwner,
134                                                 PSID pGroup,
135                                                 PACL pDacl,
136                                                 PACL pSacl,
137                                                 BOOL KeepExplicit,
138                                                 FN_PROGRESSW fnProgress,
139                                                 PROG_INVOKE_SETTING ProgressInvokeSetting,
140                                                 PVOID Args);
141     /* 30C */
142     DWORD (WINAPI *GetInheritanceSource)(LPWSTR pObjectName,
143                                           SE_OBJECT_TYPE ObjectType,
144                                           SECURITY_INFORMATION SecurityInfo,
145                                           BOOL Container,
146                                           GUID** pObjectClassGuids,
147                                           DWORD GuidCount,
148                                           PACL pAcl,
149                                           PFN_OBJECT_MGR_FUNCTS pfnArray,
150                                           PGENERIC_MAPPING pGenericMapping,
151                                           PINHERITED_FROMW pInheritArray);
152 
153     /* 310 */
154     DWORD (WINAPI *FreeIndexArray)(PINHERITED_FROMW pInheritArray,
155                                     USHORT AceCnt,
156                                     PFN_OBJECT_MGR_FUNCTS pfnArray  OPTIONAL);
157 } NTMARTA, *PNTMARTA;
158 
159 #define AccLookupAccountTrustee NtMartaStatic.LookupAccountTrustee
160 #define AccLookupAccountName NtMartaStatic.LookupAccountName
161 #define AccLookupAccountSid NtMartaStatic.LookupAccountSid
162 #define AccSetEntriesInAList NtMartaStatic.SetEntriesInAList
163 #define AccConvertAccessToSecurityDescriptor NtMartaStatic.ConvertAccessToSecurityDescriptor
164 #define AccConvertSDToAccess NtMartaStatic.ConvertSDToAccess
165 #define AccConvertAclToAccess NtMartaStatic.ConvertAclToAccess
166 #define AccGetAccessForTrustee NtMartaStatic.GetAccessForTrustee
167 #define AccGetExplicitEntries NtMartaStatic.GetExplicitEntries
168 #define AccRewriteGetNamedRights NtMartaStatic.RewriteGetNamedRights
169 #define AccRewriteSetNamedRights NtMartaStatic.RewriteSetNamedRights
170 #define AccRewriteGetHandleRights NtMartaStatic.RewriteGetHandleRights
171 #define AccRewriteSetHandleRights NtMartaStatic.RewriteSetHandleRights
172 #define AccRewriteSetEntriesInAcl NtMartaStatic.RewriteSetEntriesInAcl
173 #define AccRewriteGetExplicitEntriesFromAcl NtMartaStatic.RewriteGetExplicitEntriesFromAcl
174 #define AccTreeResetNamedSecurityInfo NtMartaStatic.TreeResetNamedSecurityInfo
175 #define AccGetInheritanceSource NtMartaStatic.GetInheritanceSource
176 #define AccFreeIndexArray NtMartaStatic.FreeIndexArray
177 
178 extern NTMARTA NtMartaStatic;
179 
180 DWORD CheckNtMartaPresent(VOID);
181 
182 /* heap allocation helpers */
183 static void *heap_alloc( size_t len ) __WINE_ALLOC_SIZE(1);
184 static inline void *heap_alloc( size_t len )
185 {
186     return HeapAlloc( GetProcessHeap(), 0, len );
187 }
188 
189 static inline BOOL heap_free( void *mem )
190 {
191     return HeapFree( GetProcessHeap(), 0, mem );
192 }
193 
194 #endif /* __ADVAPI32_H */
195