Exemplo n.º 1
0
        public override DbgEngineModule CreateModule <T>(DbgAppDomain appDomain, DbgInternalModule internalModule, bool isExe, ulong address, uint size, DbgImageLayout imageLayout, string name, string filename, bool isDynamic, bool isInMemory, bool?isOptimized, int order, DateTime?timestamp, string version, DbgEngineMessageFlags messageFlags, T data, Action <DbgEngineModule> onCreated)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(DbgObjectFactoryImpl));
            }
            var module = new DbgModuleImpl(runtime, VerifyOptionalAppDomain(appDomain), internalModule, isExe, address, size, imageLayout, name, filename, isDynamic, isInMemory, isOptimized, order, timestamp, version);

            if (data != null)
            {
                module.GetOrCreateData(() => data);
            }
            var engineModule = new DbgEngineModuleImpl(module);

            onCreated?.Invoke(engineModule);
            owner.Dispatcher.BeginInvoke(() => owner.AddModule_DbgThread(runtime, module, messageFlags));
            return(engineModule);
        }
Exemplo n.º 2
0
 public DbgModuleImpl(DbgRuntimeImpl runtime, DbgAppDomainImpl appDomain, DbgInternalModule internalModule, bool isExe, ulong address, uint size, DbgImageLayout imageLayout, string name, string filename, bool isDynamic, bool isInMemory, bool?isOptimized, int order, DateTime?timestamp, string version)
 {
     lockObj          = new object();
     this.runtime     = runtime ?? throw new ArgumentNullException(nameof(runtime));
     this.appDomain   = appDomain;
     InternalModule   = internalModule ?? throw new ArgumentNullException(nameof(internalModule));
     this.isExe       = isExe;
     this.address     = address;
     this.size        = size;
     this.imageLayout = imageLayout;
     this.name        = name;
     this.filename    = filename;
     this.isDynamic   = isDynamic;
     this.isInMemory  = isInMemory;
     this.isOptimized = isOptimized;
     this.order       = order;
     this.timestamp   = timestamp?.ToUniversalTime();
     this.version     = version;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Creates a module. The engine has paused the program.
 /// </summary>
 /// <param name="appDomain">New <see cref="DbgModule.AppDomain"/> value</param>
 /// <param name="internalModule">Module object created by the debug engine</param>
 /// <param name="isExe">New <see cref="DbgModule.IsExe"/> value</param>
 /// <param name="address">New <see cref="DbgModule.Address"/> value</param>
 /// <param name="size">New <see cref="DbgModule.Size"/> value</param>
 /// <param name="imageLayout">New <see cref="DbgModule.ImageLayout"/> value</param>
 /// <param name="name">New <see cref="DbgModule.Name"/> value</param>
 /// <param name="filename">New <see cref="DbgModule.Filename"/> value</param>
 /// <param name="isDynamic">New <see cref="DbgModule.IsDynamic"/> value</param>
 /// <param name="isInMemory">New <see cref="DbgModule.IsInMemory"/> value</param>
 /// <param name="isOptimized">New <see cref="DbgModule.IsOptimized"/> value</param>
 /// <param name="order">New <see cref="DbgModule.Order"/> value</param>
 /// <param name="timestamp">New <see cref="DbgModule.Timestamp"/> value</param>
 /// <param name="version">New <see cref="DbgModule.Version"/> value</param>
 /// <param name="messageFlags">Message flags</param>
 /// <returns></returns>
 public DbgEngineModule CreateModule(DbgAppDomain appDomain, DbgInternalModule internalModule, bool isExe, ulong address, uint size, DbgImageLayout imageLayout, string name, string filename, bool isDynamic, bool isInMemory, bool?isOptimized, int order, DateTime?timestamp, string version, DbgEngineMessageFlags messageFlags) =>
 CreateModule <object>(appDomain, internalModule, isExe, address, size, imageLayout, name, filename, isDynamic, isInMemory, isOptimized, order, timestamp, version, messageFlags, null, null);
Exemplo n.º 4
0
 /// <summary>
 /// Creates a module. The engine has paused the program.
 /// </summary>
 /// <typeparam name="T">Type of data</typeparam>
 /// <param name="appDomain">New <see cref="DbgModule.AppDomain"/> value</param>
 /// <param name="internalModule">Module object created by the debug engine</param>
 /// <param name="isExe">New <see cref="DbgModule.IsExe"/> value</param>
 /// <param name="address">New <see cref="DbgModule.Address"/> value</param>
 /// <param name="size">New <see cref="DbgModule.Size"/> value</param>
 /// <param name="imageLayout">New <see cref="DbgModule.ImageLayout"/> value</param>
 /// <param name="name">New <see cref="DbgModule.Name"/> value</param>
 /// <param name="filename">New <see cref="DbgModule.Filename"/> value</param>
 /// <param name="isDynamic">New <see cref="DbgModule.IsDynamic"/> value</param>
 /// <param name="isInMemory">New <see cref="DbgModule.IsInMemory"/> value</param>
 /// <param name="isOptimized">New <see cref="DbgModule.IsOptimized"/> value</param>
 /// <param name="order">New <see cref="DbgModule.Order"/> value</param>
 /// <param name="timestamp">New <see cref="DbgModule.Timestamp"/> value</param>
 /// <param name="version">New <see cref="DbgModule.Version"/> value</param>
 /// <param name="messageFlags">Message flags</param>
 /// <param name="data">Data to add to the <see cref="DbgModule"/> or null if nothing gets added</param>
 /// <param name="onCreated">Called right after creating the module but before adding it to internal data structures. This can be null.</param>
 /// <returns></returns>
 public abstract DbgEngineModule CreateModule <T>(DbgAppDomain appDomain, DbgInternalModule internalModule, bool isExe, ulong address, uint size, DbgImageLayout imageLayout, string name, string filename, bool isDynamic, bool isInMemory, bool?isOptimized, int order, DateTime?timestamp, string version, DbgEngineMessageFlags messageFlags, T data, Action <DbgEngineModule> onCreated = null) where T : class;