Beispiel #1
0
        public void EnumModules(DebugEnumModulesDelegate callback)
        {
            var debugInfo = this.GetDebugInformation();

            if (debugInfo.Modules == IntPtr.Zero)
                throw new InvalidOperationException("Module information does not exist.");

            MemoryRegion modulesInfo = new MemoryRegion(debugInfo.Modules);
            var modules = modulesInfo.ReadStruct<RtlProcessModules>();

            for (int i = 0; i < modules.NumberOfModules; i++)
            {
                var module = modulesInfo.ReadStruct<RtlProcessModuleInformation>(RtlProcessModules.ModulesOffset, i);

                if (!callback(new ModuleInformation(module)))
                    break;
            }
        }
        /// <summary>
        /// Enumerates module information.
        /// </summary>
        /// <param name="callback">The callback for the enumeration.</param>
        public void EnumModules(DebugEnumModulesDelegate callback)
        {
            RtlDebugInformation debugInfo = this.GetDebugInformation();

            if (debugInfo.Modules == IntPtr.Zero)
            {
                throw new InvalidOperationException("Module information does not exist.");
            }

            MemoryRegion      modulesInfo = new MemoryRegion(debugInfo.Modules);
            RtlProcessModules modules     = modulesInfo.ReadStruct <RtlProcessModules>();

            for (int i = 0; i < modules.NumberOfModules; i++)
            {
                var module = modulesInfo.ReadStruct <RtlProcessModuleInformation>(RtlProcessModules.ModulesOffset, RtlProcessModuleInformation.SizeOf, i);

                if (!callback(new ModuleInformation(module)))
                {
                    break;
                }
            }
        }