Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }