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