implemented GetInheritanceSource and FreeInheritedFromArray and forward them to the MARTA provider

svn path=/trunk/; revision=16807
This commit is contained in:
Thomas Bluemel 2005-07-27 18:24:18 +00:00
parent a3b5b6b8a8
commit d04a2e183c
5 changed files with 95 additions and 14 deletions

View file

@ -69,8 +69,21 @@ typedef struct _NTMARTA
PVOID RewriteGetExplicitEntriesFromAcl; PVOID RewriteGetExplicitEntriesFromAcl;
PVOID TreeResetNamedSecurityInfo; 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; } NTMARTA, *PNTMARTA;
#define AccLookupAccountTrustee NtMartaStatic.LookupAccountTrustee #define AccLookupAccountTrustee NtMartaStatic.LookupAccountTrustee

View file

@ -435,7 +435,7 @@ GetAce (
/* /*
* @unimplemented * @implemented
*/ */
DWORD DWORD
STDCALL STDCALL
@ -452,8 +452,25 @@ GetInheritanceSourceW (
PINHERITED_FROMW pInheritArray PINHERITED_FROMW pInheritArray
) )
{ {
DPRINT1("%s() not implemented!\n", __FUNCTION__); DWORD ErrorCode;
return ERROR_CALL_NOT_IMPLEMENTED;
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 @@ GetInheritanceSourceA (
PINHERITED_FROM pInheritArray PINHERITED_FROM pInheritArray
) )
{ {
DPRINT1("%s() not implemented!\n", __FUNCTION__); /* That's all this function does, at least up to w2k3... Even MS was too
return ERROR_CALL_NOT_IMPLEMENTED; lazy to implement it... */
return ERROR_CALL_NOT_IMPLEMENTED;
} }
/* /*
* @unimplemented * @implemented
*/ */
DWORD DWORD
STDCALL STDCALL
FreeInheritedFromArray ( FreeInheritedFromArray (
PINHERITED_FROM pInheritArray, PINHERITED_FROMW pInheritArray,
USHORT AceCnt, USHORT AceCnt,
PFN_OBJECT_MGR_FUNCTS pfnArray OPTIONAL PFN_OBJECT_MGR_FUNCTS pfnArray OPTIONAL
) )
{ {
DPRINT1("%s() not implemented!\n", __FUNCTION__); DWORD ErrorCode;
return ERROR_CALL_NOT_IMPLEMENTED;
/* 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;
} }

View file

@ -62,9 +62,9 @@ LoadAndInitializeNtMarta(VOID)
#if 0 #if 0
FindNtMartaProc(RewriteGetExplicitEntriesFromAcl); FindNtMartaProc(RewriteGetExplicitEntriesFromAcl);
FindNtMartaProc(TreeResetNamedSecurityInfo); FindNtMartaProc(TreeResetNamedSecurityInfo);
#endif
FindNtMartaProc(GetInheritanceSource); FindNtMartaProc(GetInheritanceSource);
FindNtMartaProc(FreeIndexArray); FindNtMartaProc(FreeIndexArray);
#endif
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }

View file

@ -121,6 +121,43 @@ AccRewriteSetEntriesInAcl(ULONG cCountOfExplicitEntries,
} }
/**********************************************************************
* 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 BOOL STDCALL
DllMain(IN HINSTANCE hinstDLL, DllMain(IN HINSTANCE hinstDLL,
IN DWORD dwReason, IN DWORD dwReason,

View file

@ -1,8 +1,8 @@
LIBRARY ntmarta.dll LIBRARY ntmarta.dll
EXPORTS EXPORTS
;AccFreeIndexArray AccFreeIndexArray@12
;AccGetInheritanceSource AccGetInheritanceSource@40
;AccProvHandleGrantAccessRights; ;AccProvHandleGrantAccessRights;
;AccRewriteGetExplicitEntriesFromAcl ;AccRewriteGetExplicitEntriesFromAcl
AccRewriteGetHandleRights@32 AccRewriteGetHandleRights@32