Example #1
0
        public override void Signal(ulong address, ulong size, bool write)
        {
            _tracking.ProtectVirtualRegion(this, MemoryPermission.ReadAndWrite); // Remove our protection immedately.

            foreach (var handle in Handles)
            {
                handle.Signal(address, size, write);
            }
        }
Example #2
0
        /// <summary>
        /// Updates the protection for this virtual region, and all child physical regions.
        /// </summary>
        public void UpdateProtection()
        {
            // Re-evaluate protection for all physical children.

            _tracking.ProtectVirtualRegion(this, GetRequiredPermission());
            lock (_tracking.TrackingLock)
            {
                foreach (var child in _physicalChildren)
                {
                    child.UpdateProtection();
                }
            }
        }
Example #3
0
        /// <summary>
        /// Updates the protection for this virtual region.
        /// </summary>
        public bool UpdateProtection()
        {
            MemoryPermission permission = GetRequiredPermission();

            if (_lastPermission != permission)
            {
                _tracking.ProtectVirtualRegion(this, permission);
                _lastPermission = permission;

                return(true);
            }

            return(false);
        }
Example #4
0
 /// <summary>
 /// Updates the protection for this virtual region.
 /// </summary>
 public void UpdateProtection()
 {
     _tracking.ProtectVirtualRegion(this, GetRequiredPermission());
 }