- Don't accept 64 bit PE files on x86 (will cause use of uninitialized variable ImageBase). CORE-9955
- Remove a pointless check in MmMapViewOfSection
svn path=/trunk/; revision=68593
Fix build on MSVC by rewriting the code in *STANDARD* C++ !! (and not into some strange idiom called "GCC-C++"). I suggest also to write a proper class for dynamically-allocated (resource) strings instead of either having the static arrays of hardcoded sizes, or being tempted to use non-standard constructs as the one I just saw.
(and btw, instead of defining a new "SIZEOF()" macro, there is one which already exists in the PSDK called "ARRAYSIZE()" which just does the correct job).
svn path=/trunk/; revision=68587
EMS:
- Introduce (and use) helpers for checking validity of EMS handles.
- Do not hardcode the EMS page frame segment, but instead allow it to be changed (for now, it is still set to a default value; in the future, via some configuration file or via the registry). This is done by acquiring a UMB block (see after).
XMS:
- Implement functions 0x01 "Request HMA" and 0x02 "Release HMA".
- Fix the return value of functions 0x04 "Global disable A20" and 0x08 "Query free Extended Memory"; simplify code of function 0x0B "Move EMB".
- Halfplement function 0x0F "Reallocate Extended Memory Block" in the simple case of size reduction (size expansion is left to the programmer as an exercise :PP )
- Rewrite the UMB provider support (functions 0x10, 0x11, 0x12) by calling the Upper Memory Area manager helpers (see after) (this is closer to reality: UMBs are either provided by XMS driver itself, or by an EMS driver which hooks into the XMS driver chain -- as it is done with MS' himem+EMM386; sometimes all that stuff is contained inside one driver only --) instead of calling back into DOS. This is the DOS which calls XMS for getting the UMB blocks and initializing them! (and not the other way around as it was done in r68001!).
NTVDM:
- Introduce an "Upper Memory Area manager" which maintains a list of areas of upper memory (>= A000:0000 and <= FFFF:000F) that can be used as RAM blocks. It is intended to work closely with the NTVDM memory manager and be used by XMS for getting possible free UMBs, and by VDDs for implementing the VDDInclude/ExcludeMem APIs (which adds/remove blocks in/from the UMB pool; those are unaccessible to DOS if those APIs are called after NTVDM have been started, but are accessible by XMS).
DOS:
- Add a helper function for detecting early DOS arena corruptions (for debugging purposes only).
- Make the DOS memory manager really UMB-compatible. This means:
* not hardcoding the start of the UMB chain;
* getting all the available UMB blocks from XMS and initializing them, marking the reserved blocks as read-only (with a correct header; reserved blocks are eg. VGA memory area, ROM blocks...).
There is room for improvements obviously (see the FIXMEs in the code). Used documentation is mentioned in comments in the code.
This commit should fix quite some apps, as well as it fixes corruptions of loaded ROMs in upper memory: that's how I came into working on fixing the UMB support. In other words, during those two last weeks, I was like in: http://i.imgur.com/zoWpqEB.gifv
CORE-9969 #resolve
svn path=/trunk/; revision=68586
- Remove some hardcoded values.
- Reshuffle again DOS initialization to better reflect how it is done in the real world (see "Advanced MS-DOS Programming" by Ray Duncan, Chapter 2 "MS-DOS in Operation"): split DOS data stuff into DOS BIOS data, and DOS kernel data areas.
In preparation for an upcoming commit.
svn path=/trunk/; revision=68585
- use optimal buffer size to load null terminated strings using LoadString
- add printing-related menu entries and dialogs (no printing functionality yet)
svn path=/trunk/; revision=68584
* Rework the WIN7_COMPAT_MODE into actually just disabling the incompatible functions, and introduce WIN7_DEBUG_MODE which does the rest of the "hacks" I used to ease development.
svn path=/trunk/; revision=68580
- When directly submitting the results to the web service, make sure to URL-encode the test log, or & signs will terminate the log and make Testman see the test as crashed (and have all other kinds of possible consequences)
svn path=/trunk/; revision=68578
- Skip user32:msg_paint test_paint_messages if running on Windows in non-interactive mode. This should allow WHS-Testbot to get a bit further
ROSTESTS-185
ONLINE-441 ROSTESTS-184
svn path=/trunk/; revision=68575
- Add support for intsafe signed Add functions
- Guard signed math in ENABLE_INTSAFE_SIGNED_FUNCTIONS
CORE-9947 #resolve
svn path=/trunk/; revision=68573
NtQuerySystemInformation:
- Windows Vista and later: Check the information class before probing the buffer.
- Pre-Vista Windows: Check the information class after probing the buffer.
- Pre-Vista Windows: Fixed the aligment check for invalid information classes.
- Pre-Vista Windows: The SystemFlagsInformation and SystemKernelDebuggerInformation classes return no required length in case of an error.
This fixes all ntdll_apitest:NtSystemInformation fails.
svn path=/trunk/; revision=68571
- move bitmap and DC initialization to ImageModel
- remove unused global variables
- remove copy-pasta bug from SelectionModel::DrawSelection
svn path=/trunk/; revision=68565
Show shutdown dialog at the logon screen if the user wants to shutdown. Patch by Jared Smudde.
CORE-9919 #resolve #comment Thanks a lot!
svn path=/trunk/; revision=68562
Add a case for VSSolution generation with VS14. It DOES NOT WORK with the cmake version we use currently, but it's better to have the error rather than generating ninja files without warning.
svn path=/trunk/; revision=68551