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