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