Geoff Chappell - Software Analyst
SKETCH OF HOW RESEARCH MIGHT CONTINUE AND RESULTS BE PRESENTED
The OB_SECURITY_METHOD type is a pointer to a routine that can be defined for all objects of the same type. It is specified as the SecurityProcedure member of the OBJECT_TYPE_INITIALIZER structure when creating the object type. It is then retained in this structure as nested into the OBJECT_TYPE structure.
The modern declaration dates from version 6.0:
typedef
NTSTATUS
(*OB_SECURITY_METHOD) (
PVOID Object,
SECURITY_OPERATION_CODE OperationCode,
SECURITY_INFORMATION *SecurityInformation,
PSECURITY_DESCRIPTOR SecurityDescriptor,
ULONG *CapturedLength,
PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
POOL_TYPE PoolType,
GENERIC_MAPPING *GenericMapping,
KPROCESSOR_MODE Mode);
in versions 5.1 to 5.2, the function has one fewer argument:
typedef
NTSTATUS
(*OB_SECURITY_METHOD) (
PVOID Object,
SECURITY_OPERATION_CODE OperationCode,
SECURITY_INFORMATION *SecurityInformation,
PSECURITY_DESCRIPTOR SecurityDescriptor,
ULONG *CapturedLength,
PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
POOL_TYPE PoolType,
GENERIC_MAPPING *GenericMapping);
in earlier versions, two of the arguments are not yet defined formally as enumerations:
typedef
NTSTATUS
(*OB_SECURITY_METHOD) (
PVOID Object,
INT OperationCode,
SECURITY_INFORMATION *SecurityInformation,
PSECURITY_DESCRIPTOR SecurityDescriptor,
ULONG *CapturedLength,
PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
INT PoolType,
GENERIC_MAPPING *GenericMapping);