diff --git a/reactos/lib/advapi32/advapi32.def b/reactos/lib/advapi32/advapi32.def index d8e0c37cc35..05130e5b246 100644 --- a/reactos/lib/advapi32/advapi32.def +++ b/reactos/lib/advapi32/advapi32.def @@ -242,8 +242,8 @@ GetCurrentHwProfileW@4 ;GetEffectiveRightsFromAclA@12 ;GetEffectiveRightsFromAclW@12 ;GetEventLogInformation -;GetExplicitEntriesFromAclA@12 -;GetExplicitEntriesFromAclW@12 +GetExplicitEntriesFromAclA@12=ADVAPI32.GetExplicitEntriesFromAclW +GetExplicitEntriesFromAclW@12 GetFileSecurityA@20 GetFileSecurityW@20 ;GetInformationCodeAuthzLevelW diff --git a/reactos/lib/advapi32/advapi32.h b/reactos/lib/advapi32/advapi32.h index 52d039e2b6e..0f7bb07d66d 100644 --- a/reactos/lib/advapi32/advapi32.h +++ b/reactos/lib/advapi32/advapi32.h @@ -67,7 +67,10 @@ typedef struct _NTMARTA PACL OldAcl, PACL* NewAcl); - PVOID RewriteGetExplicitEntriesFromAcl; + DWORD (STDCALL *RewriteGetExplicitEntriesFromAcl)(PACL pacl, + PULONG pcCountOfExplicitEntries, + PEXPLICIT_ACCESS_W* pListOfExplicitEntries); + PVOID TreeResetNamedSecurityInfo; DWORD (STDCALL *GetInheritanceSource)(LPWSTR pObjectName, diff --git a/reactos/lib/advapi32/sec/ac.c b/reactos/lib/advapi32/sec/ac.c index dc8b8be5ff7..f476b840f67 100644 --- a/reactos/lib/advapi32/sec/ac.c +++ b/reactos/lib/advapi32/sec/ac.c @@ -669,4 +669,30 @@ SetEntriesInAclA( } +/* + * @implemented + */ +DWORD +STDCALL +GetExplicitEntriesFromAclW( + PACL pacl, + PULONG pcCountOfExplicitEntries, + PEXPLICIT_ACCESS_W* pListOfExplicitEntries + ) +{ + DWORD ErrorCode; + + ErrorCode = CheckNtMartaPresent(); + if (ErrorCode == ERROR_SUCCESS) + { + /* call the MARTA provider */ + ErrorCode = AccRewriteGetExplicitEntriesFromAcl(pacl, + pcCountOfExplicitEntries, + pListOfExplicitEntries); + } + + return ErrorCode; +} + + /* EOF */ diff --git a/reactos/lib/advapi32/sec/misc.c b/reactos/lib/advapi32/sec/misc.c index 2095f89a89f..c746520e11c 100644 --- a/reactos/lib/advapi32/sec/misc.c +++ b/reactos/lib/advapi32/sec/misc.c @@ -59,8 +59,8 @@ LoadAndInitializeNtMarta(VOID) FindNtMartaProc(RewriteGetHandleRights); FindNtMartaProc(RewriteSetHandleRights); FindNtMartaProc(RewriteSetEntriesInAcl); -#if 0 FindNtMartaProc(RewriteGetExplicitEntriesFromAcl); +#if 0 FindNtMartaProc(TreeResetNamedSecurityInfo); #endif FindNtMartaProc(GetInheritanceSource); diff --git a/reactos/lib/ntmarta/ntmarta.c b/reactos/lib/ntmarta/ntmarta.c index ef45520abe9..60aeae3d916 100644 --- a/reactos/lib/ntmarta/ntmarta.c +++ b/reactos/lib/ntmarta/ntmarta.c @@ -158,6 +158,21 @@ AccFreeIndexArray(PINHERITED_FROMW pInheritArray, } +/********************************************************************** + * AccRewriteGetExplicitEntriesFromAcl EXPORTED + * + * @unimplemented + */ +DWORD STDCALL +AccRewriteGetExplicitEntriesFromAcl(PACL pacl, + PULONG pcCountOfExplicitEntries, + PEXPLICIT_ACCESS_W* pListOfExplicitEntries) +{ + UNIMPLEMENTED; + return ERROR_CALL_NOT_IMPLEMENTED; +} + + BOOL STDCALL DllMain(IN HINSTANCE hinstDLL, IN DWORD dwReason, diff --git a/reactos/lib/ntmarta/ntmarta.def b/reactos/lib/ntmarta/ntmarta.def index c20f151ca6c..91bc4aa9e0d 100644 --- a/reactos/lib/ntmarta/ntmarta.def +++ b/reactos/lib/ntmarta/ntmarta.def @@ -4,7 +4,7 @@ EXPORTS AccFreeIndexArray@12 AccGetInheritanceSource@40 ;AccProvHandleGrantAccessRights; -;AccRewriteGetExplicitEntriesFromAcl +AccRewriteGetExplicitEntriesFromAcl@12 AccRewriteGetHandleRights@32 AccRewriteGetNamedRights@32 AccRewriteSetEntriesInAcl@16