#ifndef __TABLES_H__ #define __TABLES_H__ typedef DWORD (*FN_ADD_REF_CONTEXT) ( IN MARTA_CONTEXT Context ); FN_ADD_REF_CONTEXT MartaAddRefContext [] = { NULL, &MartaAddRefFileContext, &MartaAddRefServiceContext, &MartaAddRefPrinterContext, &MartaAddRefRegistryKeyContext, &MartaAddRefLMShareContext, &MartaAddRefKernelContext, &MartaAddRefWindowContext, &MartaAddRefDsObjectContext, &MartaAddRefDsObjectContext, NULL, &MartaAddRefWMIGuidContext, &MartaAddRefRegistryKeyContext }; typedef DWORD (*FN_CLOSE_CONTEXT) ( IN MARTA_CONTEXT Context ); FN_CLOSE_CONTEXT MartaCloseContext [] = { NULL, &MartaCloseFileContext, &MartaCloseServiceContext, &MartaClosePrinterContext, &MartaCloseRegistryKeyContext, &MartaCloseLMShareContext, &MartaCloseKernelContext, &MartaCloseWindowContext, &MartaCloseDsObjectContext, &MartaCloseDsObjectContext, NULL, &MartaCloseWMIGuidContext, &MartaCloseRegistryKeyContext }; typedef DWORD (*FN_FIND_FIRST) ( IN MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pChildContext ); FN_FIND_FIRST MartaFindFirst [] = { NULL, &MartaFindFirstFile, NULL, NULL, &MartaFindFirstRegistryKey, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &MartaFindFirstRegistryKey }; typedef DWORD (*FN_FIND_NEXT) ( IN MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pSiblingContext ); FN_FIND_NEXT MartaFindNext [] = { NULL, &MartaFindNextFile, NULL, NULL, &MartaFindNextRegistryKey, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &MartaFindNextRegistryKey }; typedef DWORD (*FN_GET_PARENT_CONTEXT) ( IN MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pParentContext ); FN_GET_PARENT_CONTEXT MartaGetParentContext [] = { NULL, &MartaGetFileParentContext, NULL, NULL, &MartaGetRegistryKeyParentContext, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &MartaGetRegistryKeyParentContext }; typedef DWORD (*FN_GET_TYPE_PROPERTIES) ( IN OUT PMARTA_OBJECT_TYPE_PROPERTIES pProperties ); FN_GET_TYPE_PROPERTIES MartaGetTypeProperties [] = { NULL, &MartaGetFileTypeProperties, &MartaGetServiceTypeProperties, &MartaGetPrinterTypeProperties, &MartaGetRegistryKeyTypeProperties, &MartaGetLMShareTypeProperties, &MartaGetKernelTypeProperties, &MartaGetWindowTypeProperties, &MartaGetDsObjectTypeProperties, &MartaGetDsObjectTypeProperties, NULL, &MartaGetWMIGuidTypeProperties, &MartaGetRegistryKeyTypeProperties }; typedef DWORD (*FN_GET_PROPERTIES) ( IN MARTA_CONTEXT Context, IN OUT PMARTA_OBJECT_PROPERTIES pProperties ); FN_GET_PROPERTIES MartaGetProperties [] = { NULL, &MartaGetFileProperties, &MartaGetServiceProperties, &MartaGetPrinterProperties, &MartaGetRegistryKeyProperties, &MartaGetLMShareProperties, &MartaGetKernelProperties, &MartaGetWindowProperties, &MartaGetDsObjectProperties, &MartaGetDsObjectProperties, NULL, &MartaGetWMIGuidProperties, &MartaGetRegistryKeyProperties }; typedef DWORD (*FN_GET_RIGHTS) ( IN MARTA_CONTEXT Context, IN SECURITY_INFORMATION SecurityInfo, OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor ); FN_GET_RIGHTS MartaGetRights [] = { NULL, &MartaGetFileRights, &MartaGetServiceRights, &MartaGetPrinterRights, &MartaGetRegistryKeyRights, &MartaGetLMShareRights, &MartaGetKernelRights, &MartaGetWindowRights, &MartaGetDsObjectRights, &MartaGetDsObjectRights, NULL, &MartaGetWMIGuidRights, &MartaGetRegistryKeyRights }; typedef DWORD (*FN_OPEN_HANDLE_OBJECT) ( IN HANDLE Handle, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pContext ); FN_OPEN_HANDLE_OBJECT MartaOpenHandleObject [] = { NULL, &MartaOpenFileHandleObject, &MartaOpenServiceHandleObject, &MartaOpenPrinterHandleObject, &MartaOpenRegistryKeyHandleObject, NULL, &MartaOpenKernelHandleObject, &MartaOpenWindowHandleObject, NULL, NULL, NULL, &MartaOpenWMIGuidHandleObject, &MartaOpenRegistryKeyHandleObject }; typedef DWORD (*FN_OPEN_NAMED_OBJECT) ( IN LPCWSTR pObjectName, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pContext ); FN_OPEN_NAMED_OBJECT MartaOpenNamedObject [] = { NULL, &MartaOpenFileNamedObject, &MartaOpenServiceNamedObject, &MartaOpenPrinterNamedObject, &MartaOpenRegistryKeyNamedObject, &MartaOpenLMShareNamedObject, &MartaOpenKernelNamedObject, &MartaOpenWindowNamedObject, &MartaOpenDsObjectNamedObject, &MartaOpenDsObjectNamedObject, NULL, &MartaOpenWMIGuidNamedObject, &MartaOpenRegistryKeyNamedObject }; typedef DWORD (*FN_SET_RIGHTS) ( IN MARTA_CONTEXT Context, IN SECURITY_INFORMATION SecurityInfo, IN PSECURITY_DESCRIPTOR pSecurityDescriptor ); FN_SET_RIGHTS MartaSetRights [] = { NULL, &MartaSetFileRights, &MartaSetServiceRights, &MartaSetPrinterRights, &MartaSetRegistryKeyRights, &MartaSetLMShareRights, &MartaSetKernelRights, &MartaSetWindowRights, &MartaSetDsObjectRights, &MartaSetDsObjectRights, NULL, &MartaSetWMIGuidRights, &MartaSetRegistryKeyRights }; typedef DWORD (*FN_GET_DESIRED_ACCESS) ( IN SECURITY_OPEN_TYPE OpenType, IN BOOL Attribs, IN SECURITY_INFORMATION SecurityInfo ); FN_GET_DESIRED_ACCESS MartaGetDesiredAccess [] = { NULL, &MartaGetFileDesiredAccess, &MartaGetDefaultDesiredAccess, &MartaGetDefaultDesiredAccess, &MartaGetRegistryKeyDesiredAccess, &MartaGetDefaultDesiredAccess, &MartaGetDefaultDesiredAccess, &MartaGetDefaultDesiredAccess, &MartaGetDefaultDesiredAccess, &MartaGetDefaultDesiredAccess, NULL, &MartaGetDefaultDesiredAccess, &MartaGetRegistryKey32DesiredAccess }; typedef DWORD (*FN_REOPEN_CONTEXT) ( IN OUT MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask ); FN_REOPEN_CONTEXT MartaReopenContext [] = { NULL, &MartaReopenFileContext, NULL, NULL, &MartaReopenRegistryKeyContext, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &MartaReopenRegistryKeyContext }; typedef DWORD (*FN_REOPEN_ORIG_CONTEXT) ( IN OUT MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask ); FN_REOPEN_CONTEXT MartaReopenOrigContext [] = { NULL, &MartaReopenFileOrigContext, NULL, NULL, &MartaReopenRegistryKeyOrigContext, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &MartaReopenRegistryKeyOrigContext }; typedef DWORD (*FN_GET_PARENT_NAME) ( IN LPWSTR ObjectName, OUT LPWSTR *pParentName ); FN_GET_PARENT_NAME MartaGetParentName [] = { NULL, &MartaGetFileParentName, NULL, NULL, &MartaGetRegistryKeyParentName, NULL, NULL, NULL, &MartaGetDsParentName, &MartaGetDsParentName, NULL, NULL, &MartaGetRegistryKeyParentName }; typedef DWORD (*FN_GET_NAME_FROM_CONTEXT) ( IN LPWSTR DosObjectName, IN LPWSTR NtObjectName, IN MARTA_CONTEXT Context, OUT LPWSTR *pObjectName ); FN_GET_NAME_FROM_CONTEXT MartaGetNameFromContext [] = { NULL, &MartaGetFileNameFromContext, NULL, NULL, &MartaGetRegistryKeyNameFromContext, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &MartaGetRegistryKeyNameFromContext }; #endif