@@ -417,6 +417,15 @@ public bool IsValidAccess(AccessMask access_mask)
417417 return ( GenericMapping . MapMask ( access_mask ) & ~ ValidAccess ) . IsEmpty ;
418418 }
419419
420+ /// <summary>
421+ /// Get the maximum access mask for the types default mandatory access policy.
422+ /// </summary>
423+ /// <returns>The allowed access mask for the type with the default policy.</returns>
424+ public AccessMask GetDefaultMandatoryAccess ( )
425+ {
426+ return GenericMapping . GetAllowedMandatoryAccess ( _type_factory . DefaultMandatoryPolicy ) ;
427+ }
428+
420429 /// <summary>
421430 /// Overridden ToString method.
422431 /// </summary>
@@ -441,13 +450,13 @@ public NtType(string name)
441450 {
442451 }
443452
444- internal NtType ( string name , GenericMapping generic_mapping , Type access_rights_type , Type container_access_rights_type )
453+ internal NtType ( string name , GenericMapping generic_mapping , Type access_rights_type , Type container_access_rights_type , MandatoryLabelPolicy default_policy )
445454 {
446455 if ( ! access_rights_type . IsEnum )
447456 {
448457 throw new ArgumentException ( "Specify an enumerated type" , "access_rights_type" ) ;
449458 }
450- _type_factory = new NtTypeFactory ( access_rights_type , container_access_rights_type , typeof ( object ) , false ) ;
459+ _type_factory = new NtTypeFactory ( access_rights_type , container_access_rights_type , typeof ( object ) , false , default_policy ) ;
451460 Name = name ;
452461 ValidAccess = CalculateValidAccess ( access_rights_type ) | CalculateValidAccess ( container_access_rights_type ) ;
453462 GenericMapping = generic_mapping ;
@@ -659,7 +668,7 @@ public static NtType GetTypeByType<T>() where T : NtObject
659668 /// <returns>The fake NT type object.</returns>
660669 public static NtType GetFakeType ( string name , GenericMapping generic_mapping , Type access_rights_type , Type container_access_rights_type )
661670 {
662- return new NtType ( name , generic_mapping , access_rights_type , container_access_rights_type ) ;
671+ return new NtType ( name , generic_mapping , access_rights_type , container_access_rights_type , MandatoryLabelPolicy . NoWriteUp ) ;
663672 }
664673
665674 /// <summary>
@@ -690,7 +699,9 @@ public static NtType GetFakeType(string name, GenericMapping generic_mapping, Ty
690699 public static NtType GetFakeType ( string name , AccessMask generic_read , AccessMask generic_write ,
691700 AccessMask generic_exec , AccessMask generic_all , Type access_rights_type , Type container_access_rights_type )
692701 {
693- return new NtType ( name , new GenericMapping ( ) { GenericRead = generic_read , GenericWrite = generic_write , GenericExecute = generic_exec , GenericAll = generic_all } , access_rights_type , container_access_rights_type ) ;
702+ return new NtType ( name , new GenericMapping ( ) { GenericRead = generic_read , GenericWrite = generic_write ,
703+ GenericExecute = generic_exec , GenericAll = generic_all } , access_rights_type , container_access_rights_type ,
704+ MandatoryLabelPolicy . NoWriteUp ) ;
694705 }
695706
696707 /// <summary>
0 commit comments