示例#1
0
 internal unsafe KernelObjectType(OBJECT_TYPE_INFORMATION *info)
 {
     Index               = info->TypeIndex;
     Name                = new string(info->TypeName.Buffer, 0, info->TypeName.Length / 2);
     GenericMapping      = new GenericMapping(&info->GenericMapping);
     InvalidAttributes   = info->InvalidAttributes;
     NumberOfHandles     = info->TotalNumberOfHandles;
     NumberOfObjects     = info->TotalNumberOfObjects;
     ValidAccessMask     = info->ValidAccessMask;
     PeakNumberOfHandles = info->HighWaterNumberOfHandles;
     PeakNumberOfObjects = info->HighWaterNumberOfObjects;
 }
        internal unsafe static NativeObjectType FromTypeInformation(OBJECT_TYPE_INFORMATION *info)
        {
            var name = info->TypeName.ToString();

            if (_types.TryGetValue(name, out var type))
            {
                return(type);
            }

            type = new NativeObjectType(info, name);
            _types.Add(name, type);
            return(type);
        }
 unsafe private NativeObjectType(OBJECT_TYPE_INFORMATION *info, string name = null)
 {
     NumberOfHandles           = info->TotalNumberOfHandles;
     NumberOfObjects           = info->TotalNumberOfObjects;
     Name                      = name ?? info->TypeName.ToString();
     TotalPagedPoolUsage       = info->TotalPagedPoolUsage;
     TotalNonPagedPoolUsage    = info->TotalNonPagedPoolUsage;
     PoolType                  = info->PoolType;
     GenericMapping            = new GenericMapping(&info->GenericMapping);
     PeakHandleTableUsage      = info->HighWaterHandleTableUsage;
     PeakNumberOfHandles       = info->HighWaterNumberOfHandles;
     PeakNumberOfObjects       = info->HighWaterNumberOfObjects;
     PeakNonPagedPoolUsage     = info->HighWaterNonPagedPoolUsage;
     PeakPagedPoolUsage        = info->HighWaterPagedPoolUsage;
     TotalNamePoolUsage        = info->TotalNamePoolUsage;
     PeakNamePoolUsage         = info->HighWaterNamePoolUsage;
     DefaultPagedPoolCharge    = info->DefaultPagedPoolCharge;
     DefaultNonPagedPoolCharge = info->DefaultNonPagedPoolCharge;
 }