public void Load(bool ProcessIsUM) { VirtMemImpl.PageFlags flags = ProcessIsUM ? VirtMemImpl.PageFlags.None : VirtMemImpl.PageFlags.KernelOnly; UInt32Dictionary.Iterator iterator = CodePages.GetIterator(); while (iterator.HasNext()) { UInt32Dictionary.KeyValuePair pair = iterator.Next(); uint vAddr = pair.Key; uint pAddr = pair.Value; #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Loading code page..."); #endif VirtMemManager.Map(pAddr, vAddr, 4096, flags, UpdateUsedPagesFlags.Virtual); } iterator.RestoreState(); flags = ProcessIsUM ? VirtMemImpl.PageFlags.None : VirtMemImpl.PageFlags.KernelOnly; iterator = DataPages.GetIterator(); while (iterator.HasNext()) { UInt32Dictionary.KeyValuePair pair = iterator.Next(); uint vAddr = pair.Key; uint pAddr = pair.Value; #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Loading data page..."); #endif VirtMemManager.Map(pAddr, vAddr, 4096, flags, UpdateUsedPagesFlags.Virtual); } iterator.RestoreState(); }
public void Unload() { if (NoUnload) { return; } UInt32Dictionary.Iterator iterator = CodePages.GetIterator(); while (iterator.HasNext()) { UInt32Dictionary.KeyValuePair pair = iterator.Next(); uint vAddr = pair.Key; #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Unloading code page..."); #endif VirtMemManager.Unmap(vAddr, UpdateUsedPagesFlags.Virtual); } iterator.RestoreState(); iterator = DataPages.GetIterator(); while (iterator.HasNext()) { UInt32Dictionary.KeyValuePair pair = iterator.Next(); uint vAddr = pair.Key; #if MEMLAYOUT_TRACE BasicConsole.WriteLine("Unloading data page..."); #endif VirtMemManager.Unmap(vAddr, UpdateUsedPagesFlags.Virtual); } iterator.RestoreState(); }