Fix wrong behavior of the "native applications startup at boot time" feature in SMSS.
Modifications:
- Added missing buffer allocation checks.
- Check for presence of default path.
- Minor clean-ups.
- Fix bad indentation/coding style.
Original patch by Hermès BÉLUSCA.
See issue #6180 for more details.
svn path=/trunk/; revision=53839
- Cleanup amd64 mm.h header
- Call MiScanMemoryDescriptors earlier, since it doesn't depend on anything except the loader block.
- MiComputeColorInformation() and the calculation of the pfn database size are portable, so move them out of MiInitMachineDependent
svn path=/trunk/; revision=53838
- Implement logging post messages or winevents
- For SetActiveWindow test, also test the parameters of WM_WINDOWPOSCHANGING and WM_WINDOWPOSCHANGED messages
- For TrackMouseEvent test, also test the WM_SYSTIMER that is possible to be logged now
svn path=/trunk/; revision=53830
The following modifications were made:
- Removed the help texts because they were copied from Windows Diskpart.
- Used a single string resource per help text.
- Used only Unicode strings and Unicode string functions.
- Replaced the giant if-statement in the command dispatcher in interpreter.c by a command-table and a little loop.
- Improved the command-line parser. Argument count and argument vector are passed to the command and help functions for easy evaluation.
- Moved the help function for commands into the command specific file.
TODO:
- Implement all commands as the utility is only an empty frame.
- Add help texts.
- Translate help texts.
See issue #6402 for more details.
svn path=/trunk/; revision=53826
- Session space address layout is architecture specific, move its initialization into MiInitializeSesseionSpaceLayout() in architecture specific file
- Use dedicated constants for setting MmSystemRangeStart, MmUserProbeAddress and MmHighestUserAddress isnetad of making assumptions.
svn path=/trunk/; revision=53825
Add MiScanMemoryDescriptors, that combines the work of MiPagesInLoaderBlock, the loop in MmInitializeMemoryLimits and the loop in MiInitMachineDependent.
svn path=/trunk/; revision=53822
* Bring-in some idl changes from Wine. These changes (and the related changes below) are to allow us to sync shell32 tests to Wine 1.3.29.
[UUID]
* CLSID_TaskbarList is no longer needed in here.
[ACTXPRXY]
* Sync with Wine 1.3.29.
svn path=/trunk/; revision=53820
Converting MmLargeStackSize from registry setting to byte value is portable code, move it out of MiInitMachineDependent
svn path=/trunk/; revision=53819
- Use TYPE_OF_MEMORY from the beginning instead of MEMORY_TYPE and later converting it.
- Disable tracing, accidentally comitted in previous revision
svn path=/trunk/; revision=53818
Fix some bugs in the code that deals with memory descriptors:
ArcGetMemoryDescriptor was enumerating the bios generated entries first and then the static entries. The latter were conflicting with the former and took precedence when initializing the page lookup table. The problem was, that MmFindLocationForPageLookupTable would use the highest range of pages available. If that range would be conflicting with a following static descriptor, the static would have been ignored. It only worked because on x86 the highest bios descriptor has enough free pages, before it conflicts with a static entry (page 0xfff, marked as unusable), so that the page lookup table could be created.
MmGetAddressablePageCountIncludingHoles enumerated all memory descriptors to find MmLowestPhysicalPage, but it was only counting FreeMemory, thus skipping all other memory ranges. This only worked, due to the previous bug, so that the bios pages shown first took precedence over the following static descriptors. Without the former bug MmLowestPhysicalPage would be 0x100 which would tigger in the next bug:
MmAreMemoryPagesAvailable took the passed address range and looked up all pages in the lookup table to see whether all are free. Now the function didn't check, whether the passed address was below MmLowestPhysicalPage and in case it was, happily accessed the memory below the lookup table. This would result in hal being loaded at 0x40000 overwriting the loader itself.
This is all fixe by implementing a new way of creating the memory map. First there is a static memory map, which has enough free entries to add dynamic ranges. Then AddMemoryDescriptor will allow you to add a new range,
while the already existing ranges will take precedence and the new ranges will be properly split and inserted, so that the resulting map does not contain any overlapping regions and is sorted from low to high pages. The static memory descriptor exists in the architecture specific file.
The code that enumerates the bios information now uses this function to add the ranges on top of the static descriptor.
More cleanup work to follow.
svn path=/trunk/; revision=53816
- Move shared code used to log window messages in helper.c
- Implement logging hooks
- Fix comparing the logged messages to show the correct line of the test
- Add tests for hooks in TrackMouseEvent test
svn path=/trunk/; revision=53812
- Fix several typos. Patch by Elton Chung (elton328 at gmail dot com). Slight compatibility fix by me
- Add missing NTSYSAPI to some externs
- remove Se*DefaultDacl externs from ntifs, as they don't belong there, and are already correctly found in ndk/setypes.h
svn path=/trunk/; revision=53809
- Revert part of r53788 (MAXIMUM_IDTVECTOR is a valid vector number)
- The buffer overrun in the IDT code was already fixed by r53420
svn path=/trunk/; revision=53806
- Multimodule translation and UTF-8 conversion to Portugese Brazilian. Patch by mkbu95. Minor fixes by me;
See issue #6467 for more details.
svn path=/trunk/; revision=53805
- Fix a bug, where the bios memory map could have a bogus entry: according to R.B.'s Interrupt list, in some bioses the function for enumerating the memory can return ebx != 0 for the last descriptor, and fail in the following call returning CF = 1. In that case we were previously counting that last descriptor as well, but its content wouldn't describe a valid memory region.
- Use a static buffer for the bios memory map, stored in the achitecture specific file and return a pointer to that variable from PcMemGetMemoryMap. Reuse the static map from DetectAcpiBios instead of enumerating again. On arm, we don't even need a buffer, we return the pointer from the arm block.
svn path=/trunk/; revision=53803
Patch by Brian Palmer:
Fix problems that could occur, when the BIOS returns memory regions that are not page aligned, by fixing up the bios memory map before using it.
svn path=/trunk/; revision=53797