private byte *HandleNullPte(long position) { long key = position >> PtPageBits; if (_observedPages.TryGetValue(key, out IntPtr ptr)) { return((byte *)ptr + (position & PageMask)); } InvalidAccess?.Invoke(this, new InvalidAccessEventArgs(position)); throw new VmmPageFaultException(position); }
private byte *HandleNullPte(long Position) { long Key = Position >> PTPageBits; if (ObservedPages.TryGetValue(Key, out IntPtr Ptr)) { return((byte *)Ptr + (Position & PageMask)); } InvalidAccess?.Invoke(this, new AInvalidAccessEventArgs(Position)); throw new VmmPageFaultException(Position); }
private byte *HandleNullPteWrite(long position) { long key = position >> PageBits; MemoryAccessEventArgs e = new MemoryAccessEventArgs(position); if (_observedPages.TryGetValue(key, out IntPtr ptr)) { SetPtEntry(position, (byte *)ptr); ObservedAccess?.Invoke(this, e); return((byte *)ptr + (position & PageMask)); } InvalidAccess?.Invoke(this, e); throw new VmmPageFaultException(position); }