示例#1
0
        /// <summary>
        /// Unmap a section in a specified process.
        /// </summary>
        /// <param name="process">The process to unmap the section.</param>
        /// <param name="base_address">The base address to unmap.</param>
        /// <param name="flags">Flags for unmapping memory.</param>
        /// <param name="throw_on_error">True to throw on error.</param>
        /// <returns>The NT status code.</returns>
        public static NtStatus Unmap(NtProcess process, IntPtr base_address, MemUnmapFlags flags, bool throw_on_error)
        {
            if (flags == MemUnmapFlags.None)
            {
                return(NtSystemCalls.NtUnmapViewOfSection(process.Handle, base_address).ToNtException(throw_on_error));
            }

            return(NtSystemCalls.NtUnmapViewOfSectionEx(process.Handle, base_address, flags).ToNtException(throw_on_error));
        }
示例#2
0
 /// <summary>
 /// Unmap a section in a specified process.
 /// </summary>
 /// <param name="process">The process to unmap the section.</param>
 /// <param name="base_address">The base address to unmap.</param>
 /// <param name="flags">Flags for unmapping memory.</param>
 public static void Unmap(NtProcess process, IntPtr base_address, MemUnmapFlags flags)
 {
     Unmap(process, base_address, flags, true);
 }
 public static extern NtStatus NtUnmapViewOfSectionEx(
     SafeKernelObjectHandle ProcessHandle,
     IntPtr BaseAddress,
     MemUnmapFlags Flags
     );