1 /* $Id: ac.c,v 1.4 2002/09/08 10:22:37 chorns Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/advapi32/sec/ac.c
6 * PURPOSE: ACL/ACE functions
10 #include <ntdll/rtl.h>
20 LPVOID pAclInformation
,
21 DWORD nAclInformationLength
,
22 ACL_INFORMATION_CLASS dwAclInformationClass
27 Status
= RtlQueryInformationAcl (pAcl
,
29 nAclInformationLength
,
30 dwAclInformationClass
);
31 if (!NT_SUCCESS(Status
))
33 SetLastError (RtlNtStatusToDosError (Status
));
44 GetAuditedPermissionsFromAclA (
46 IN PTRUSTEE_A pTrustee
,
47 OUT PACCESS_MASK pSuccessfulAuditedRights
,
48 OUT PACCESS_MASK pFailedAuditRights
51 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
58 GetAuditedPermissionsFromAclW (
60 IN PTRUSTEE_W pTrustee
,
61 OUT PACCESS_MASK pSuccessfulAuditedRights
,
62 OUT PACCESS_MASK pFailedAuditRights
65 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
72 GetEffectiveRightsFromAclA (
74 IN PTRUSTEE_A pTrustee
,
75 OUT PACCESS_MASK pAccessRights
78 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
85 GetEffectiveRightsFromAclW (
87 IN PTRUSTEE_W pTrustee
,
88 OUT PACCESS_MASK pAccessRights
91 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
98 GetExplicitEntriesFromAclA (
100 OUT PULONG pcCountOfExplicitEntries
,
101 OUT PEXPLICIT_ACCESS_A
* pListOfExplicitEntries
104 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
111 GetExplicitEntriesFromAclW (
113 OUT PULONG pcCountOfExplicitEntries
,
114 OUT PEXPLICIT_ACCESS_W
* pListOfExplicitEntries
117 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
133 Status
= RtlCreateAcl (pAcl
,
136 if (!NT_SUCCESS(Status
))
138 SetLastError (RtlNtStatusToDosError (Status
));
152 return RtlValidAcl (pAcl
);
160 LPVOID pAclInformation
,
161 DWORD nAclInformationLength
,
162 ACL_INFORMATION_CLASS dwAclInformationClass
167 Status
= RtlSetInformationAcl (pAcl
,
169 nAclInformationLength
,
170 dwAclInformationClass
);
171 if (!NT_SUCCESS(Status
))
173 SetLastError (RtlNtStatusToDosError (Status
));
185 IN ULONG cCountOfExplicitEntries
,
186 IN PEXPLICIT_ACCESS_A pListOfExplicitEntries
,
191 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
199 IN ULONG cCountOfExplicitEntries
,
200 IN PEXPLICIT_ACCESS_W pListOfExplicitEntries
,
205 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
216 AddAccessAllowedAce (
225 Status
= RtlAddAccessAllowedAce (pAcl
,
229 if (!NT_SUCCESS(Status
))
231 SetLastError (RtlNtStatusToDosError (Status
));
250 Status
= RtlAddAccessDeniedAce (pAcl
,
254 if (!NT_SUCCESS(Status
))
256 SetLastError (RtlNtStatusToDosError (Status
));
269 DWORD dwStartingAceIndex
,
276 Status
= RtlAddAce (pAcl
,
281 if (!NT_SUCCESS(Status
))
283 SetLastError (RtlNtStatusToDosError (Status
));
298 WINBOOL bAuditSuccess
,
299 WINBOOL bAuditFailure
304 Status
= RtlAddAuditAccessAce (pAcl
,
310 if (!NT_SUCCESS(Status
))
312 SetLastError (RtlNtStatusToDosError (Status
));
329 Status
= RtlDeleteAce (pAcl
,
331 if (!NT_SUCCESS(Status
))
333 SetLastError (RtlNtStatusToDosError (Status
));
348 return RtlFirstFreeAce (pAcl
,
363 Status
= RtlGetAce (pAcl
,
366 if (!NT_SUCCESS(Status
))
368 SetLastError (RtlNtStatusToDosError (Status
));