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