<bug>
- The timer implementation uses a bitmap to store window-less timers. As an optimization to find the first free index, it uses the variable "HintIndex" which points to the first timer index. In order to find the next free index, the RtlFindClearBitsAndSet function is used. When a new timer is allocated, the "HintIndex" variable is increased, which increases the search offset. Now if more than NUM_WINDOW_LESS_TIMERS (1024) timers are allocated, no more timers can be allocated because RtlFindClearBitsAndSet will claim no more index are available, because the free indexes are below the search offset.
</bug>
<fix>
Everytime a timer gets freed, store the freed index in "HintIndex". As a result the timer implementation will always find a free timer index (when there is one)
</fix>
svn path=/trunk/; revision=47069
- Store correct bus and slot information in resource lists that we give in response to IRP_MN_QUERY_RESOURCES and IRP_MN_QUERY_RESOURCE_REQUIREMENTS
- Fixes bug 4354
svn path=/trunk/; revision=47068
- Fix RtlWalkFrameChain to do usermode back traces for threads that are not system threads. Also use _SEH2_YIELD when leaving the SEH block.
svn path=/trunk/; revision=47066
- When calling NtUserCallNextHookEx check that the current hook is not the first in the chain. If so don't call the hook proc and just return, as it has already been called and it makes no sense for the NextHook function to call the first hook proc. Fixes bugs #4461 and #4407.
- The previous commit claiming to fix bug #4461 was incorrect, it may have actually fixed bug #5320. Testers please test.
svn path=/trunk/; revision=47065
- Fix a horrible casting bug
- EventCategoryData1 is a pointer to a GUID not a pointer to a UNICODE_STRING
- Convert the GUID into a UNICODE_STRING properly by using RtlStringFromGUID and pass that string to RtlCompareUnicodeString
- Fix another bug which results in us sending EventCategoryHardwareProfileChange and EventCategoryTargetDeviceChange events to everyone registered for PnP notifications
- Fixes sending EventCategoryDeviceInterfaceChange notifications that happen after calling IoRegisterPlugPlayNotification
svn path=/trunk/; revision=47064
- angle rounding for lines and polygons when SHIFT key is pressed
- equal width and height for (rounded) rectangles and ellipses when SHIFT key is pressed
Based on a patch by Katayama Hirofumi, see #5285
svn path=/trunk/; revision=47062
- Comment out the service installation for VBE and VGA so the configuration set in first-stage won't get overwritten
- Nasty graphical glitches still remain in VGA mode
- Fixes bug 2073 and bug 4192
svn path=/trunk/; revision=47061
- On backtraces, print the address of the call instruction (assumed 5 bytes lentgh) instead of the return address, which in many cases does not make sense. (WinDbg does it this way, too)
- Fix Ke386SaveFpuState to store the fpu state in the buffer, but in the pointer to the buffer
- Anable Ke386SaveFpuState to save the floating point state in KiNpxHandler and KiTrap13Handler, so we know what error we got.
- Disable saving debug registers in the trap frame, as long as the kernel doesn't support this
- Fixes ntdll_winetest exception / OllyDbg freeze/reboot
See issue #5301 for more details.
svn path=/trunk/; revision=47060
- Fix a problem where application that used WH_CBT hook procedures were receiving destroy window notification on windows that were never created. The window was never created because the application had returned a non zero value when it was notified of window creation, which effectively destroys the window and returns failure for window creation. See CBTProc Function on MSDN. Fixes bug #4461.
svn path=/trunk/; revision=47059
- Do not do callbacks to user mode while holding a lock
- Fix when WH_MOUSE_LL and WH_JOURNALRECORD are called
See issue #4926 for more details.
svn path=/trunk/; revision=47058
- Rewrite IoOpenDeviceInterfaceRegistryKey using the same helper function that is used in IoGetDeviceInterfaces and IoSetDeviceInterfaceState to reduce complexity and chance of bugs (tested and confirmed working)
- Revert r46748
- Fixes bug #5321 (AC97)
svn path=/trunk/; revision=47057
- Fix buffer size calculation for the parser.
- Do not try to execute an empty registry instruction
Patches by Roel Messiant.
- Stop the parser at the first NULL character.
Patch by me.
svn path=/trunk/; revision=47053
- Remove the useless function MachDiskNormalizeSystemPath
- Rewrite DiskGetBootPath to be much less hacky (but still not hack free)
- Freeloader doesn't have to be installed on multi(0)disk(0)rdisk(0)partition(1) (IDE primary master) anymore :)
- Freeloader successfully booted ROS after loading itself from multi(0)disk(0)rdisk(1)partition(1)
svn path=/trunk/; revision=47052
- Set the partition count to 0 for a floppy drive so it can be told apart from a cd-rom drive
- Add a last-chance sector size detection algorithm based on the partition number
- Add the same detection code to the xbox code too (it is essentially the same as what was already there just with more comments)
- Change DiskNormalizeSystemPath so it doesn't try to "normalize" a floppy boot path
- Fixes bug #5233
svn path=/trunk/; revision=47051
- Use newinflib instead of inflib.
- Pass the user-selected language to the inf parser.
- Convert registry code from ANSI APIs to UNICODE APIs.
ATTENTION: This commit might break the build bot because it was not tested on a Linux system.
svn path=/trunk/; revision=47037
- Create a helper function named OpenRegistryHandlesFromSymbolicLink which opens handles to various paths associated with a symbolic link
- Store the Linked value in IoSetDeviceInterfaceState
- Implement checking if an interface is enabled by reading the Linked value
- Interfaces reported from IoGetDeviceInterfaces are only active ones now (unless the caller explicitly says that they want disabled ones too)
svn path=/trunk/; revision=47029
- Revert r46682
- The NULL terminator is not supposed to be included in the length
- Fixes corruption when printing the symbolic link
svn path=/trunk/; revision=47028
- Rewrite harderror handling.
The old code was a monster function, leaking memory, using ansi rather than unicode strings and not getting this right. It was also vulnerable to attacks, making csrss crash, when corrupt parameters were sent.
svn path=/trunk/; revision=47027
- Add support for reading the hosts file
- Fix an off-by-one error which prevented reading the last value in the services file
- Fixes bug 4410 and bug 4880
svn path=/trunk/; revision=47020
- Use newinflib instead of inflib.
- Add RegDeleteKeyW stub.
- Convert registry generation code from ANSI APIs to UNICODE APIs.
ATTENTION: This commit might break the build bot because it was not tested on a Linux system.
svn path=/trunk/; revision=47019
Add a UNICODE-aware version of the inflib library.
It is not used by other components yet but usetup and mkhive will use it in the future.
ATTENTION: This commit might break the build bot because I could not test a build on a Linux system.
svn path=/trunk/; revision=47016
- Create a modeless syssetup dialog so we can explicitly ignore intermediate WM_CLOSE messages (modal property sheets handle them automatically)
See issue #4960 for more details.
svn path=/trunk/; revision=47011