implemented GetInheritanceSource and FreeInheritedFromArray and forward them to the MARTA provider
Modified: trunk/reactos/lib/advapi32/advapi32.h
Modified: trunk/reactos/lib/advapi32/sec/ac.c
Modified: trunk/reactos/lib/advapi32/sec/misc.c
Modified: trunk/reactos/lib/ntmarta/ntmarta.c
Modified: trunk/reactos/lib/ntmarta/ntmarta.def

Modified: trunk/reactos/lib/advapi32/advapi32.h
--- trunk/reactos/lib/advapi32/advapi32.h	2005-07-27 17:20:57 UTC (rev 16806)
+++ trunk/reactos/lib/advapi32/advapi32.h	2005-07-27 18:24:18 UTC (rev 16807)
@@ -69,8 +69,21 @@
 
     PVOID RewriteGetExplicitEntriesFromAcl;
     PVOID TreeResetNamedSecurityInfo;
-    PVOID GetInheritanceSource;
-    PVOID FreeIndexArray;
+
+    DWORD (STDCALL *GetInheritanceSource)(LPWSTR pObjectName,
+                                          SE_OBJECT_TYPE ObjectType,
+                                          SECURITY_INFORMATION SecurityInfo,
+                                          BOOL Container,
+                                          GUID** pObjectClassGuids,
+                                          DWORD GuidCount,
+                                          PACL pAcl,
+                                          PFN_OBJECT_MGR_FUNCTS pfnArray,
+                                          PGENERIC_MAPPING pGenericMapping,
+                                          PINHERITED_FROMW pInheritArray);
+
+    DWORD (STDCALL *FreeIndexArray)(PINHERITED_FROMW pInheritArray,
+                                    USHORT AceCnt,
+                                    PFN_OBJECT_MGR_FUNCTS pfnArray  OPTIONAL);
 } NTMARTA, *PNTMARTA;
 
 #define AccLookupAccountTrustee NtMartaStatic.LookupAccountTrustee

Modified: trunk/reactos/lib/advapi32/sec/ac.c
--- trunk/reactos/lib/advapi32/sec/ac.c	2005-07-27 17:20:57 UTC (rev 16806)
+++ trunk/reactos/lib/advapi32/sec/ac.c	2005-07-27 18:24:18 UTC (rev 16807)
@@ -435,7 +435,7 @@
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 DWORD
 STDCALL
@@ -452,8 +452,25 @@
 	PINHERITED_FROMW	pInheritArray
 	)
 {
-	DPRINT1("%s() not implemented!\n", __FUNCTION__);
-	return ERROR_CALL_NOT_IMPLEMENTED;
+    DWORD ErrorCode;
+
+    ErrorCode = CheckNtMartaPresent();
+    if (ErrorCode == ERROR_SUCCESS)
+    {
+        /* call the MARTA provider */
+        ErrorCode = AccGetInheritanceSource(pObjectName,
+                                            ObjectType,
+                                            SecurityInfo,
+                                            Container,
+                                            pObjectClassGuids,
+                                            GuidCount,
+                                            pAcl,
+                                            pfnArray,
+                                            pGenericMapping,
+                                            pInheritArray);
+    }
+
+    return ErrorCode;
 }
 
 
@@ -475,24 +492,38 @@
 	PINHERITED_FROM		pInheritArray
 	)
 {
-	DPRINT1("%s() not implemented!\n", __FUNCTION__);
-	return ERROR_CALL_NOT_IMPLEMENTED;
+    /* That's all this function does, at least up to w2k3... Even MS was too
+       lazy to implement it... */
+    return ERROR_CALL_NOT_IMPLEMENTED;
 }
 
 
 /*
- * @unimplemented
+ * @implemented
  */
 DWORD
 STDCALL
 FreeInheritedFromArray (
-	PINHERITED_FROM		pInheritArray,
+	PINHERITED_FROMW	pInheritArray,
 	USHORT			AceCnt,
 	PFN_OBJECT_MGR_FUNCTS	pfnArray  OPTIONAL
 	)
 {
-	DPRINT1("%s() not implemented!\n", __FUNCTION__);
-	return ERROR_CALL_NOT_IMPLEMENTED;
+    DWORD ErrorCode;
+    
+    /* pfnArray is not yet used */
+    UNREFERENCED_PARAMETER(pfnArray);
+
+    ErrorCode = CheckNtMartaPresent();
+    if (ErrorCode == ERROR_SUCCESS)
+    {
+        /* call the MARTA provider */
+        ErrorCode = AccFreeIndexArray(pInheritArray,
+                                      AceCnt,
+                                      NULL);
+    }
+
+    return ErrorCode;
 }
 
 

Modified: trunk/reactos/lib/advapi32/sec/misc.c
--- trunk/reactos/lib/advapi32/sec/misc.c	2005-07-27 17:20:57 UTC (rev 16806)
+++ trunk/reactos/lib/advapi32/sec/misc.c	2005-07-27 18:24:18 UTC (rev 16807)
@@ -62,9 +62,9 @@
 #if 0
     FindNtMartaProc(RewriteGetExplicitEntriesFromAcl);
     FindNtMartaProc(TreeResetNamedSecurityInfo);
+#endif
     FindNtMartaProc(GetInheritanceSource);
     FindNtMartaProc(FreeIndexArray);
-#endif
     
     return ERROR_SUCCESS;
 }

Modified: trunk/reactos/lib/ntmarta/ntmarta.c
--- trunk/reactos/lib/ntmarta/ntmarta.c	2005-07-27 17:20:57 UTC (rev 16806)
+++ trunk/reactos/lib/ntmarta/ntmarta.c	2005-07-27 18:24:18 UTC (rev 16807)
@@ -121,6 +121,43 @@
 }
 
 
+/**********************************************************************
+ * AccRewriteSetEntriesInAcl				EXPORTED
+ *
+ * @unimplemented
+ */
+DWORD STDCALL
+AccGetInheritanceSource(LPWSTR pObjectName,
+                        SE_OBJECT_TYPE ObjectType,
+                        SECURITY_INFORMATION SecurityInfo,
+                        BOOL Container,
+                        GUID** pObjectClassGuids,
+                        DWORD GuidCount,
+                        PACL pAcl,
+                        PFN_OBJECT_MGR_FUNCTS pfnArray,
+                        PGENERIC_MAPPING pGenericMapping,
+                        PINHERITED_FROMW pInheritArray)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
+/**********************************************************************
+ * AccFreeIndexArray					EXPORTED
+ *
+ * @unimplemented
+ */
+DWORD STDCALL
+AccFreeIndexArray(PINHERITED_FROMW pInheritArray,
+                  USHORT AceCnt,
+                  PFN_OBJECT_MGR_FUNCTS pfnArray  OPTIONAL)
+{
+    UNIMPLEMENTED;
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+
 BOOL STDCALL
 DllMain(IN HINSTANCE hinstDLL,
         IN DWORD dwReason,

Modified: trunk/reactos/lib/ntmarta/ntmarta.def
--- trunk/reactos/lib/ntmarta/ntmarta.def	2005-07-27 17:20:57 UTC (rev 16806)
+++ trunk/reactos/lib/ntmarta/ntmarta.def	2005-07-27 18:24:18 UTC (rev 16807)
@@ -1,8 +1,8 @@
 LIBRARY ntmarta.dll
 
 EXPORTS
-;AccFreeIndexArray
-;AccGetInheritanceSource
+AccFreeIndexArray@12
+AccGetInheritanceSource@40
 ;AccProvHandleGrantAccessRights;
 ;AccRewriteGetExplicitEntriesFromAcl
 AccRewriteGetHandleRights@32