Commit Graph

273 Commits

Author SHA1 Message Date
Alexandre Julliard 02e2fa7798 ntdll: Implementation of inter-process NtMapViewOfSection and NtUnmapViewOfSection. 2007-01-18 15:17:51 +01:00
Alexandre Julliard c122260b9d ntdll: Implemented NtLockVirtualMemory and NtUnlockVirtualMemory. 2007-01-16 09:50:08 +01:00
Alexandre Julliard 5a1ad74a67 ntdll: Implementation of inter-process NtFlushVirtualMemory. 2007-01-15 22:31:07 +01:00
Alexandre Julliard 1ea968016f ntdll: Implementation of inter-process VirtualProtectEx. 2007-01-15 22:30:04 +01:00
Alexandre Julliard 3d00239586 ntdll: Implementation of inter-process VirtualQueryEx. 2007-01-15 22:28:42 +01:00
Alexandre Julliard 7a00142bc1 ntdll: Implementation of inter-process VirtualAllocEx and VirtualFreeEx. 2007-01-15 22:27:40 +01:00
Alexandre Julliard 146fb0de02 ntdll: Make the virtual.c critical section uninterruptible by signals.
Based on a patch by Thomas Kho.
2007-01-12 20:15:52 +01:00
Alexandre Julliard 3c55f78f52 ntdll: Fix handling of 64-bit sizes in NtMapViewOfSection. 2007-01-12 15:01:44 +01:00
Alexandre Julliard 4cbe867a85 ntdll: Duplicate the mapping handle on the server side for NtMapViewOfSection. 2007-01-12 14:55:31 +01:00
Alexandre Julliard 5bd513640b ntdll: Moved the check for removable file in load_dll to the server. 2007-01-12 14:42:43 +01:00
Alexandre Julliard 9fed1205ca ntdll: File positions should be aligned to sector boundaries in PE loader. 2006-12-21 12:34:44 +01:00
Alexandre Julliard e5477b35f4 ntdll: Fixed typo in map_image. 2006-12-20 12:31:20 +01:00
Alexandre Julliard 3dc21d387b ntdll: Map the PE header up to the specified size, and clear the rest of the page. 2006-12-13 16:04:49 +01:00
Alexandre Julliard 94ac989534 ntdll: Fix the failing loader tests. 2006-12-07 15:34:36 +01:00
Alexandre Julliard 822be6c90f ntdll: Force exec permissions on all mmaps unless the app is marked NX-compatible. 2006-12-05 15:42:29 +01:00
Alexandre Julliard 8385f137b5 ntdll: Don't free the DOS area when a broken app passes a NULL pointer to NtFreeVirtualMemory. 2006-12-01 11:38:52 +01:00
Alexandre Julliard 83ce958793 ntdll: Store the fd type in the cache and return it in server_get_unix_fd. 2006-11-20 14:15:06 +01:00
Francois Gouget 30e44c85c8 Assorted spelling fixes. 2006-11-07 15:25:24 +01:00
Alexandre Julliard 9ddb9294da ntdll: Added a server_get_unix_fd function that avoids doing a dup() of the fd when not required. 2006-11-03 11:38:44 +01:00
Hans Leidekker f7b0ba7aa7 ntdll: Win64 printf format warning fixes. 2006-10-18 12:35:26 +02:00
Robert Shearman c88bbd8092 ntdll: NtAllocateVirtual with type of MEM_WRITE_WATCH fails with STATUS_NOT_SUPPORTED on Win2000 instead of STATUS_INVALID_PARAMETER. 2006-09-28 11:55:45 +02:00
Alexandre Julliard f114ba119c ntdll: Use the right section size when setting protections.
Use the same size computation when setting section protections than
when mapping it in the first place (reported by Nicholas Miell).
2006-07-30 09:59:46 +02:00
Alexandre Julliard 6c9ade0529 ntdll: Allocate the PEB with NtAllocateVirtualMemory too. 2006-07-24 15:19:32 +02:00
Alexandre Julliard cc297050f9 ntdll: Support memory allocations inside reserved areas. 2006-07-24 14:00:19 +02:00
Alexandre Julliard c060cdbc14 ntdll: Propagate the MEM_TOP_DOWN flag into the map_view() function. 2006-07-24 13:59:44 +02:00
Alexandre Julliard 0c453bc7c6 ntdll: Use NtAllocateVirtualMemory to allocate all TEBs except the first one. 2006-07-21 20:20:30 +02:00
Alexandre Julliard 2cb0f43224 kernel: Added support for exec'ing a new Win32 process.
Use it to restart execution if the main binary can't be loaded because
of address space conflicts, and also for Win16/DOS support.
2006-07-19 14:12:58 +02:00
Alexandre Julliard c79cf02fae ntdll: Make sure to not unmap anything from reserved areas
when using NtFreeVirtualMemory with the MEM_SYSTEM flag.
2006-07-13 20:47:07 +02:00
Alexandre Julliard bb63a325d7 ntdll: Use the map_view() function to allocate TEBs, now that it supports an arbitrary granularity. 2006-07-13 20:38:31 +02:00
Alexandre Julliard 8f47bd0306 ntdll: Support for arbitrary memory allocation granularity. 2006-07-13 20:36:41 +02:00
Dmitry Timoshkov 0042ad4fc7 ntdll: Compile VIRTUAL_Dump only when somebody really needs it. 2006-06-20 20:39:17 +02:00
Francois Gouget f248440dd4 ntdll: Use page_size instead of page_mask+1. 2006-06-16 11:31:51 +02:00
Robert Shearman 850ae994c6 ntdll: Change the test for no relocation information to use the
IMAGE_FILE_RELOCS_STRIPPED flag instead of a zero sized relocations
section.

