[ADVAPI32]
[reactos.git] / reactos / dll / win32 / advapi32 / advapi32.h
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 Libary 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 WIN32_NO_STATUS
19 #define _WMI_SOURCE_
20 #include <windows.h>
21 #include <accctrl.h>
22 #include <aclapi.h>
23 #include <wmistr.h>
24 #include <evntrace.h>
25 #include <winsafer.h>
26 #include <sddl.h>
27 #define NTOS_MODE_USER
28 #include <ndk/cmfuncs.h>
29 #include <ndk/exfuncs.h>
30 #include <ndk/iofuncs.h>
31 #include <ndk/obfuncs.h>
32 #include <ndk/psfuncs.h>
33 #include <ndk/rtlfuncs.h>
34 #include <ndk/setypes.h>
35 #include <ndk/sefuncs.h>
36
37 /* this has to go after the NDK when being used with the NDK */
38 #include <ntsecapi.h>
39
40 #include <services/services.h>
41 #include "svcctl_c.h"
42 #include "lsa_c.h"
43 #include "eventlogrpc_c.h"
44
45 #include <rpc.h>
46
47 #include "crypt/crypt.h"
48 #include <wine/debug.h>
49 #include <wine/unicode.h>
50 #include <wincred.h>
51
52 #ifndef HAS_FN_PROGRESSW
53 #define FN_PROGRESSW FN_PROGRESS
54 #endif
55 #ifndef HAS_FN_PROGRESSA
56 #define FN_PROGRESSA FN_PROGRESS
57 #endif
58
59 /* sid.c */
60
61 BOOL ADVAPI_GetComputerSid(PSID sid);
62
63 /* rpc.c */
64
65 RPC_STATUS EvtBindRpc(LPCWSTR pszMachine,
66 RPC_BINDING_HANDLE* BindingHandle);
67 RPC_STATUS EvtUnbindRpc(RPC_BINDING_HANDLE *BindingHandle);
68
69 BOOL
70 EvtGetLocalHandle(RPC_BINDING_HANDLE *BindingHandle);
71 RPC_STATUS EvtUnbindLocalHandle(void);
72
73 /* scm.c */
74 DWORD
75 ScmRpcStatusToWinError(RPC_STATUS Status);
76
77 /* Interface to ntmarta.dll **************************************************/
78
79 typedef struct _NTMARTA
80 {
81 HINSTANCE hDllInstance;
82
83 /* 2CC */PVOID LookupAccountTrustee;
84 /* 2D0 */PVOID LookupAccountName;
85 /* 2D4 */PVOID LookupAccountSid;
86 /* 2D8 */PVOID SetEntriesInAList;
87 /* 2DC */PVOID ConvertAccessToSecurityDescriptor;
88 /* 2E0 */PVOID ConvertSDToAccess;
89 /* 2E4 */PVOID ConvertAclToAccess;
90 /* 2E8 */PVOID GetAccessForTrustee;
91 /* 2EC */PVOID GetExplicitEntries;
92 /* 2F0 */
93 DWORD (WINAPI *RewriteGetNamedRights)(LPWSTR pObjectName,
94 SE_OBJECT_TYPE ObjectType,
95 SECURITY_INFORMATION SecurityInfo,
96 PSID* ppsidOwner,
97 PSID* ppsidGroup,
98 PACL* ppDacl,
99 PACL* ppSacl,
100 PSECURITY_DESCRIPTOR* ppSecurityDescriptor);
101
102 /* 2F4 */
103 DWORD (WINAPI *RewriteSetNamedRights)(LPWSTR pObjectName,
104 SE_OBJECT_TYPE ObjectType,
105 SECURITY_INFORMATION SecurityInfo,
106 PSECURITY_DESCRIPTOR pSecurityDescriptor);
107
108 /*2F8*/
109 DWORD (WINAPI *RewriteGetHandleRights)(HANDLE handle,
110 SE_OBJECT_TYPE ObjectType,
111 SECURITY_INFORMATION SecurityInfo,
112 PSID* ppsidOwner,
113 PSID* ppsidGroup,
114 PACL* ppDacl,
115 PACL* ppSacl,
116 PSECURITY_DESCRIPTOR* ppSecurityDescriptor);
117
118 /* 2FC */
119 DWORD (WINAPI *RewriteSetHandleRights)(HANDLE handle,
120 SE_OBJECT_TYPE ObjectType,
121 SECURITY_INFORMATION SecurityInfo,
122 PSECURITY_DESCRIPTOR pSecurityDescriptor);
123
124 /* 300 */
125 DWORD (WINAPI *RewriteSetEntriesInAcl)(ULONG cCountOfExplicitEntries,
126 PEXPLICIT_ACCESS_W pListOfExplicitEntries,
127 PACL OldAcl,
128 PACL* NewAcl);
129
130 /* 304 */
131 DWORD (WINAPI *RewriteGetExplicitEntriesFromAcl)(PACL pacl,
132 PULONG pcCountOfExplicitEntries,
133 PEXPLICIT_ACCESS_W* pListOfExplicitEntries);
134
135 /* 308 */
136 DWORD (WINAPI *TreeResetNamedSecurityInfo)(LPWSTR pObjectName,
137 SE_OBJECT_TYPE ObjectType,
138 SECURITY_INFORMATION SecurityInfo,
139 PSID pOwner,
140 PSID pGroup,
141 PACL pDacl,
142 PACL pSacl,
143 BOOL KeepExplicit,
144 FN_PROGRESSW fnProgress,
145 PROG_INVOKE_SETTING ProgressInvokeSetting,
146 PVOID Args);
147 /* 30C */
148 DWORD (WINAPI *GetInheritanceSource)(LPWSTR pObjectName,
149 SE_OBJECT_TYPE ObjectType,
150 SECURITY_INFORMATION SecurityInfo,
151 BOOL Container,
152 GUID** pObjectClassGuids,
153 DWORD GuidCount,
154 PACL pAcl,
155 PFN_OBJECT_MGR_FUNCTS pfnArray,
156 PGENERIC_MAPPING pGenericMapping,
157 PINHERITED_FROMW pInheritArray);
158
159 /* 310 */
160 DWORD (WINAPI *FreeIndexArray)(PINHERITED_FROMW pInheritArray,
161 USHORT AceCnt,
162 PFN_OBJECT_MGR_FUNCTS pfnArray OPTIONAL);
163 } NTMARTA, *PNTMARTA;
164
165 #define AccLookupAccountTrustee NtMartaStatic.LookupAccountTrustee
166 #define AccLookupAccountName NtMartaStatic.LookupAccountName
167 #define AccLookupAccountSid NtMartaStatic.LookupAccountSid
168 #define AccSetEntriesInAList NtMartaStatic.SetEntriesInAList
169 #define AccConvertAccessToSecurityDescriptor NtMartaStatic.ConvertAccessToSecurityDescriptor
170 #define AccConvertSDToAccess NtMartaStatic.ConvertSDToAccess
171 #define AccConvertAclToAccess NtMartaStatic.ConvertAclToAccess
172 #define AccGetAccessForTrustee NtMartaStatic.GetAccessForTrustee
173 #define AccGetExplicitEntries NtMartaStatic.GetExplicitEntries
174 #define AccRewriteGetNamedRights NtMartaStatic.RewriteGetNamedRights
175 #define AccRewriteSetNamedRights NtMartaStatic.RewriteSetNamedRights
176 #define AccRewriteGetHandleRights NtMartaStatic.RewriteGetHandleRights
177 #define AccRewriteSetHandleRights NtMartaStatic.RewriteSetHandleRights
178 #define AccRewriteSetEntriesInAcl NtMartaStatic.RewriteSetEntriesInAcl
179 #define AccRewriteGetExplicitEntriesFromAcl NtMartaStatic.RewriteGetExplicitEntriesFromAcl
180 #define AccTreeResetNamedSecurityInfo NtMartaStatic.TreeResetNamedSecurityInfo
181 #define AccGetInheritanceSource NtMartaStatic.GetInheritanceSource
182 #define AccFreeIndexArray NtMartaStatic.FreeIndexArray
183
184 extern NTMARTA NtMartaStatic;
185
186 DWORD CheckNtMartaPresent(VOID);
187
188 #endif /* __ADVAPI32_H */