Пример #1
0
        protected T ReadSerializedObject <T>(int offset, NativeSerializeData data) where T : MemoryWrapper, new()
        {
            if (!IsValid)
            {
                return(default(T));
            }

            var item = Create <T>(BaseAddress + offset);

            item.SetSerializationInfo(BaseAddress, data);
            item.ParentAddress = BaseAddress;
            return(item);
        }
Пример #2
0
        protected List <T> ReadSerializedObjects <T>(int offset, NativeSerializeData serializeData, IntPtr serializeBase = default(IntPtr)) where T : MemoryWrapper, new()
        {
            if (!IsValid)
            {
                return(null);
            }
            try
            {
                var type = typeof(T);
                if (type == typeof(MemoryWrapper) || type.IsSubclassOf(typeof(MemoryWrapper)))
                {
                    var size = TypeUtil <T> .SizeOf;
                    if (size == 0)
                    {
                        Core.Logger.Error($"ReadSerializedObjects was unable to get a size for {type.Name}");
                    }

                    if (serializeBase == IntPtr.Zero)
                    {
                        if (BaseSerializationAddress != IntPtr.Zero)
                        {
                            serializeBase = BaseSerializationAddress;
                        }
                        else if (ParentAddress != IntPtr.Zero)
                        {
                            serializeBase = ParentAddress;
                        }
                        else
                        {
                            serializeBase = BaseAddress;
                        }
                    }

                    var count     = serializeData.Length / size;
                    var container = new List <T>();
                    for (int i = 0; i < count; i++)
                    {
                        var item = Create <T>(serializeBase + serializeData.Offset + i * size);
                        item.SetSerializationInfo(serializeBase, serializeData);
                        container.Add(item);
                    }
                    return(container);
                }
            }
            catch (Exception ex)
            {
                Core.Logger.Log($"Memory ReadSerializedObjects Exception. {ex.ToLogString(Environment.StackTrace)}");
            }
            return(default(List <T>));
        }
Пример #3
0
 protected string ReadSerializedString(int offset, NativeSerializeData serializeData)
 {
     if (!IsValid)
     {
         return(string.Empty);
     }
     try
     {
         return(Encoding.UTF8.GetString(ZetaDia.Memory.ReadBytes(BaseSerializationAddress + serializeData.Offset, serializeData.Length)).Trim('\0'));
     }
     catch (Exception ex)
     {
         Core.Logger.Log($"Memory ReadString Exception. {ex.ToLogString(Environment.StackTrace)}");
     }
     return(string.Empty);
 }
Пример #4
0
 public void SetSerializationInfo(IntPtr address, NativeSerializeData info)
 {
     BaseSerializationAddress = address;
     BaseSeralizationInfo     = info;
 }