This fixes loading of resource-only DLLs that have a load-address of 
0x400000.
2006-06-14 13:37:25 +02:00
Jonathan Ernst 360a3f9142 Update the address of the Free Software Foundation. 2006-05-23 14:11:13 +02:00
Marcus Meissner 08c2555dd8 ntdll: Make the section with AddressOfEntryPoint in it executable. 2006-05-09 12:47:25 +02:00
Detlef Riekenberg 44aab2e23f ntdll: Added ARM architecture. 2006-04-08 15:49:24 +02:00
Alexandre Julliard 959bbf8b75 server: Get rid of alignment requirements in write_process_memory request.
All the alignment handling is now done in the write_process_memory
function inside the server.
2006-04-07 18:41:58 +02:00
Alexandre Julliard 18d7980fd8 ntdll: Limit header_size to the file size. 2006-03-27 21:29:46 +02:00
Alexandre Julliard 7bd0cdafc2 ntdll: Use PROT_NONE instead of 0. 2006-02-24 11:31:24 +01:00
Francois Gouget f8ed165609 ntdll: Protect sys/stat.h inclusion. 2006-02-07 21:17:45 +01:00
Alexandre Julliard eca9e4449c ntdll: Round PE header size to a page boundary for size checks. 2006-01-13 13:52:07 +01:00
Alexandre Julliard 9eae2d714d ntdll: Round up the mapping size in map_file_into_view when setting
the protection bytes.
2006-01-11 20:59:07 +01:00
Alexandre Julliard 67f29999a3 ntdll: Check file size when mapping image sections to avoid SIGBUS errors. 2006-01-03 17:39:23 +01:00
Alexandre Julliard efffa66330 ntdll: Don't use a real guard page at the bottom of the stack.
A no-access page is enough, we can't properly raise an overflow
exception anyway.
2005-12-17 18:47:03 +01:00
Alexandre Julliard 354e7700b3 ntdll: Fixes in virtual memory protection flags.
Tweak reporting of virtual protection flags and address space limit to
yield results closer to what Windows does.
2005-12-14 12:17:59 +01:00
Alexandre Julliard f3dad37ba2 TEB.StackLimit should not include the guard page. 2005-12-12 17:28:32 +01:00
Alexandre Julliard 59797f292e Pass specific access rights to wine_server_handle_to_fd. 2005-12-12 17:15:26 +01:00
Vitaliy Margolen 348a3d912b Move mapping (section) objects into directory name space. 2005-12-02 16:13:13 +01:00
Alexandre Julliard cb56bdf884 Check for need to add area to the reserved list also on unmap. 2005-12-01 18:44:04 +01:00
Alexandre Julliard e3ef6314fd Ignore the large address space flag when version is win9x. 2005-12-01 18:42:39 +01:00
Ge van Geldorp 1a1583a364 Match PSDK STATUS_* definitions. 2005-11-28 17:32:54 +01:00
Vitaliy Margolen a996000ad5 - Send whole OBJECT_ATTRIBUTES.Attributes to the server not just an
inherit flag.
- Pass DesiredAccess to the server when creating mailslot.
2005-10-27 18:30:37 +00:00
Francois Gouget baab789ce8 Replace the 'if (!cond) ; else code' construct with the standard 'do {
code } while (0)' construct combined with a regular 'if'.
2005-09-26 09:57:38 +00:00
Alexandre Julliard 9f859692f9 Replace DPRINTF by TRACE in a few places. 2005-09-25 15:23:21 +00:00
Alexandre Julliard 489c6b3865 Ignore relocations for unmapped pages. 2005-09-21 09:47:12 +00:00
Alexandre Julliard 06ea6e6e3f Fixed a few pointer truncation bugs for 64-bit platforms. 2005-09-16 18:54:19 +00:00
Alexandre Julliard fb9cead92b Support arbitrary sizes for the thread signal stack, and set the
default size from the MINSIGSTKSZ constant.
2005-09-14 10:36:58 +00:00
Alexandre Julliard 261e376495 Fixed a number of pointer to integer conversions that wouldn't work
right on a 64-bit platform.
2005-09-12 15:14:06 +00:00
Alexandre Julliard 22a5332661 Added descriptions for a few more machine types. 2005-09-09 10:42:42 +00:00
Alexandre Julliard 20a1a203c6 Use a more portable scheme for storing the name of a critical
section.
2005-09-09 10:19:44 +00:00
Alexandre Julliard 0f41df1681 Use FILE_GetDeviceInfo in NtMapViewOfSection to avoid having to fetch
the file descriptor twice.
2005-08-25 10:23:23 +00:00
Alexandre Julliard 4ebd2fc0ff Better handling of conflicting section information between
SizeOfRawData and VirtualSize.
2005-08-15 14:50:06 +00:00
Alexandre Julliard 8c375c7fd4 Don't map data beyond the virtual size of a section. 2005-08-12 11:21:45 +00:00
Alexandre Julliard 9f32a5c865 Added a VIRTUAL_alloc_teb function to allocate TEBs while making sure
they don't end up above the address space limit.
2005-08-09 10:43:47 +00:00
Dmitry Timoshkov 40dd77bf5a Make VIRTUAL_HandleFault return an NTSTATUS. 2005-07-15 11:43:09 +00:00
Dmitry Timoshkov 1dc18952ae Use SIZE_T type for size variables in NTDLL when appropriate. 2005-07-15 10:01:30 +00:00
Felix Nawothnig db6a238f28 Replace stubs for information classes in NtQueryVirtualMemory and
NtQueryInformationProcess by more descriptive messages.
2005-07-05 14:05:58 +00:00
Vitaliy Margolen b2e74c3047 Load all dll sections no matter what attributes say. 2005-07-02 10:50:42 +00:00
Mike McCormack 6b636e3e7b Use RTL_CRITICAL_SECTION instead of CRITICAL_SECTION. 2005-06-25 18:00:57 +00:00
Alexandre Julliard f724399f60 Add PAGE_GUARD flag to the returned protection of guard pages. 2005-06-21 20:23:02 +00:00
Mike McCormack 04f9f1b066 Don't include winbase.h or winerror.h when not necessary. 2005-06-21 09:52:40 +00:00
Mike McCormack 5b2d5fd758 Use HANDLE instead of HKEY in the NT API. 2005-06-17 13:58:33 +00:00
Alexandre Julliard bd000a0203 Removed some unnecessary inclusions of thread.h 2005-06-06 20:13:08 +00:00
Mike McCormack cc4ed1322a Use LIST_FOR_EACH_ENTRY in virtual memory code. 2005-05-23 09:51:02 +00:00
Dimi Paun 88fe1ff962 Make the argument comments out-of-line. 2005-05-18 09:45:12 +00:00
Alexandre Julliard 3b843d3e7d Remove all traces of the VIRTUAL_SetFaultHandler support. 2005-04-20 16:26:23 +00:00
Troy Rollo 95fe6abcb7 Fix SEGVs in NtCreateSection and NtMapViewOfSection. 2005-04-19 10:31:28 +00:00
Ivan Leo Puoti d3edafe1e2 Replace GetCurrentProcess() with NtCurrentProcess() in ntdll. 2005-02-22 19:33:50 +00:00
Gerald Pfeifer 57e00da29e Fix format string in NtQueryVirtualMemory(). 2005-01-24 11:25:41 +00:00
Hans Leidekker fccfcbf7ba Stub implementations for EnumPageFiles{A,W}, GetProcessImageFileName{A,W}.
Implement GetPerformanceInfo, GetProcessMemoryInfo on top of
NtQueryInformationProcess and GetWsChanges, QueryWorkingSet{,Ex} on
top of NtQueryVirtualMemory.
2005-01-20 19:59:48 +00:00
Alexandre Julliard 646ab89f0a Support mapping non page-aligned binaries for SEC_IMAGE mappings. 2005-01-04 12:04:06 +00:00
Peter Chapman 505dfdefb5 Fix up several inline assembler blocks so that they produce correct
code with the -fomit-frame-pointer gcc flag.
2004-12-02 18:19:25 +00:00
Robert Shearman 2050591370 Fix NtAllocateVirtualMemory declaration and fix users of the
function.
2004-10-11 20:59:06 +00:00
Alexander Yaworsky aadffd1f35 Moved TRACEs to the beginning of functions. 2004-09-22 04:03:10 +00:00
Alexander Yaworsky 8657ad8704 Make RtlCreateUserThread fail if process handle is not for the current
process.
2004-09-21 00:23:50 +00:00
Alexandre Julliard 6a27b48895 Fd type is no longer used, get rid of it. 2004-08-18 00:04:58 +00:00
Alexandre Julliard 38affc4097 We no longer need to make the import directory writable, the loader
takes care of that now.
2004-06-22 03:02:35 +00:00
Alexandre Julliard fd9792bdc9 Added support for the IMAGE_FILE_LARGE_ADDRESS_AWARE flag. 2004-06-18 00:26:57 +00:00
Eric Pouech db52588754 Const correctness. 2004-06-15 00:47:00 +00:00
Alexandre Julliard dc4d05690e Don't rely on the reserved area list being empty in reserve_area,
since the preloader will need to add things to the list before
startup.
2004-05-28 03:48:09 +00:00
Alexandre Julliard 94d74b5fed Added support for managing reserved memory areas in libwine and ntdll.
Try to reserve everything above 0x80000000 on startup.
2004-05-25 01:29:24 +00:00
Alexandre Julliard eb04fd22f8 Converted the memory views list to use the standard functions from
wine/list.h.
Restructured some functions to always return proper NT status codes.
A couple of optimizations.
Added a few tests for file mappings.
2004-05-21 20:58:44 +00:00
Alexandre Julliard 670711ef25 Handle file mappings on removable media entirely inside ntdll. 2004-04-06 23:13:47 +00:00
Alexandre Julliard a2ce4ea325 Fixed some potential races in the handling of the view structures. 2004-04-06 20:16:51 +00:00
Mike Hearn 4d2cfee1fa Improve message given on image map failure. 2004-03-15 20:06:50 +00:00
Dmitry Timoshkov cba227bcec Write section access also assumes read access. 2004-02-17 20:22:43 +00:00
Dmitry Timoshkov fcc2fe18a4 Avoid double checking free type flags in NtFreeVirtualMemory. 2004-02-11 23:56:52 +00:00
Alexandre Julliard 2ad864dc87 Don't request PROT_EXEC permissions when mapping an image file to
avoid problems on noexec filesystems with kernel 2.6.
2004-02-11 06:37:49 +00:00
Dmitry Timoshkov f323d5d31b Add a test case for Virtual* APIs, fix a few bugs discovered by it. 2004-02-09 20:58:16 +00:00
Alexandre Julliard 36241ceda4 Added memory constraint to avoid miscompilation of the unaligned_mmap
function (with help from Paul Streitman).
2004-01-30 22:59:34 +00:00
Ge van Geldorp 399901e054 Rename LARGE_INTEGER and ULARGE_INTEGER members "s" to "u" to conform
with PSDK.
2004-01-23 01:51:33 +00:00
Alexandre Julliard 94d5531e6f Check for overlapping memory views and delete the offending view if
necessary, to ensure we never have two views covering the same
address.
2004-01-16 04:52:17 +00:00
Alexandre Julliard af542075e7 Don't use constructors for ntdll and kernel32 initialization. 2004-01-07 04:50:11 +00:00
Dimitrie O. Paun 2eaefbd1a4 Move content of global.h into the appropriate private headers. 2003-12-08 21:58:55 +00:00
Alexandre Julliard f3f435ffa1 Added wine_server_release_fd function to release the fd returned by
wine_server_handle_to_fd. Fixed a couple of potential fd leaks.
2003-12-01 23:01:12 +00:00
Alexandre Julliard dfe1df6408 Make sure the protection flags on the memory view of the PE header
match the actual mmap protection.
2003-11-11 22:06:59 +00:00
Alexandre Julliard 7924f421e9 Allocate the TEB and signal stack separately from the main stack.
Dynamically allocate the initial TEB too so that it is properly
page-aligned.
2003-11-04 04:50:18 +00:00
Alexandre Julliard 7fcc737faa Fixed type and protection values returned by NtQueryVirtualMemory to
be closer to what Windows does.
Allow using MEM_SYSTEM without MEM_RESERVE to avoid 64k alignment.
Use pread instead of lseek+read when faking mmap.
2003-11-03 22:21:55 +00:00
Alexandre Julliard 8824c38e9e Simplified signal stack allocation a bit, and avoid allocating it on
non-i386 platforms.
2003-10-22 03:26:53 +00:00
Pavel Roskin 3ec73af37f Include ntdll_misc.h to get the GetCurrentProcess/ThreadId macros. 2003-10-08 19:11:08 +00:00
Alexandre Julliard af192f83b6 Store a "removable" flag instead of the full drive type in the server
file object; this way we don't need to use GetDriveTypeW in the loader
code.
Make sure we always have a valid builtin_load_info pointer.
2003-10-08 00:25:32 +00:00
Alexandre Julliard e37c6e18d0 Fixed header dependencies to be fully compatible with the Windows
headers (with help from Dimitrie O. Paun).
2003-09-05 23:08:26 +00:00
Alexandre Julliard 7df1b9e03a Start using the exported TEB structure from winternl.h where
possible.
2003-08-28 19:57:35 +00:00
Alexandre Julliard 02f2813968 Renamed a few TEB fields to use the "official" names. 2003-08-27 23:14:29 +00:00
Alexandre Julliard 19b6a49845 Allocate DebugInfo field for all critical sections (based on a patch
by Alex Pasadyn).
Get rid of the Wine-specific CRITICAL_SECTION_INIT macro.
2003-08-12 23:50:54 +00:00
Alexandre Julliard 4f4b980c1e Implemented NtRead/WriteVirtualMemory. 2003-07-08 21:18:45 +00:00
Eric Pouech 415dfa63e5 Fixed section mapping in PE loading when both
IMAGE_SCN_CNT_UNINITIALIZED_DATA and IMAGE_SCN_CNT_INITIALIZED_DATA
are set.
2003-06-21 02:02:27 +00:00
Alexandre Julliard c808e67da1 Fixed wrong file offset used when mapping the import directory from a
shared section.
2003-05-08 03:50:32 +00:00
Alexandre Julliard 54f59e5005 Added comment about why changing ADDRESS_SPACE_LIMIT is wrong. 2003-05-06 18:52:43 +00:00
Dimitrie O. Paun 297f3d898d Define NONAMELESS{STRUCT,UNION} explicitly in the files that need them. 2003-01-07 20:36:20 +00:00
Andrew John Hughes ed800c69c8 Build ntdll with -DSTRICT. 2002-11-21 03:45:01 +00:00
Alexandre Julliard ac36f95082 Disable address space limit check on non-i386 platforms. 2002-11-06 22:33:17 +00:00
Alexandre Julliard 341b7dceb4 Implemented the ntdll virtual memory functions, and made the kernel
functions use them.
2002-09-17 18:54:42 +00:00