https://reactos.org/wiki/api.php?action=feedcontributions&user=CycleGeek&feedformat=atom
ReactOS Wiki - User contributions [en]
2024-03-19T02:04:17Z
User contributions
MediaWiki 1.31.7
https://reactos.org/wiki/index.php?title=Create_a_keyboard_layout&diff=30905
Create a keyboard layout
2012-02-27T12:32:44Z
<p>CycleGeek: /* Example */ replace rbuild with CMake</p>
<hr />
<div>The keyboard layouts are dlls loaded in kernel space. The keyboard layouts are a bit strange since the constants used in them have no standard definitions, so the keyboard files have some preprocessor cruft.<br />
You can find this stuff in the existing keyboard layouts.<br />
<br />
They have a data payload and a single entry point that returns a pointer to the keyboard tables.<br />
<br />
The structure has these members:<br />
<br />
modifiers -> modifier_keys -> zero terminated mapping from vk to mod bit<br />
<br />
ROSDATA VK_TO_BIT modifier_keys[] = {<br />
{ VK_SHIFT, KSHIFT },<br />
{ VK_CONTROL, KCTRL },<br />
{ VK_MENU, KALT },<br />
{ 0, 0 }<br />
};<br />
<br />
-> number of bit combinations listed in modifier bits<br />
6<br />
<br />
-> modifier_bits <br />
<br />
{ 0, 1, 3, 4, SHFT_INVALID, SHFT_INVALID, 2 } /* Modifier bit order, NONE, SHIFT, CTRL, ALT, MENU, SHIFT + MENU, CTRL + MENU */<br />
<br />
Each entry in this list is indexed by a shift state (some combination of bits from the modifier keys table), and tells what column in the VK_TO_WCHARS tables that shift state applies to.<br />
<br />
vk_to_wchar_master -> null terminated list of vk_to_wchar tables of varying widths. the numberpad<br />
is a special table and is listed last.<br />
<br />
Each vk_to_wchar table is identified by a width, telling how many of the columns indexed by the modifier list are present.<br />
<br />
Put the new key-to-char entry in the key_to_chars_Xmod, where X is the number of functions the key has in the particular language. The values of the columns other than column 2 are from the ISO10646 unicode standard. See the tables at http://www.unicode.org/charts/.<br />
<br />
ROSDATA VK_TO_WCHARS3 key_to_chars_3mod[] = {<br />
/* Normal, Shifted, Ctrl */<br />
/* Legacy (telnet-style) ascii escapes */<br />
{ '3', CAPS, '3', 0xa7, 0xb3 },<br />
{ '7', CAPS, '7', '/', '{' },<br />
...<br />
<br />
The virtual key '3' responds to capitalization in this language, produces:<br />
'3' unshifted (column 2)<br />
0xa7 Section sign Shifted (1) in the modifier bits<br />
0xb3 Superscript 3 Ctrl+Shift (3) in the modifier bits (Alt+Gr)<br />
<br />
<br />
== Dead Keys ==<br />
Many languages have keys on the keyboard which have more than one meaning depending on which key is pressed next. The dead key table tells which keys these are and what the outcomes will be.<br />
<br />
ROSDATA DEADKEY dead_key[] = {<br />
{ DEADTRANS(L'a', L'^', 0xE2 /* â */, 0x00) },<br />
{ DEADTRANS(L'e', L'´', 0xE9 /* é */, 0x00) }<br />
}<br />
<br />
In this language, '^' followed by 'a' yields 0xe2, "Latin small letter a with circumflex", and an acute accent plus a 'e' results in a 'e' with and acute accent. Feel free to use hexadecimal numbers in place of the real characters if you can't input the correct chars or if you are not sure whether the characters you are inserting are the correct ones. Once again, refer to the Unicode specs.<br />
<br />
Dead keys are marked in the vk_to_wchar table by a WCH_DEAD and then are searched by first and second keypress in the dead chars table.<br />
<br />
Followed in the main table by three key name tables (zero terminated)<br />
1. normal key names<br />
2. extended key names<br />
3. dead key names<br />
<br />
The tables following these are the meat of the system, scancode to virtual key translation tables.<br />
Since there are more keys in the unenhanced key table (the 'beige keys') these are listed as 0x80<br />
entries, indexed by scan code. Empty entries are marked VK_EMPTY.<br />
<br />
The e0 and e1 scan code to vk tables are zero-terminated lists of scan codes that follow the special e0 and e1 extended keyboard codes. The first column is the scan code and the second column is an 8-bit virtual key code along with any required modifier bits in the upper byte (normally KEXT). The ext-bit is used by various parts of the keyboard system (for example to distinguish left and right shift and control, and to distinguish the windows keys from the alt keys).<br />
<br />
Following these are the local flags:<br />
<br />
MAKELONG(1,1),<br />
<br />
<br />
Change the first argument to control the behavior of certain keys:<br />
<br />
1: Right Alt key is AltGr (to produce special characters on most non-US keyboards)<br />
<br />
2: Pressing SHIFT will turn off Caps Lock<br />
<br />
4: Left and right Shift keys set left-to-right/right-to-left marker<br />
<br />
Any sum of these is acceptable. Note the following:<br />
<br />
* Due to a bug in ReactOS, setting 1 has no effect at this time. However, under Windows this bit works as described, and a fix for ReactOS is under way.<br />
* Setting 2 has no effect on ReactOS (or Windows 2000 and up) as this behavior is overridden by a Control Panel setting. However, it does become important if you intend to use your keyboard layout on Windows NT 4.0 and earlier.<br />
<br />
The last lines are for ligature tables, which we don't currently support. These tables are used in languages that use scripts such as Devanagari, which have special opening character sequences for the beginning of a sentence. As far as I'm aware, languages based on Cyrillic or Roman alphabets don't use this. It would be great if somebody could help me describe this more fully.<br />
<br />
There is a list of virtual key codes available at: <br />
<br />
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp<br />
<br />
== Example ==<br />
<br />
Here's a short example of what is needed to be done to add a new keyboard layout:<br />
<br />
First make sure you have got a working build environment: http://reactos.com/wiki/index.php/Build_Environment<br />
<br />
You will need to know the correct descriptions and abbreviations for your keyboard (E.g. American English, en-US, etc).<br />
<br />
The easiest way of creating a new keyboard layout is to copy and then modify an existing layout. The existing layouts can be found in the sources under /dll/keyboard/kbd*. <br />
<br />
For the rest of this HOWTO let’s imagine we want to create a Belgian (point) keyboard layout (kbdbe.dll) based on the US keyboard layout.<br />
<br />
Copy /dll/keyboard/kbdus (the layout you're modifying) to /dll/keyboard/kbdbe.<br />
<br />
In '''/dll/keyboard/kbdbe''' rename the following files:<br />
kbdus.c to kbdbe.c<br />
kbdus.spec to kbdbe.spec<br />
kbdus.rc to kbdbe.rc<br />
<br />
Change '''kbdbe.rc''' so that it looks like this:<br />
#define REACTOS_VERSION_DLL<br />
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Belgian (point) Keyboard Layout\0"<br />
#define REACTOS_STR_INTERNAL_NAME "kbdbe\0"<br />
#define REACTOS_STR_ORIGINAL_FILENAME "kbdbe.dll\0"<br />
#include <reactos/version.rc><br />
<br />
in '''kbdbe.spec and CMakeLists.txt'''<br />
Search for kbus and change it to kbdbe<br />
<br />
in '''/dll/keyboard/CMakeLists.txt''' add your directory<br />
add_subdirectory(kbdbe)<br />
<br />
Change '''kbdbe.c''' according to the keyboard specifications (yes, this is the main part of the work)<br />
<br />
Now we want to make the new layout selectable during setup.<br />
<br />
'''bootdata/hivesys.inf'''<br />
Search for "Keyboard Layouts" and add a two-line entry for your new layout.<br />
Also add appropriate lines in the "NLS Language settings" and "Supported and installed locales"<br />
<br />
In order to find the NLS code for your country you could look in the Registry on a Windows computer under the "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts" keys.<br />
<br />
<br />
'''bootdata/packages/reactos.dff'''<br />
Just follow the example of the other /dll/keyboard/kbd* stuff in there. <br />
<br />
'''In bootdata/txtsetup.sif''' add the following lines:<br />
<br />
Keyboardlayout-section<br />
00000813 = "Belgian (point)"<br />
<br />
Files.KeyboardLayout-section<br />
00000813 = kbdbe.dll<br />
<br />
Now you can compile Reactos and create your bootcd, while installing you can select you newly created keyboard layout.<br />
<br />
=== Appendix 1===<br />
Here are some keyboard designations, that you will come across in the source file.<br />
<br />
[[Image:клв_подредба.png]]<br />
<br />
K1= VK_OEM_1<br />
<br />
K2= VK_OEM_2<br />
<br />
K3= VK_OEM_3<br />
<br />
K4= VK_OEM_4<br />
<br />
K5= VK_OEM_5 (This key may have different position on different keyboards. In en-US keyboard layouts it generates \ and |)<br />
<br />
K6= VK_OEM_6<br />
<br />
K7= VK_OEM_7<br />
<br />
K8= VK_OEM_8<br />
<br />
K9= VK_OEM_9<br />
<br />
K102= VK_OEM_102 (This key is available only on same new keyboards. In en-US keyboard layouts it generates / and \)<br />
<br />
COM= VK_OEM_COMMA<br />
<br />
PER= VK_OEM_PERIOD<br />
<br />
K-=VK_OEM_MINUS<br />
<br />
K+=VK_OEM_PLUS<br />
<br />
KBack= VK_BACK<br />
<br />
N0=VK_NUMPAD0<br />
<br />
N1=VK_NUMPAD1<br />
<br />
N2=VK_NUMPAD2<br />
<br />
N3=VK_NUMPAD3<br />
<br />
N4=VK_NUMPAD4<br />
<br />
N5=VK_NUMPAD5<br />
<br />
N6=VK_NUMPAD6<br />
<br />
N7=VK_NUMPAD7<br />
<br />
N8=VK_NUMPAD8<br />
<br />
N9=VK_NUMPAD9<br />
<br />
[[Category:Tutorial]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Change_Task_Force&diff=30904
Change Task Force
2012-02-27T12:20:40Z
<p>CycleGeek: /* new build system */ remove section</p>
<hr />
<div>'''Change Task Force''' will be used to discuss the following things to help benefit the development process of ReactOS. Please bear in mind that these are more-or-less useful ideas, and some are not well suited for discussion. Constructive comments are appreciated. Feel free to add your ideas, but ''do not'' remove ideas you do not agree with.<br />
<br />
== source automatically formatted/beautified ==<br />
If we format/beautify our source code automatically on commit we can save the "code-formatting" commits and we ensure readable source code all the time.<br />
* I have been using C:B's autoformatter from time to time, but I always had to manually fix things. I don't know if there's an automatic system that will give really good results all the time. It would also mix formatting into normal commits as soon as it was integrated. I think it would be enough to have some style rules and devs are encouraged to follow them. --[[User:ThePhysicist|ThePhysicist]] 22:47, 4 March 2009 (UTC)<br />
* The Visual Studio autoformatter works really good, even on completely mixed up code parts. Christoph_vW suggested it some time ago and seems to be satisfied as well --[[User:grschneider|grschneider]] 22:15, 5 March 2009 (UTC)<br />
* almost good, we have very good config options for indent, but still manual interaction needed, plus some modules should be kept intact (like drivers totally owned by one person who wrote them, like hpoussin's example) --[[User:Fireball]]<br />
<br />
== commit to real repository after build finished successfully ==<br />
As long as the build of the whole system takes marked time on most of the developers machines, we should think about a two step model. Each commit to the main repository is made if and only if the build bot was able to create a build successfully. Apart from that we should think about a way to prevent builds for special cases on request.<br />
* I would support either this or auto-revert after built-breakage. --[[User:ThePhysicist|ThePhysicist]] 22:50, 4 March 2009 (UTC)<br />
* double repo system, not stable, it's better with branches, as Alex suggested numerously. At least you won't have to submit info between repos via patches (which are lossy) --[[User:Fireball]]<br />
<br />
== continuous integration ==<br />
We should discuss, if we would like to apply some more steps to make a better release cycle based on the model of continuous integration.<br />
* yes of course, but there are no good tools. Franz is researching this problem too for his work too --[[User:Fireball]]<br />
<br />
== outsource things to community ==<br />
At the moment the developers have to make some work, that can do almost everyone. I suggest to make some '''selected''' things available to the whole community to relieve the developers. In contrast to Klemens Friedl I don't think we should start with a web interface for resource files translation (because the results can break build), but i think we can start with some simple translations and additional data. The interface has to ensure that users can't break build. Examples:<br />
* timezone names, settings (some DST change yearly)<br />
* country names, GeoID, region info<br />
* NLS data<br />
* Device related strings (INF-Files)<br />
<br />
* generic approach is that indeed community should do as much as possible, especially in promotion / PR area --[[User:Fireball]]<br />
<br />
== use checking software ==<br />
Maybe we can use automatic checkers to gain the quality (splint or some similar). This needs some research to find proper ones.<br />
* yes, we do already (coverity), but we need more checking inside reactos itself (heap corruption detector, pool corruption detector) --[[User:Fireball]]<br />
<br />
== force tests ==<br />
Apart from wine, we should force to make more tests. I personally haven't an idea how to do that in an appropriate way, but I think it's necessary to increase the quality and power of the system.<br />
<br />
== introduce teams and persons in charge ==<br />
As long as everyone works everywhere, I suggest to define virtual teams. The teams should feel responsible for paths or files. Responsible in the meaning of "contact person". If another developer would like to apply patches or make some changes and has problems then he/she has a person for his/her questions. In fact no file/directory should be left alone (so we can also define which parts are indirectly maintained by wine or another contributer outside the project). Maybe we can add a special file to each directory which contains at least following fields and can be processed by scripts:<br />
* description<br />
* contact person/person in charge<br />
* virtual team members<br />
* deviate rules<br />
<br />
* yes of course --[[User:Fireball]]<br />
<br />
== list of hackfix-references ==<br />
Due to the overwhelming task to build a windows compatible operating system we have a lot of hackfixes to make it work "as it is". To get back the overview of outstanding tasks due to hackfixes (in the meaning of "not a proper solution for the problem") I suggest to make lists for dependencies (how to do that needs further discussion). We should be able to find out (quickly) which hackfix needs which unimplemented feature. If we can make such list, we are furthermore able to set a priority for unimplemented things and we can remove the<br />
hackfixes step by step (in a more coordinated way).<br />
* Wow... half of win32k is a big hackfix. Or better few hackfixes on top of earlier hackfixes. A stack of hackfixes. I don't know if it even has a design in some places ;-) To make life much easier: "win32k is not yet a proper solution" --[[User:ThePhysicist|ThePhysicist]] 00:44, 5 March 2009 (UTC)<br />
* this is per dev / per maintainer / per module --[[User:Fireball]]<br />
*but what will happen if a dev wants to take a break/leave/choose another part of the os to work on? IMO the biggest problem in Reactos are ancient hacks that take very much time to find. It could be possible to add hacks as bugs in bugzilla. In this way hacks won't get forgotten and other people may help to find and solve the real issue of the hack. Another solution would be to maintain a file in each folder that could describe all the hacks that exist in the module (however it could become outdated very easy) [[User:Smiley|Smiley]] 19:04, 17 March 2009 (UTC)<br />
<br />
== cross-reference ==<br />
The doxygen source reference seems to have some problems because some data types and functions are unknown, I strongly recommend to fix this, because we can find things much faster and we can mark deprecated things.<br />
<br />
== automatic generation of data files ==<br />
To save more time I suggest to introduce a set of rules how to automatically generate some special data files (e.g. INF-files) or at least parts of it. We should think about an additional script language to create some stuff automatically.<br />
<br />
== set of developer tools ==<br />
As mentioned before we should provide at least on supported script language to gather tools from devs for devs (e.g. I use may own autopatch to apply simple patch files directly from bugzilla to working copy). With such tools we can make our life easier and each developer can decide for him-/herself to use it.<br />
<br />
== code cleanup ==<br />
I strongly recommend to discuss code cleanup. When, who and how?<br />
* this is per module thing, we can't cleanup 10 MLOC at once --[[User:Fireball]]<br />
<br />
== file/code templates ==<br />
What do you think about a template library for recuring tasks?<br />
* What do you want to put into template files? I don't think we have so much code that is the same as other code. If you are writing new code that is similar to some existing code, just copy & paste what you need. --[[User:ThePhysicist|ThePhysicist]] 23:18, 4 March 2009 (UTC)<br />
<br />
== continuous compatibilty checks ==<br />
As part of our testing procedure we should force continuous compatibilty checks for selected programs (but periodically). Maybe this part can transfared to community, we make a simple survey and the testers can fill in the results. This results can help us to decide how to proceed...<br />
<br />
== message board ==<br />
Beside reporting bugs sometimes developers skim over other parts (which aren't focused at the moment) and find some issues/problems they aren't worth submit to bugzilla, but you would like to drop a note for the next person, which is working on that file/module or whatever. So i suggest<br />
a message board where you can leave messages/ideas/hints (usually without solutions - otherwise you can fix it yourself or submit a patch to bugzilla). Maybe on the other hand we could find a way to do that with bugzilla... --[[User:maku|maku]] 13:38, 12 March 2009 (UTC)<br />
<br />
Uhmm maybe a message board Sticky notes(post-it notes) based?I have heard about Sticky notes for Desktop...does Sticky notes exist for websites? <br />
--[[User:vicmarcal|vicmarcal]] 15:38, 12 March 2009 (UTC)<br />
<br />
== Double Bugzilla ticketing ==<br />
Actually fulfilling a Bugzilla Report needs advanced skills about Components(Documentation,Drivers,Kernel, Networking..),and skills to obtain a useful debug log. So in Bugzilla you can find now a mix of non-useful reports with really good ones. Maybe having a Double ticketing(a comfortable Bugzilla design for Users and the actual for just Testers/Developers) would increase the number of bug reported and would clean the reports in the second ticketing. (This is a mix of Vicmarcal and KJK ideas) --[[User:Vicmarcal|Vicmarcal]] 14:47, 5 March 2009 (UTC)<br />
<br />
Or we could encourage them to consult us first before filing a report. no effort needed, and most of us who aren't devs don't spend time on much else in the evenings anyway. --[[User:Lone Rifle|Lone Rifle]] 20:19, 5 March 2009 (UTC)<br />
<br />
Problem is that they dont come to forum or to IRC before posting but they directly go to Bugzilla.Also they find an ugly/odd/non comfortable Bugzilla(which can discourage people also)...and they think that a screenshot of a BSOD is enough for us :) --[[User:Vicmarcal|Vicmarcal]] 22:11, 5 March 2009 (UTC)<br />
<br />
Then we should encourage them to get to the forum and other channels first instead. -- [[User:Lone Rifle|Lone Rifle]] 14:21, 6 March 2009 (UTC)<br />
<br />
We encourage them to do that..but with no results.Just look how many Bugzilla reports has the answer: look our wiki before posting bugs.--[[User:Vicmarcal|Vicmarcal]] 22:11, 5 March<br />
<br />
Because people usually do not have the patience to read the wiki in the first place. Talking to somebody is usually seen as easier, since there is less information to digest in one go, as there are delays between people responding to each other. If anything, I would suggest that using a forum as the "Bugzilla staging area" would probably make for a good compromise; you get the benefits of attending to the user in your own free time and you don't need to set up a second Bugzilla. This has the added benefit of absorbing the people who seem to like posting bug reports in the forum. The main Bugzilla can then be used to report the underlying cause of the bug, with the usual additional info such as testcases, debug logs etc. -- [[User:Lone Rifle|Lone Rifle]] 17:32, 6 March 2009 (UTC)<br />
<br />
no, I disagree --[[User:Fireball]]<br />
<br />
if you disagree, at least provide some grounds for disagreeing -- [[User:Lone Rifle|Lone Rifle]] 17:00, 11 March 2009 (UTC)<br />
<br />
Why can't we add a big red note blinking that links to: how to file bugs & debugging in bugzilla -> new bug? [[User:gabrielilardi]]<br />
<br />
The question is WHERE we should add that big red note blinking?BTW a Big Red doesnt solve some issues: Most of the Bugzilla reports arent good enough. Maybe reporters arent skilled enough, or maybe they dont want to waste time making a BT with a raddress2line.This leads to waste our Devs Gold Encoding Time just because opening non-useful bugreports.The Double ticketing,or 2 Bugzillas will filter and add more Info to them, so Devs will fight with Real-NonDuplicate-Full Info Reports instead (as i have seen sometimes) a 2 Megapixels Photo of a BSOD.--[[User:Vicmarcal|Vicmarcal]] 22:37, 11 March 2009 (UTC)<br />
<br />
Well there's an alternative (or better an add on to the red note), only selected users can confirm bugs (amine, skilled testers, etc.), so new bugs are unconfirmed, and devs should just search for confirmed ones. [[User:gabrielilardi]]<br />
<br />
I think two separate bugzillas/double ticketing is a bad idea, same for the idea that bug reporters should come to irc first. The bug database should contain all bugs and should encourage people to enter bug reports, not occupy them with things to do before adding a bug. Leaving the bug cofirmations to certain ppl sounds better imo. Another idea is a test environment that raddr2line's automatically. That part usually takes a lot of time because it's often done wrong. Same problem for backtraces - quite a lot in bz are useless, because they show useless information. --[[User:grschneider|grschneider]] 00:13, 12 March 2009 (UTC)<br />
<br />
The main problem with only restricting confirmation of bugs and for that matter, setting of other attributes is that the Bugzilla is still occupied. While it may not affect the devs, it would affect the testers and Bugzilla maintainer who would probably wade through both pending and firm bug reports within the same environment. Double ticketing or otherwise creating a buffer between Bugzilla and users is probably an improvement that would benefit testers more than it would benefit the devs, since like grschneider said, the devs can simply search for confirmed reports. -- [[User:Lone Rifle|Lone Rifle]] 12:00, 12 March 2009 (UTC)<br />
<br />
== Auditing ==<br />
Auditing code each 5-10 years of a trunk image (without stopping commits to the real trunk) would help to find support from Companies because it will increase our credibility and gives to the Company an argument/shield to support us. --[[User:Vicmarcal|Vicmarcal]] 14:49, 5 March 2009 (UTC)<br />
<br />
== ReactOS contributors beneficts ==<br />
Most of the companies values proactive workers.ReactOS contributors(Devs,Translators,Testers or any other who contributes here) should have the possibility of asking for a ReactOS Foundation Collaboration Certificate which states in a legal way a proactive work in an Open Source Project. Including ReactOS Contribution in the CV is optional but highly recommended. --[[User:Vicmarcal|Vicmarcal]] 16:27, 5 March 2009 (UTC)<br />
* yes, and I have a long-term thing being planned about this - will share soon --[[User:Fireball]]<br />
<br />
== University Contacts ==<br />
In most of the Universities in Europe all the students in their last year have to make a Project fo finish their careers. ReactOS could provide a list of small tasks (==searching bugs,fixing some of them,making some documentation,implementing easy functions...) to any University interested on helping Open Source projects. This could lead some of these students to become Devs in ReactOS. --[[User:Vicmarcal|Vicmarcal]] 16:31, 5 March 2009 (UTC)<br />
* this is a MUST! --[[User:Fireball]]<br />
<br />
== Renaming 0.4.X as Pre-Beta==<br />
ReactOS has a "Marketing" issue right now: The "Alpha" word is damaging our speed spreading.<br />
<br />
1) Old users who tested ReactOS old '''ALPHA''' versions are discouraging other new users to try ReactOS. You can find a lot of Forum Guys saying: "They have been in Alpha since a lot of years. I tried 0.2.X and it sucks. They are still in Alpha so they are still sucking." Of course we know we sucks ;)....but not as much as when ReactOS was in 0.2.X. So the "Alpha" word is stopping New Users to test and Old Users to retest.<br />
<br />
2) It´s unfair calling 0.4.X an "Alpha Serie". Now we are a little far way of 0.4.0 and ReactOS behaviour is nearer Beta than Alpha. So in 0.4.0 will be much nearer.<br />
<br />
3) 0.2.X was called pre-Alpha, 0.3.X was called Alpha, so it has sense to call 0.4.X a pre-Beta.<br />
<br />
I know it´s just a Marketing problem, but we are "selling" a product.--[[User:Vicmarcal|Vicmarcal]] 16:08, 11 March 2009 (UTC)<br />
<br />
== Adding New Icons in 0.4.0 release ==<br />
IMO ReactOS should make a big jump between 0.3.X and 0.4. One could be the change of the "Alpha" word,but also maybe we could change the Icon Tango set with the new Icon Set,thanks to the work in the graphics.http://www.reactos.org/wiki/index.php/Icon_set/Candidates.<br />
--[[User:Vicmarcal|Vicmarcal]] 12:18, 17 March 2009 (UTC)<br />
<br />
== Spreading ReactOS Info: Linux-Open Source Magazines==<br />
In each country there are 4 or 5 Linux-Open Source Magazines. Maybe we should try to create(/update) an English Reactos overview, which could be translated by the Translators group(maybe adding to RosCMS?).Then we can try to find these Magazines in each country and send them the Info translated.<br />
We are 124 IRC users from more than 15 Countries, so this small action could be a nice way to spread ReactOS info.<br />
This action hits directly to potential developers or skilled people: ReactOS targets.<br />
--[[User:Vicmarcal|Vicmarcal]] 12:18, 17 March 2009 (UTC)<br />
<br />
== Small Ideas for Explorer.exe ==<br />
Sometimes good ideas to improve the user(good)experience are "easy" to implement.Others,of course, arent so easy...<br />
Here there are a mix of them..<br />
http://www.kumailht.com/blog/linux/10-features-ubuntu-should-implement/<br />
--[[User:Vicmarcal|Vicmarcal]] 22:18, 24 March 2009 (UTC)<br />
<br />
== ReactOS and Social Support ==<br />
<br />
ReactOS has been refused from Gsoc... ReactOS maybe could try to point itself to Social Support. Social Support is really valuable nowadays (just look Gsoc accepted a Women Developer Association proposal), so sending proposals as:<br />
<br />
*"Developing ReactOS to support NVDA synthesizer for Blind People". <br />
(NVDA->NonVisual Desktop Access (NVDA) is a free and open source screen reader for the Microsoft Windows operating system. This software can enable blind or vision impaired people to access computers running Windows for no more cost than a sighted person.NVDA allows the user to find out what is happening on the screen by querying the Operating system and using a speech synthesizer to output the information. )<br />
*"Developing ReactOS to support NVDA USB portable app for Blind People"<br />
<br />
The objective is supporting NVDA project (or any other Social projects) in order to help people with problems. This work would also lead to improve our general compatibility.<br />
<br />
Also we can put NVDA in our releases, so we were fulfilling a big gap that MS Windows doesnt cover.<br />
<br />
Indeed we can begin finding some support from Social associations, so they can change they non-useful MS Windows PCs with ReactOS+NVDA Pcs.<br />
--[[User:Vicmarcal|Vicmarcal]] 22:18, 24 March 2009 (UTC)<br />
<br />
[[Category:Development]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Template:RosBE-Unix-Version&diff=30873
Template:RosBE-Unix-Version
2012-02-11T14:41:08Z
<p>CycleGeek: Update to version 2.0</p>
<hr />
<div>2.0<noinclude>[[Category:Template]]</noinclude></div>
CycleGeek
https://reactos.org/wiki/index.php?title=USB_Stack&diff=30714
USB Stack
2012-01-08T14:55:55Z
<p>CycleGeek: janderwald's status report</p>
<hr />
<div>The USB stack is the component which provides the communication between USB devices and their respective drivers and applications. It consists of multiple files, each with a distinct function. The USB stack in ReactOS is currently extremely limited. This page documents the development of the new USB stack. Development work on a USB 3 stack is not planned at this time.<br />
<br />
== Overview ==<br />
The goal is to develop a USB stack which:<br />
* is USB 1.1 - 2.0 compliant<br />
* uses WDM (NT 5) API<br />
* is compatible with all USB devices and drivers (which adhere to the standard)<br />
<br />
The entire stack will be fully documented and the implementation progress detailed on this page.<br />
<br />
== Goals ==<br />
* Primary Goal: USB HID (human input devices) and storage functionality working (Alpha).<br />
* Secondary Goal: Audio and other support added.<br />
* Beyond: testing and debugging.<br />
<br />
Due to the complexity and size, no release dates will be provided as of now.<br />
<br />
== Status ==<br />
=== USB Core Status ===<br />
* There are 2 USB specifications for the USB 1.1 standard. Devices which are used in this standard are mice, keyboards, etc.<br />
** OHCI (Open Host Controller Interface Standard) - All transfers types are implemented (bulk, iso, control, interrupt)<br />
** UHCI (Universal Host Controller Interface Standard) - Totaly missing. Though it should be do-able to use ohci driver as a base and use [http://cgit.haiku-os.org/haiku/tree/src/add-ons/kernel/busses/usb/uhci.cpp Haiku driver]<br />
* EHCI (Enhanced Host Controller Interface) - Implemented transfer types: bulk & control. Interrupt & Isochronous transfers are not implemented. Due to the missing transfer types, devices who utilize those transfer types will not be available.<br />
* USBHUB - driver for managing port and hubs - Implementation state is unknown - michel martin has more information on that<br />
<br />
=== USB Mass Storage Support Status ===<br />
USB Mass Storage is implemented in usbstor driver and is fully working. Tested in WinXP + USBEHCI + USBSTOR. Mass storage support requires bulk and control transfers, which are implemented in USBEHCI.<br />
<br />
=== HID Status ===<br />
The HID framework is built on 5 drivers<br />
<br />
* HIDUSB - this is the interface driver for the USB bus. Currently supported devices are mice. Basic keyboard support should also work currently.<br />
* HIDCLASS - this is the class driver for HIDUSB and others. Functionality for mice & keyboard is implemented, though support for sending output reports is not implemented.<br />
* MOUHID - mouse function driver for usb hid standard - Fully implemented and working.<br />
* KBDHID - keyboard function driver for the hid standard - 90% implemented, needs KbdHid_InsertScanCodes implemented for keyboard scan code dispatching to kbdclass and led status indicator support (which requires sending output reports).<br />
* HIDPARSE - driver for parsing report descriptors - functionality implemented for mice, keyboard support needs HidParser_TranslateUsage fully implemented for modifier state (caps lock, num lock, scroll lock).<br />
<br />
=== What works and not ===<br />
* Mouse support has been tested in WinXP with ReactOS USBOHCI + HIDUSB + HIDCLASS + MOUHID + HIDPARSE and is working. The USB + HID stack does not work in ReactOS at the moment, appears to be a problem with win32k, which only opens the first mice (\\Device\\PointerClass0) [...]<br />
* Basic Keyboard support need a 2/3 functions but probably suffer from the same bugs which affect HID mice support.<br />
* USB Mass storage support - Needs mountmgr / partmgr driver implemented. Will also need mountvol and other missing PnP stuff.<br />
<br />
== See Also ==<br />
[[USB Stack Template]]<br />
<br />
== References ==<br />
* [http://www.usb.org/developers/docs/ USB.org specifications]<br />
* [http://xenbits.xensource.com/ext/win-pvdrivers.hg XEN PV Usb Drivers]<br />
* [http://msdn.microsoft.com/en-us/library/ff537858.aspx Roadmap for Developing USB Drivers]<br />
* Windows Driver Kit (Driver Development Kit)<br />
* [http://www.microsoft.com/whdc/archive/usb2support.mspx?pf=true USB Driver Stack for Windows XP and later]<br />
* [http://msdn.microsoft.com/en-us/library/ff539301.aspx USB Device Stack for Windows XP and later]<br />
<br />
[[Category:Documentation]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=User:Marco992&diff=30690
User:Marco992
2011-12-30T13:26:23Z
<p>CycleGeek: moved Marco Vaiano to User:Marco992</p>
<hr />
<div>= Biography =<br />
<br />
'''Name''': Marco Vaiano<br />
<br />
'''Gender''': Male<br />
<br />
'''Born''': 04/07/1992<br />
<br />
'''Country''': Italy<br />
<br />
'''E-Mail''': marco [dot] vaiano [at] hotmail [dot] com<br />
<br />
'''Area of interest''': Core Testing and Bug Fixing.<br />
<br />
'''Currently working on''': Bug Testing</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Marco_Vaiano&diff=30691
Marco Vaiano
2011-12-30T13:26:23Z
<p>CycleGeek: moved Marco Vaiano to User:Marco992</p>
<hr />
<div>#REDIRECT [[User:Marco992]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=USB_Stack&diff=30688
USB Stack
2011-12-30T00:28:59Z
<p>CycleGeek: /* Status */ Add note for janderwald's recent HID work</p>
<hr />
<div>The USB stack is the component which provides the communication between USB devices and their respective drivers and applications. It consists of multiple files, each with a distinct function. The USB stack in ReactOS is currently extremely limited. This page documents the development of the new USB stack. Development work on a USB 3 stack is not planned at this time.<br />
<br />
== Overview ==<br />
The goal is to develop a USB stack which:<br />
* is USB 1.1 - 2.0 compliant<br />
* uses WDM (NT 5) API<br />
* is compatible with all USB devices and drivers (which adhere to the standard)<br />
<br />
The entire stack will be fully documented and the implementation progress detailed on this page.<br />
<br />
== Goals ==<br />
* Primary Goal: USB HID (human input devices) and storage functionality working (Alpha).<br />
* Secondary Goal: Audio and other support added.<br />
* Beyond: testing and debugging.<br />
<br />
Due to the complexity and size, no release dates will be provided as of now.<br />
<br />
== Status ==<br />
* '''2010-01-08''' - [[Michael Martin]] has started re-implementation. The plan is to start with the EHCI controller and then work up the stack. Drivers will be developed against Windows 2000 and Windows XP for starting off. Progress can be found [http://cia.vc/stats/author/mjmartin here].<br />
* '''2011-12-23''' - [[Johannes Anderwald]] has begun development of the HID drivers that will allow the use of USB mice. Development is tested against Windows XP in VirtualBox and progress can be tracked [http://cia.vc/stats/author/janderwald here].<br />
<br />
== Outdated information ==<br />
See [http://www.reactos.org/wiki/index.php?title=USB_Stack&oldid=24303#Historical_.28outdated.29_information here].<br />
<br />
== See Also ==<br />
[[USB Stack Template]]<br />
<br />
== References ==<br />
* [http://www.usb.org/developers/docs/ USB.org specifications]<br />
* [http://xenbits.xensource.com/ext/win-pvdrivers.hg XEN PV Usb Drivers]<br />
* [http://msdn.microsoft.com/en-us/library/ff537858.aspx Roadmap for Developing USB Drivers]<br />
* Windows Driver Kit (Driver Development Kit).<br />
* various books and sites on the WDM model, to be expanded later.<br />
* [http://www.microsoft.com/whdc/archive/usb2support.mspx?pf=true USB Driver Stack for Windows XP and later]<br />
* [http://msdn.microsoft.com/en-us/library/ff539301.aspx USB Device Stack for Windows XP and later]<br />
<br />
[[Category:Documentation]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=User_talk:Gazduireweb&diff=30683
User talk:Gazduireweb
2011-12-29T03:41:41Z
<p>CycleGeek: Blanked the page</p>
<hr />
<div></div>
CycleGeek
https://reactos.org/wiki/index.php?title=Promotional_Events&diff=30681
Promotional Events
2011-12-29T01:22:46Z
<p>CycleGeek: /* Past Events */ add ISIMA 2011, Linux-Tage 2011, Imaginatica 2011</p>
<hr />
<div>This page contains a list of sponsored events that have been or can be attended for the promotion of ReactOS.<br />
<br />
== Past Events ==<br />
* LinuxWorld 2004<br />
* LinuxTag 2005<br />
* [[WineConf 2005]]<br />
* [[SofTool 2006]]<br />
* SYSTEMS 2006<br />
* [[FOSDEM 2007]]<br />
* LinuxWorld Expo 2008<br />
* MOCA 2008<br />
* [[FOSDEM 2009]]<br />
* [[IMAGINATICA 2009]]<br />
* [http://www.reactos.org/en/news_page_57.html Chemnitzer Linux-Tage (Chemnitz Linux-Days) 2010]<br />
* Linux Install Fest in Stavropol 2010<br />
* ISIMA 2011<br />
* Chemnitzer Linux-Tage 2011<br />
* Imaginatica 2011<br />
<br />
== Confirmed Events ==<br />
There are currently no planned appearances for upcoming events.<br />
<br />
== Possible Future Events ==<br />
There are currently no planned appearances for future events.<br />
<br />
== External links ==<br />
* [http://chemnitzer.linux-tage.de/ Chemnitzer Linux-Tage]<br />
* [http://www.fosdem.org FOSDEM]<br />
* [http://www.imaginatica.org/ Imaginatica]<br />
* [http://www.linuxland.ru/eng/ LinuxLand / SofTool]<br />
* [http://www.linuxtag.org/ LinuxTag]<br />
* [http://www.linuxworld.com/ LinuxWorld Expo]<br />
* [http://camp.olografix.org/home.php?lng=en MOCA]<br />
* [http://www.systems.de/ SYSTEMS]<br />
* [http://wiki.winehq.org/WineConf WineConf]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=RC_File_Standards&diff=30616
RC File Standards
2011-12-10T18:50:25Z
<p>CycleGeek: Undo revision 30601 by Owner64 (Talk)</p>
<hr />
<div>To keep some sort of a standard in resource files and to support the WIndows 2000+ look, we need to follow some rules:<br />
<br />
'''1.''' Always use a ''DIALOGEX'' template instead of a ''DIALOG'' template.<br />
<br />
'''2.''' Set the ''DS_SHELLFONT'' flag in your dialog ''STYLE''s instead of ''DS_FIXEDSYS'' and/or ''DS_SETFONT''.<br />
<br />
:It would be visually jarring for there to be a mix of fonts on a property sheet. You wouldn't want the "Advanced" button to be in MS Sans Serif but the "Apply" button in Tahoma. To avoid this problem, the property sheet manager looks at all the pages in the property sheet. If they are all using the "Windows 2000" look, then the property sheet uses the "Windows 2000" look also. But if there is even a single page that does not use the "Windows 2000" look, then the property sheet reverts to the "classic" look and also converts all the "Windows 2000"-look pages to "classic" look.<br />
<br />
'''3.''' Set the dialog font to "MS Shell Dlg".<br />
<br />
'''4.''' Use the dialog font "MS UI Gothic" for Japanese.<br />
<br />
:On Windows 9x, both of the logical fonts map to code page-based bitmap fonts. MS Shell Dlg generally maps to a code page-specific version of MS Sans Serif. MS Shell Dlg 2 maps to a code page-specific bitmap Tahoma font. On Windows NT 4.0+ both of the logical fonts map to Unicode-based TrueType fonts. MS Shell Dlg uses Microsoft Sans Serif for Latin, Greek, Cyrillic, Arabic, Hebrew, and Thai characters; MS UI Gothic for Japanese; Gulim for Korean; Simsun for Simplified Chinese; PMinglu for Traditional Chinese; etc. On Windows 2000 and later: MS Shell Dlg 2 maps to Tahoma, which is the default font used throughout the operating system. An application that runs only on this operating system can specify ''DS_SHELLFONT'' with MS Shell Dlg 2 to map to Tahoma. However, an application that also runs on Windows NT 4.0, Windows 95, Windows 98, or Windows Me should specify ''DS_SHELLFONT'' with MS Shell Dlg instead of MS Shell Dlg 2. Characters that are not implemented in Tahoma are available through font linking. The main advantage of Tahoma over Microsoft Sans Serif is that Tahoma has a native bold font face. Its main disadvantage is that older operating systems might not have it installed, and might substitute a less attractive font.<br />
<br />
'''5.''' Use font size 8 for Latin, Greek, Cyrillic, Arabic, Hebrew, and Thai.<br />
<br />
'''6.''' Use font size 9 for Japanese.<br />
<br />
'''7.''' Don't use ''DS_3DLOOK'' Its outdated and not of any use.</div>
CycleGeek
https://reactos.org/wiki/index.php?title=RC_File_Standards&diff=30614
RC File Standards
2011-12-10T18:49:48Z
<p>CycleGeek: moved Sohbet to RC File Standards over redirect</p>
<hr />
<div>To keep some sort of a standard in resource files and to support the WIndows 2000+ look, we need to follow some rules:<br />
<br />
'''1.''' Always use a ''DIALOGEX'' template instead of a ''DIALOG'' template.<br />
<br />
'''2.''' Set the ''DS_SHELLFONT'' flag in your dialog ''STYLE''s instead of ''DS_FIXEDSYS'' and/or ''DS_SETFONT''.<br />
<br />
:It would be visually jarring for there to be a mix of fonts on a property sheet. You wouldn't want the "Advanced" button to be in MS Sans Serif but the "Apply" button in Tahoma. To avoid this problem, the property sheet manager looks at all the pages in the property sheet. If they are all using the "Windows 2000" look, then the property sheet uses the "Windows 2000" look also. But if there is even a single page that does not use the "Windows 2000" look, then the property sheet reverts to the "classic" look and also converts all the "Windows 2000"-look pages to "classic" look.<br />
<br />
'''3.''' Set the dialog font to "MS Shell Dlg".<br />
<br />
'''4.''' Use the dialog font "MS UI Gothic" for Japanese.<br />
<br />
:On Windows 9x, both of the logical fonts map to code page-based bitmap fonts. MS Shell Dlg generally maps to a code page-specific version of MS Sans Serif. MS Shell Dlg 2 maps to a code page-specific bitmap Tahoma font. On Windows NT 4.0+ both of the logical fonts map to Unicode-based TrueType fonts. MS Shell Dlg uses Microsoft Sans Serif for Latin, Greek, Cyrillic, Arabic, Hebrew, and Thai characters; MS UI Gothic for Japanese; Gulim for Korean; Simsun for Simplified Chinese; PMinglu for Traditional Chinese; etc. On Windows 2000 and later: MS Shell Dlg 2 maps to Tahoma, which is the default font used throughout the operating system. An application that runs only on this operating system can specify ''DS_SHELLFONT'' with MS Shell Dlg 2 to map to Tahoma. However, an application that also runs on Windows NT 4.0, Windows 95, Windows 98, or Windows Me should specify ''DS_SHELLFONT'' with MS Shell Dlg instead of MS Shell Dlg 2. Characters that are not implemented in Tahoma are available through font linking. The main advantage of Tahoma over Microsoft Sans Serif is that Tahoma has a native bold font face. Its main disadvantage is that older operating systems might not have it installed, and might substitute a less attractive font.<br />
<br />
'''5.''' Use font size 8 for Latin, Greek, Cyrillic, Arabic, Hebrew, and Thai.<br />
<br />
'''6.''' Use font size 9 for Japanese.<br />
<br />
'''7.''' Don't use ''DS_3DLOOK'' Its outdated and not of any use.<br />
http://www.sohbetetsem.com</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Talk:Coverity_Runs&diff=30426
Talk:Coverity Runs
2011-11-24T06:15:08Z
<p>CycleGeek: </p>
<hr />
<div>What is Coverity Runs? - [[User:Saibamen|Saibamen]] 19:31, 23 November 2011 (UTC)<br />
:Analysis runs by [http://scan.coverity.com/ Coverity Scan] --[[User:CycleGeek|CycleGeek]] 06:15, 24 November 2011 (UTC)</div>
CycleGeek
https://reactos.org/wiki/index.php?title=User_talk:Kelsey56&diff=30408
User talk:Kelsey56
2011-11-21T04:22:32Z
<p>CycleGeek: Blanked the page</p>
<hr />
<div></div>
CycleGeek
https://reactos.org/wiki/index.php?title=User_talk:Sasuke370&diff=30407
User talk:Sasuke370
2011-11-21T04:22:31Z
<p>CycleGeek: Blanked the page</p>
<hr />
<div></div>
CycleGeek
https://reactos.org/wiki/index.php?title=ReactOS_Release_Engineer/Step-by-Step_Guide&diff=30340
ReactOS Release Engineer/Step-by-Step Guide
2011-10-31T20:56:10Z
<p>CycleGeek: Undo revision 30337 by Janwalls (Talk)</p>
<hr />
<div>This page shall give an overview about the steps involved when creating new ReactOS releases.<br />
<br />
As of now (2010-10-08), two [[ReactOS Release Engineer|Release Engineers]] are working for the ReactOS Project. The tasks are currently split up in a way that one of them primarily takes care about the changelog while the other one does most of the other (simpler) tasks.<br />
<br />
We assume that a Changelog Wiki page has already been created after the previous release to allow people to add their important changes as soon as possible.<br />
You should also get people to write the official announcement.<br />
<br />
== Guide ==<br />
# Choose a trunk revision to branch from and create a branch ''ros-branch-X_X_XX''. (where ''X_X_XX'' is the release version number with replaced dots)<br>The SVN command is: <pre>svn cp svn://svn.reactos.org/reactos/trunk@REVISION_NUMBER svn://svn.reactos.org/reactos/branches/ros-branch-X_X_XX</pre><br />
# Start bugging people about getting their Changelog parts done :-)<br />
# Create a Wiki page with just the version number as the title (looking like e.g. [[0.3.12]]). You can already add information about the branched revision.<br />
# Create a Wiki page called ''Tests for X.X.XX'' (see [[Tests for 0.3.12]]), so that people can report the state of popular applications/drivers on this release.<br />
# Change the identification options in the release branch. (version number, wallpaper, shortcuts, etc.)<br />
# Apply some hacks to the release branch to work around known bugs. (if necessary)<br />
# Get approvements from involved developers and testers that the code in the branch is ready to be released.<br />
# Create packages according to the guide [[ReactOS Release Engineer/Packaging ReactOS Releases|Packaging ReactOS Releases]].<br />
# Create a tag ''ReactOS-X.X.XX'' from the branch. The SVN command is: <pre>svn mv svn://svn.reactos.org/reactos/branches/ros-branch-X_X_XX svn://svn.reactos.org/reactos/tags/ReactOS-X.X.XX</pre><br />
# Upload the packages to SourceForge.net in the ''OldFiles'' directory, so that they are not visible yet.<br />
# Move the packages to the ReactOS/X.X.XX folder on SourceForge.net shortly before the official announcement is published.<br />
# Execute the ''sf-sync'' script on the Rose-General server to update the http://download.reactos.org download mirror.<br />
# Publish the official announcement on the website, the ''News'' forum and on the ''ros-announce'' mailing list.<br />
# Add the new version number as an option to the [http://reactos.org/compat Compatibility Database].<br />
# CELEBRATE!!</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Voting/Code_Audit_Method&diff=30339
Voting/Code Audit Method
2011-10-31T20:55:48Z
<p>CycleGeek: Undo revision 30338 by Janwalls (Talk)</p>
<hr />
<div>How should the ReactOS code be audited? <br />
<br />
[http://www.reactos.org/archives/public/ros-dev/2006-February/007846.html Discussion] <br />
<br />
[http://www.reactos.org/forum/viewtopic.php?t=1729 Results]<br />
<br />
<pre><br />
Devs must take it upon themselves to audit the code - 6<br />
Code is SVN-locked until it has been audited - 7<br />
</pre></div>
CycleGeek
https://reactos.org/wiki/index.php?title=Afd.sys&diff=30290
Afd.sys
2011-10-17T13:37:10Z
<p>CycleGeek: Undo revision 30286 by Parrishcartwright (Talk)</p>
<hr />
<div>{{outdated}}<br />
<br />
It was complicated before. Here's how it works now:<br />
<br />
Each AFD_FCB has a read and write buffer which currently holds up to one packet. For better performance, we can make this buffering scheme better. For the sake of simplicity, it's the way it is now.<br />
<br />
Each socket can have at most one send IRP active at a time. Others either wait or do nothing depending on whether they're for stream or packet sockets. This too can be improved but again does no real harm. <br />
<br />
Each socket has at most one receive IRP active at a time (or listen IRP for a listen socket). The TDI provider completes the irp when some data arrives, and we relaunch it when our buffer is empty.<br />
<br />
Select is accomplished by calls to PollReeval in ReceiveComplete, SendComplete, Afd*ReadData and Afd*WriteData. Each time PollReeval is called, a select IRP could get completed.<br />
<br />
Apart from that the rest is bookkeeping.</div>
CycleGeek
https://reactos.org/wiki/index.php?title=J%C3%A9r%C3%B4me_Gardou&diff=30289
Jérôme Gardou
2011-10-17T13:36:52Z
<p>CycleGeek: Undo revision 30285 by Parrishcartwright (Talk)</p>
<hr />
<div>= Profil =<br />
{{Infobox Contributor<br />
| name = Jérôme Gardou<br />
| image = ??<br />
| developer = active<br />
| svn_name = jgardou<br />
| irc_name = zefklop<br />
| location = France<br />
| email = jerome.gardou{{@}}laposte.net<br />
}}<br />
<br />
'''Fields of Interest:''' win32k subsystem, mostly. Fixing bugs that lie around.<br />
<br />
[[Category:Biographies]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Subversion/Branches&diff=30288
Subversion/Branches
2011-10-17T13:36:41Z
<p>CycleGeek: Undo revision 30284 by Parrishcartwright (Talk)</p>
<hr />
<div>== When to create a branch ==<br />
<br />
Create a branch when:<br />
* You want to have a stable environment to work on a major feature without interference from other development.<br />
* You don't want to worry about breaking something for others.<br />
* You want to prepare for a release and want to stabilize the software.<br />
<br />
== Creating a branch ==<br />
<br />
Use svn copy to create the branch in the branches directory:<br />
<br />
svn copy -m "Create branch1 branch." svn://svn.reactos.org/reactos/trunk svn://svn.reactos.org/reactos/branches/branch1<br />
<br />
== Keeping the branch in sync with trunk ==<br />
<br />
If the branch is under development for a long period of time, it is best to keep it in sync with the trunk branch in order to not have the two branches drift too far apart. Do this by merging changes from the trunk to the branch once in a while (say every two-three weeks). Use svn merge to achieve this, but first you need to figure out which revision to merge from. For your first merge to the branch, you need to use the revision at which the branch was created. Use svn log to find this information.<br />
<br />
If you use TortoiseSVN you should read the [[Subversion/Merging with TortoiseSVN]] guide.<br />
<br />
svn log --stop-on-copy svn://svn.reactos.org/reactos/branches/branch1<br />
<br />
The bottom log entry shows the revision at which the branch was created:<br />
<br />
r12735 | chorns | 2005-01-02 21:12:17 +0100 (sun, 02 jan 2005) | 1 line<br />
<br />
Create branch1 branch.<br />
<br />
Run svn info on your working copy to know the current revision. Remember to run svn up before doing this.<br />
<br />
Path: branch_working_copy<br />
URL: svn://svn.reactos.org/reactos/branches/branch1<br />
Repository UUID: e2f519d9-20a2-bc46-8705-e3bf7245ce19<br />
Revision: 15132<br />
<br />
Now you can merge the changes made to trunk since the branch was created (or since the last merge) using svn merge:<br />
<br />
svn merge -r 12735:15132 svn://svn.reactos.org/reactos/trunk branch_working_copy<br />
<br />
There may be merge conflicts. Resolve them, run svn resolved on the files or properties, test, and you are ready to commit the merged changes. It is very important that you write the range of revisions that was merged in the commit log message, since you will need to remember it for when you need to merge changes from trunk next time.<br />
<br />
svn ci -m "Merged 12735:15132 from trunk" branch_working_copy<br />
<br />
Next time you need to sync the branch with trunk, use svn log to find the commit message for the last sync, and use that as the first revision in the range of revisions to merge.<br />
<br />
N.B. You don't have to keep the whole branch in sync if you are only working on a part of the branch. In that case, just keep the parts you work on in sync.<br />
<br />
== Merging the changes to the branch back to trunk ==<br />
<br />
When you are satisfied with the results on the branch, you probably want to merge it back to the trunk branch. Once again, you use svn merge to achieve this.<br />
<br />
Checkout a working copy of the trunk which we will merge the changes into. Once again, use svn log to find the revision at which the branch was created (or the revision of the last merge to trunk).<br />
<br />
svn merge -r 12735:15132 svn://svn.reactos.org/reactos/branches/branch1 branch_working_copy<br />
<br />
Resolve merge conflicts, test, and finally commit it. Again, write the revision range in the commit log message for use in the next merge to trunk (if any).<br />
<br />
svn ci -m "Merged 12735:15132 from branch1" trunk_working_copy<br />
<br />
== Useful tips ==<br />
<br />
These tips may be useful to you when you work with branches:<br />
* If you are completely rewriting a file on a branch, then delete and recreate it on the branch instead of just changing it. Doing so will avoid merge conflicts when merging the branch to trunk. You won't get notified of conflicts when doing this so use it carefully to avoid overwriting important data during a merge.<br />
<br />
== Removed branches ==<br />
<br />
These are branches that have been deleted from the repository. <br />
<br />
* cis: 16812 - 40467<br />
* expat-rbuild: 21182 - 40467<br />
* old_reactx: 37254 - 40467<br />
* winldr: 25066 - 40467<br />
* xen: 14300 - 40467<br />
<br />
<br />
[[Category:Development]]<br />
[[Category:Source Control]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=RosBuild&diff=30256
RosBuild
2011-09-27T13:08:49Z
<p>CycleGeek: Undo revision 30254 by Ularedmond (Talk)</p>
<hr />
<div>'''RosBuild''' is the ReactOS [http://buildbot.net BuildBot]. It automates the compile and upload cycle of the most recent [[trunk]] from the [[Subversion|SVN]] repository. As soon as a new commit to the repository is detected, the Buildmaster tells the Buildslaves to rebuild the trunk and upload the ISO images.<br />
<br />
== Web Links ==<br />
* [http://build.reactos.org:8010 Buildmaster Web Interface]<br />
* [http://reactos.org/getbuilds Download page for the Builds]<br />
* [http://iso.reactos.org Server storing the ISOs]<br />
<br />
== Servers ==<br />
=== Buildmaster ===<br />
The Buildmaster runs on a ReactOS Server located in Sweden. The same server also stores the ISO files.<br />
<br />
=== Buildslaves ===<br />
{| class="prettytable"<br />
|-<br />
! Buildslave<br />
! OS<br />
! Builder<br />
! Location<br />
! Build time<br />
|-<br />
| [[Buildslave Osnabrück]]<br />
| Linux<br />
| Debug Trunk, KVM test<br />
| Osnabrück, Germany<br />
| ~10 minutes<br />
|-<br />
| [[Buildslave Höxter]]<br />
| Linux<br />
| Release<br />
| Höxter, Germany<br />
| ~6 minutes<br />
|-<br />
| [[Buildslave Warszawa]]<br />
| Windows 7 x64<br />
| Debug Trunk, CMake, VBox test<br />
| Warszawa, Poland<br />
| ~11 minutes<br />
|}<br />
<br />
== IRC bot ==<br />
The IRC bot can be found in the official [http://www.reactos.org/?page=community_irc ReactOS IRC Channel].<br />
It is a quick and easy method of gaining information about the status of the buildbot.<br />
The commands are accepted by the IRC bot in the following format:<br />
<pre>RosBuild: <command></pre><br />
The bot is highly sensitive to the format, so make sure you follow it. And do not abuse it's commands!<br />
<br />
{| class="prettytable"<br />
! Command<br />
! Description<br />
|-<br />
| <tt>commands</tt><br />
| List all available commands.<br />
|-<br />
| <tt>help&nbsp;''command''</tt><br />
| Give help for ''command''.<br />
|-<br />
| <tt>list&nbsp;builders</tt><br />
| List configured builders.<br />
|-<br />
| <tt>last&nbsp;''builder''</tt><br />
| List last build status for ''builder''. Replace ''builder'' with the builder you wish to see the results of.<br />
|-<br />
| <tt>status</tt><br />
| List status of the builders.<br />
|-<br />
| <tt>source</tt> <br />
| Display the URL of the Buildbot's home page.<br />
|-<br />
| <tt>version</tt> <br />
| Display version number of the buildbot.<br />
|-<br />
| <tt>stop&nbsp;build&nbsp;''build''&nbsp;''reason''</tt> <br />
| Stop a running build.<br />
|-<br />
| <tt>watch&nbsp;''which''</tt> <br />
| Announce the completion of an active build.<br />
|-<br />
| <tt>force&nbsp;build&nbsp;''which''&nbsp;''reason''</tt> <br />
| Force a build.<br />
|}<br />
<br />
[[Category:Building]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Subversion&diff=30255
Subversion
2011-09-27T13:08:40Z
<p>CycleGeek: Undo revision 30253 by Ularedmond (Talk)</p>
<hr />
<div>'''Subversion''' is a version control system used by ReactOS.<br />
<br />
ReactOS source code was in a CVS repository up to December 30th 2004. Since January 1st 2005, the source code is in a Subversion (SVN) repository.<br />
<br />
== Source Code Locations ==<br />
To download the sources, you will need an [[Wikipedia:Comparison of Subversion clients|SVN client]]. We have described the usage of some SVN clients [[#SVN clients|below]].<br />
<br />
You can also view the sources in the repository online by visiting our [http://svn.reactos.org/svn/reactos ViewVC] with a browser, or browse through a daily updated cross-referenced [http://doxygen.reactos.org doxygen] database.<br />
<br />
* [http://svn.reactos.org/svn/reactos/trunk/reactos/ ReactOS] - The Operating System itself with base components<br>{{Svn-server}}reactos/trunk/reactos<br><br><br />
<br />
* [http://svn.reactos.org/svn/reactos/trunk/rosapps/ ReactOS Applications] - Additional applications for ReactOS (bundled with releases)<br>{{Svn-server}}reactos/trunk/rosapps<br />
* [http://svn.reactos.org/svn/reactos/trunk/documentation/ ReactOS Documentation] - Some documentation of ReactOS components<br>{{Svn-server}}reactos/trunk/documentation<br />
* [http://svn.reactos.org/svn/press-media/trunk/ ReactOS Press Media] - Graphical media used for representing the project<br>{{Svn-server}}press-media/trunk<br />
* [http://svn.reactos.org/svn/project-tools/trunk/ ReactOS Project Tools] - Additional tools used inside the ReactOS Project<br>{{Svn-server}}project-tools/trunk<br />
* [http://svn.reactos.org/svn/reactos/trunk/wallpaper/ ReactOS Wallpaper] - Wallpapers used in ReactOS Releases<br>{{Svn-server}}reactos/trunk/wallpaper<br />
* [http://svn.reactos.org/svn/web/trunk/ ReactOS Website] - Website components of the ReactOS Project<br>{{Svn-server}}web/trunk<br />
<br />
=== Branches ===<br />
These locations are just temporary and the code is usually merged back into the official source code after it has been improved.<br />
* [http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos AMD64] - Implementation of AMD64 architecture support<br>{{Svn-server}}reactos/branches/ros-amd64-bringup/reactos<br />
<br />
== SVN clients ==<br />
For Windows, it is recommended to use the [http://tortoisesvn.net/downloads TortoiseSVN] client, which nicely integrates into the Windows Explorer. Another popular SVN Client is the [http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 SVN command line client]. This one is also bundled with the [[ReactOS Build Environment]] for Windows.<br />
<br />
The usage of these clients is described in a separate article for each client:<br />
* TortoiseSVN<br />
** [[Subversion/Using TortoiseSVN]]<br />
** [[Subversion/Merging with TortoiseSVN]]<br />
* other<br />
** [[Subversion/Using the command line client]]<br />
<br />
== Commits ==<br />
Commits are data added to the ReactOS SVN. The term data is used because it is not limited to code, but may include any other media including icons and sound. If a piece of code is committed then it means that its part of the ReactOS source code. Every commit has its own unique identification number and a message explaining its purpose.<br />
<br />
=== Messages ===<br />
<br />
In an effort to lessen the load when [[changelogs]] need to be written for releases, this is the proposed commit message format. The general idea is that a script can be run from one SVN revision to another and populate the changelog by putting all commits for one component into a single category. To do this, a commit needs to identify which component(s) it is for.<br />
<br />
[Component Name]<br />
-Description of change.<br />
<br />
An example of this would be the following (commit by [[User:J_anderw|Johannes Anderwald]], {{rev|44141}}):<br />
<br />
[KERNEL32]<br />
* Don't access freed memory in GetVolumeNameForVolumeMountPointW<br />
<br />
=== Notifications ===<br />
<br />
When commits are made, it makes notifications is several ways.<br />
<br />
* Mails with changes in each commit are sent to the mailing list [http://www.reactos.org/archives/public/ros-diffs/ ros-diffs]. They will be plain text mails, which contain the differences in this revision.<br />
* The CIA-''n'' IRC bot in #reactos notifies the room of the event<br />
* The [http://cia.vc/stats/project/ReactOS ReactOS CIA page] also shows the message of the last few commits.<br />
<br />
== Request commit (write) access ==<br />
<br />
=== Prerequisites [WIP] ===<br />
<br />
There are a few mandatory prerequisites to getting a direct, full write access (aka "commit access") to the main repository:<br />
<br />
* Ability to communicate in written English.<br />
* Be ready to disclose a full real name and postal address to at least the project's official (e.g. development lead or project lead), and preferably disclose full real name for public access.<br />
* Have no legal restrictions related to contributing code to open source projects.<br />
<br />
=== Applying for write access ===<br />
<br />
Once you have started submitting patches and new code to the project you can be considered for application. We would prefer not to give access to someone who makes two or three updates and then never again. Also, if you are only going to submit patches now and again, you should file a bug in our [http://reactos.org/bugzilla Bugzilla] and attach the patch file to it.<br />
If, however, you become a contributing developer on a continuing basis, you should definitely consider applying for write access. <br />
<br />
=== Who to ask ===<br />
<br />
Join the ReactOS IRC channel on FreeNode [irc://irc.freenode.net/reactos #reactos] and ask.<br />
<br />
Read [http://www.reactos.org/en/community_irc.html ReactOS IRC Channels for more information]<br />
<br />
== Troubleshooting ==<br />
<br />
=== SVN Update says: Object with the same name already exists ===<br />
<br />
When you update your working copy, you may get the error message ''object with the same name already exists''.<br />
<br />
Subversion displays the error message because the directory is replaced in the repository and your working copy contains data which is unknown to Subversion (Your working copy is locally modified). Since Subversion does everything it can to not cause harm to your data, you must remove or move the data which is not in the repository out of the working copy.<br />
<br />
This scenario won't happen very often though. You have two options to correctly resolve the problem:<br />
<br />
* Remove the affected directory and update your working copy again.<br />
* Remove all files and directories in the working copy that are unknown to Subversion and then update your working copy again.<br />
<br />
== Branching ==<br />
<br />
See [[Subversion/Branches]]<br />
<br />
== More information ==<br />
<br />
A complete book about Subversion is available online at http://svnbook.red-bean.com.<br />
<br />
[[Category:Development]]<br />
[[Category:Source Control]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=People_of_ReactOS&diff=29946
People of ReactOS
2011-05-29T16:54:37Z
<p>CycleGeek: Undo revision 29945 by Mauriciograv (Talk)</p>
<hr />
<div>This is a list of developers involved in the ReactOS development. Many volunteers, who contribute their time and energy — testers, translators, people who submit patches — also do much work for the project, but their number is high and varies too often to have a static list for them.<br />
<br />
<br />
== Developers ==<br />
<br />
=== Legend ===<br />
<div style="width: 230px;"><br />
<div {{active}}><span style="padding:5px;">Active Developer</span></div><br />
<div {{inactive}}><span style="padding:5px;">Inactive Developer</span></div><br />
<div {{gone}}><span style="padding:5px;">Previous Developer (Gone)</span></div><br />
</div><br />
<br />
=== List ===<br />
{| class="prettytable sortable"<br />
! Name<br />
! IRC Nickname<br />
! SVN Nickname<br />
! Area of Expertise<br />
|-<br />
| {{active}} | [[Aleksey Bragin]] || Fireball || fireball || Project coordinator, wide-coverage developer focusing on the kernel, boot loader, drivers, and working on pretty much everything in our project<br />
|-<br />
| {{gone}} | [[Alex Ionescu]] || Alex_Ionescu || ion || Kernel developer<br />
|-<br />
| {{active}} | [[Amine Khaldi]] || AmineKhaldi || akhaldi || Bugzilla maintainer, wide-coverage developer<br />
|-<br />
| {{gone}} | [[Andrew Greenwood]] || silverblade || silverblade || Audio support<br />
|-<br />
| {{active}} | [[Andrew Hill]] || ash77 || ahill || ATL, new ReactOS Explorer<br />
|-<br />
| {{active}} | [[Andrew Munger]] || WaxDragon || amunger || Wide-coverage developer<br />
|-<br />
| {{inactive}} | [[Andrey Korotaev]] || unC0Rr || akorotaev || Wide-coverage developer<br />
|-<br />
| {{active}} | [[ArchBlackmann|Arch Blackmann]] || - || ablackmann || Keyboard layout compiler tool; project's official scapegoat :-)<br />
|-<br />
| {{active}} | [[Art Yerkes]] || arty || arty || PowerPC port, networking, kernel<br />
|-<br />
| {{active}} | [[Benedikt Freisen]] || - || bfreisen || Paint for ReactOS<br />
|-<br />
| {{gone}} | [[Boudewijn Dekker]] || - || ariadne ||<br />
|-<br />
| {{gone}} | [[Brian Palmer]] || - || bpalmer || FreeLoader (ReactOS boot loader)<br />
|-<br />
| {{gone}} | [[Brandon Turner]] || BrandonTurner || turner ||<br />
|-<br />
| {{active}} | [[Cameron Gutman]] || aicom || cgutman || Wide-coverage developer<br />
|-<br />
| {{gone}} | [[Carl Nettelblad]] || - || cnettel ||<br />
|-<br />
| {{gone}} | [[Casper Hornstrup]] || Exception || chorns ||<br />
|-<br />
| {{active}} | [[Christoph von Wittich]] || Christoph_vW || cwittich || Wide-coverage developer (including msconfig, regedit, newdev)<br />
|-<br />
| {{active}} | [[Colin Finck]] || Colin_Finck || cfinck || RosBE, website-related software (getbuilds, Wiki, Bugzilla), translations, user-mode stuff, minor commits<br />
|-<br />
| {{active}} | [[Daniel Reimer]] || dreimer / EmuandCo || dreimer || RosBE-Windows, translations<br />
|-<br />
| {{active}} | [[Danny Götte]] || DangerGround || dgoette || Website CMS, compatibility database<br />
|-<br />
| {{gone}} | [[David Welch]] || - || dwelch || Kernel developer of early ReactOS days <br />
|-<br />
| {{active}} | [[Dmitry Chapyshev]] || Lentin || dchapyshev || All user-mode stuff and partially kernel<br />
|-<br />
| {{active}} | [[Dmitry Gorbachev]] || - || dgorbachev || Wide-coverage developer<br />
|-<br />
| {{inactive}} | [[Dominique Cote]] || - || dcote || File system run-time library<br />
|-<br />
| {{gone}} | [[Emanuele Aliberti]] || EmanueleAliberti || ea || Wide-coverage developer<br />
|-<br />
| {{active}} | [[Eric Kohl]] || - || ekohl || Control Panel Applets (CPLs), LSA<br />
|-<br />
| {{gone}} | [[Eugene Ingerman]] || - || ei ||<br />
|-<br />
| {{inactive}} | [[Filip Navara]] || filip2307 || navaraf || Wide-coverage developer<br />
|-<br />
| {{inactive}} | Franz Lehner || - || hamtitampti || Server hosting and management help, relations with other projects<br />
|-<br />
| {{active}} | [[Gabriel Ilardi]] || gabriel_it || ilardig || <br />
|-<br />
| {{inactive}} | [[Ged Murphy]] || GedMurphy || gedmurphy || Wide-coverage developer<br />
|- <br />
| {{gone}} | [[Gé van Geldorp]] || GvG || gvg || Wide-coverage developer<br />
|-<br />
| {{gone}} | [[Gero Kuehn]] || - || kuehng ||<br />
|-<br />
| {{active}}| [[Giannis Adamopoulos]] || smiley || gadamopoulos || Win32 subsystem, other stuff as well<br />
|-<br />
| {{gone}}| [[Gregor Anich]] || blight || blight || OpenGL<br />
|- <br />
| {{inactive}} | [[Gregor Gullwi]] (Gregor Brunmar) || ALiENiD || gbrunmar || CPLs, Win32 subsystem, TBD<br />
|-<br />
| {{active}} | [[Gregor Schneider]] || DosX || gschneider || Graphics (GDI32/Win32k), user-mode components<br />
|-<br />
| {{gone}} | [[Guido de Jong]] || - || guido ||<br />
|-<br />
| {{gone}} | [[Gunnar Dalsnes]] || hardon || gdalsnes ||<br />
|-<br />
| {{gone}} | [[Hernan Ochoa]] || - || hochoa ||<br />
|-<br />
| {{active}} | [[Hervé Poussineau]] || hpoussin || hpoussin || Wide-coverage developer focusing on the kernel and drivers<br />
|-<br />
| {{active}} | [[James Tabor]] || jimtabor || jimtabor || Win32 subsystem and everything related to it<br />
|-<br />
| {{gone}} | [[Jason Filby]] || - || jfilby || Former Project Coordinator<br />
|-<br />
| {{gone}} | [[Jean-Michel Gay]] || - || jean ||<br />
|-<br />
| {{active}} | [[Jeffrey Morlan]] || Goplat || jmorlan || Command-line interpreter (cmd.exe)<br />
|-<br />
| {{gone}} | [[Jens Collin]] || - || jc ||<br />
|-<br />
| {{active}} | [[Jérôme Gardou]] || zefklop || jgardou ||<br />
|-<br />
| {{active}} | [[Johannes Anderwald]] || janderwald || janderwald || User interface, user-mode components, setup components, audio support<br />
|-<br />
| {{active}} | [[Jose Catena]] || - || jcatena || MSVC support<br />
|-<br />
| {{gone}} | [[Jurgen van Gael]] || - || jvangael ||<br />
|-<br />
| {{active}} | [[Kai Tietz]] || ktietz || ktietz ||<br />
|-<br />
| {{active}} | [[Kamil Hornicek]] || Pigglesworth || khornicek || 3D support<br />
|-<br />
| {{active}} | [[KJK::Hyperion]] || hackbunny || hyperion || [[PSEH]], RBuild<br />
|-<br />
| {{inactive}} | [[Klemens Friedl]] || frik85 || frik85 || Website coordinator; website-related software (RosCMS, RSDB, ROST), system search and metadata<br />
|-<br />
| {{active}} | [[Lucas Suggs]] || anakha || lsuggs || Networking stuff<br />
|-<br />
| {{inactive}} | [[Maarten Bosma]] || DrFred || mbosma || Downloader! application; has maintained the cache_manager_rewrite branch<br />
|-<br />
| {{inactive}} | [[Magnus Olsen]] || GreatLord || greatlrd / Greatlrd / greatlord || ReactX, Win32 subsystem and everything related to it, other stuff as well<br />
|-<br />
| {{gone}} | [[Marc Piulachs]] || marc_p || mpiulachs || RBuild; wide-coverage developer<br />
|-<br />
| {{gone}} | [[Mark Tempel]] || mtempel || mtempel ||<br />
|-<br />
| {{inactive}} | [[Martin Fuchs]] || MartinF || mf / martinf || ReactOS Explorer<br />
|-<br />
| {{gone}} | [[Marty Dill]] || - || mdill ||<br />
|-<br />
| {{active}} | [[Matthias Kupfer]] || Collibri || mkupfer || I18n, first stage GUI setup, Win32, CPLs, bug fixing<br />
|-<br />
| {{active}} | [[Michael Martin]] || mjmartin || mjmartin || Wide-coverage developer focusing on the kernel and drivers.<br />
|-<br />
| {{inactive}} | [[Michael Steil]] || - || mist ||<br />
|-<br />
| {{gone}} | [[Michael Wirth]] || - || mwirth || Website phpBB integration<br />
|-<br />
| {{gone}} | [[Michele Cicciotti]] || - || mc || RDesktop<br />
|-<br />
| {{gone}} | [[Mike Nordell]] || tamlin || tamlin / mnordell || Wide-coverage developer<br />
|-<br />
| {{inactive}} | [[Mindflyer]] || mf || mflyer || Graphic designer<br />
|-<br />
| {{gone}} | [[Nathan Woods]] || - || npwoods || Supposed to have worked on notepad and regedit<br />
|-<br />
| {{gone}} | [[Nedko Arnaudov]] || - || narnaoud ||<br />
|-<br />
| {{active}} | [[Olaf Siejka]] || Caemyr || osiejka || <br />
|-<br />
| {{gone}} | [[Paolo Pantaleo]] || - || paolopan ||<br />
|-<br />
| {{gone}} | [[Pablo Borobia]] || - || pborobia ||<br />
|-<br />
| {{inactive}} | [[Peter Ward]] || dralnix || peterw || RosBE, RosDE, minor commits<br />
|-<br />
| {{gone}} | [[Phillip Susi]] || - || phreak / Phreak ||<br />
|-<br />
| {{active}} | [[Pierre Schweitzer]] || HeisSpiter || pschweitzer || Kernel developer <br />
|-<br />
| {{gone}} | [[Rex Jolliff]] || - || rex || Early days developer and CVS maintainer<br />
|-<br />
| {{active}} | [[Rafał Harabień]] || rafalh || rharabien || General bugfixing<br />
|-<br />
| {{gone}} | [[Richard Campbell]] || - || rcampbell || Win32 subsystem bringup<br />
|-<br />
| {{gone}} | [[Robert Dickenson]] || - || robd ||<br />
|-<br />
| {{gone}} | [[Robert Kopferl]] || - || robertk ||<br />
|-<br />
| {{active}} | [[Roel Messiant]] || Mephisto || rmessiant || General bugfixing<br />
|-<br />
| {{inactive}} | [[Royce Mitchell III]] || Royce3 || royce || RBuild development<br />
|-<br />
| {{active}} | [[Samuel Serapión]] || encoded || sserapion || X64 port, CRT; wide coverage debugger and tester<br />
|-<br />
| {{inactive}} | [[Saveliy Tretiakov]] || drG4njubas || tretiakov || RPC, keyboard layouts<br />
|-<br />
| {{inactive}} | [[Sebastian Gasiorek]] || zebasoftis || sgasiorek ||<br />
|-<br />
| {{gone}} | [[Stefan Ginsberg]] || Stefan100 || sginsberg || Kernel, Drivers, MSVC support, KD64<br />
|-<br />
| {{active}} | [[Steven Edwards]] || sedwards || sedwards || Liaison Officer to Wine, winetests, Win32 subsystem<br />
|-<br />
| {{active}} | [[Sylvain Petreolle]] || Usurp || spetreolle || User-mode stuff<br />
|-<br />
| {{inactive}} | [[Thomas Bluemel]] (Thomas Weidenmueller) || w3seek || weiden || Wide-coverage developer<br />
|-<br />
| {{active}} | [[Timo Kreuzer]] || Physicus || tkreuzer || Win32 subsystem and everything related to it, x64 port<br />
|-<br />
| {{gone}} | [[Vizzini]] || - || vizzini ||<br />
|-<br />
| {{active}} | [[Ziliang Guo]] || Z98 / ZWabbit || zguo ||<br />
<br />
|-<br />
| style="height:20px;" | || || ||<br />
|-<br />
<br />
| {{active}} | - ||- || evb || Porting to the ARM platform<br />
|-<br />
| {{active}} | - || lassy || sir_richard || Kernel, hardware abstraction layer<br />
|-<br />
| {{gone}} | [[ReactOS Portable Systems Group]] || - || ros-arm-bringup || Porting to the ARM platform<br />
|-<br />
| {{inactive}} | - || - || winesync || Synchronized ReactOS source code with Wine code<br />
|-<br />
| {{gone}} | - || - || audit || <br />
|-<br />
| {{gone}} | - || - || rosmgr ||<br />
|-<br />
| {{gone}} | ? || - || joeg ||<br />
|-<br />
| {{gone}} | ? || - || nj ||<br />
|-<br />
|}<br />
<br />
{{Project positions}}<br />
<br />
[[Category:Community]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.13&diff=29282
ChangeLog-0.3.13
2011-02-24T06:01:06Z
<p>CycleGeek: mv some cache related commits to cache, some audio related commits to ksfilter</p>
<hr />
<div>This is the changelog for ReactOS™ [[0.3.13|version 0.3.13]] (released XXXXXXX), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.12|version 0.3.12]] (released 20 October 2010).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core developers ===<br />
* Giannis Adamopoulos<br />
* Johannes Anderwald<br />
* Aleksey Bragin<br />
* Dmitry Chapyshev<br />
* Benedikt Freisen<br />
* Jerome Gardou<br />
* Cameron Gutman<br />
* Kamil Hornicek<br />
* Amine Khaldi<br />
* Eric Kohl<br />
* Timo Kreuzer<br />
* Matthias Kupfer<br />
* Michael Martin<br />
* Ged Murphy<br />
* Sylvain Petreolle<br />
* ReactOS Portable Systems Group<br />
* Daniel Reimer<br />
* Gregor Schneider<br />
* Pierre Schweitzer<br />
* James Tabor<br />
* Christoph von Wittich<br />
* Art Yerkes<br />
<br />
=== Patch submitters ===<br />
* Damir Aliev<br />
* Oleg Baikalow<br />
* Carlo Bramini<br />
* Vincenzo Cotugno<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Adam Kachwalla<br />
* Radek Liška<br />
* Roel Messiant<br />
* Love Nystrom<br />
* Igor Paliychuk<br />
* Samuel Serapion<br />
* Víctor Martínez<br />
<br />
=== Localization ===<br />
* spb-ivan92 ({{Bug|5685}})<br />
* wojtekkozlo664 AT op DOT pl ({{Bug|5740}})<br />
* Mario Kacmar<br />
* Andres Traks<br />
<br />
=== Support staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.13 changes ==<br />
=== Applications ===<br />
* Calc: Initialize next field<br />
* Paint: Generalize changes related to mirroring rectangular selections to free form selections, solve problem regarding selection contents update<br />
* Ping: Localization support added<br />
* Regedit: "Load Hive..." and "Unload Hive..." menu items implemented, support added for import/export of v5 registry files, "go" button added to address bar<br />
* Taskmgr: Support added for DELETE key to processes and applications list<br />
* Winmine: Synced and forked from Wine 1.3.5 winemine.<br />
<br />
=== Control Panel Applets ===<br />
=== Installer ===<br />
=== Services ===<br />
== Tests ==<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* avifil32<br />
* browseui<br />
* calc<br />
* cmdutils/reg<br />
* console.cpl<br />
* devmgr<br />
* explorer-new<br />
* intl.cpl<br />
* mscutils/eventvwr<br />
* mscutils/servman<br />
* netid<br />
* regedit<br />
* shell32<br />
* sysdm.cpl<br />
* syssetup<br />
* taskmgr<br />
* timedate.cpl<br />
* usetup<br />
* winmine<br />
<br />
'''Czech'''<br />
* calc<br />
* explorer-new<br />
* input.cpl<br />
* rapps<br />
* sysdm.cpl<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* timedate.cpl<br />
* ping<br />
* shutdown<br />
<br />
'''German'''<br />
* ping<br />
<br />
'''Italian'''<br />
* ping<br />
<br />
'''Japanese'''<br />
* calc<br />
* newdev<br />
* sysstetup<br />
* usetup<br />
<br />
'''Polish'''<br />
* ping<br />
* rapps<br />
<br />
'''Russian'''<br />
* taskmgr<br />
<br />
'''Slovak'''<br />
* calc<br />
* cmd<br />
* format<br />
* usetup<br />
<br />
'''Ukranian'''<br />
* usetup<br />
<br />
== Wine syncs ==<br />
Libraries synced<br />
* atl<br />
* d3d8<br />
* d3d9<br />
* ddraw<br />
* fusion<br />
* gdiplus<br />
* hlink<br />
* iexplore<br />
* mprapi<br />
* msi<br />
* msiexec<br />
* reg<br />
* shdocvw<br />
* urlmon<br />
* wer.dll<br />
* widl<br />
* wined3d<br />
* winemine<br />
* winhlp32<br />
* winhttp<br />
* wininet<br />
* wordpad<br />
* write<br />
* wtsapi32<br />
* xcopy<br />
<br />
== Third party libraries ==<br />
* DejaVu Fonts Documentation updated to 2.31<br />
* RedHat Liberation Fonts updated to 1.06<br />
* Tahoma Fonts undated to Wine HEAD<br />
* bzip2 updated to 2.06<br />
<br />
== BASE ==<br />
=== APPLICATIONS ===<br />
==== CMDUTILS ====<br />
* Fix compilation with msvc by GetProcAddress'ing undocumented functions, TCHAR -> WCHAR in the process ([[Jérôme Gardou]])<br />
<br />
===== XCOPY =====<br />
* Spanish translation by JasonGenie at gmail dot com ([[Amine Khaldi]]; {{bug|5889}})<br />
* Add stubs for all page heap API functions. ([[Aleksey Bragin]])<br />
* Enable call to RtlpPageHeapDestroy() when necessary. ([[Aleksey Bragin]])<br />
* Reset Parameters==-1 hack after unsuccessful call to RtlpPageHeapCreate(), would be necessary when page heap is implemented.. ([[Aleksey Bragin]])<br />
<br />
==== FINDSTR ====<br />
* Port findstr (incomplete, as author of this patch states, it may satisfy RosBE, .c .h and .rc files) from FreeDOS project. Needed for RosBE-on-ReactOS support. ([[Aleksey Bragin]]; {{bug|5724}})<br />
<br />
==== NETWORK ====<br />
* Use memcpy with sizeof instead of strncpy with strlen to make sure the destination string will be zero terminated. ([[Timo Kreuzer]])<br />
* CID 1649 ([[Timo Kreuzer]])<br />
<br />
===== PING =====<br />
* Implement small helper MyLoadString, using FindResource, LoadResource, LockResource and replacing LoadString, so we don't need to link to user32 anymore. ([[Timo Kreuzer]])<br />
* Fix typos ;) ([[Johannes Anderwald]])<br />
* Fix MyLoadString. (menone7)<br />
<br />
==== REGEDIT ====<br />
* Fix a bug causing registry entries with names containing a backslash to be displayed incorrectly ([[Cameron Gutman]])<br />
* Adam Kachwalla <geekdundee@gmail.com> ([[Aleksey Bragin]]; {{bug|5711}})<br />
** Make address bar case-insensitive<br />
** Remove trailing slashes in address bar when at root keys (e.g. "HKEY_LOCAL_MACHINE\" or "HKEY_CURRENT_USER\")<br />
<br />
=== SERVICES ===<br />
* Remove the reference counter from the common handle type as a handle is never shared or duplicated. ([[Eric Kohl]])<br />
* Remove the access right from the service handle as it is not used. ([[Eric Kohl]])<br />
* Dereference service manager handles and service handles in two separate functions that SEH-protect the initial access to the handle and signature check. This will protect SCM from bogus handles. ([[Eric Kohl]])<br />
* Use new handle check functions in RCloseServiceHandle(). ([[Eric Kohl]])<br />
* RControlService: Check if a control request is acceptable for a user mode service before sending it to the service. ([[Eric Kohl]])<br />
* RControlService: Check the current state before sending a control request. ([[Eric Kohl]])<br />
* Merge ScmControlService() and ScmSendStartCommand() into ScmSendServiceCommand(). ([[Eric Kohl]])<br />
* Revert r49366. ([[Eric Kohl]])<br />
* Fix a typo (|| instead of |). Found by clang. ([[Timo Kreuzer]])<br />
<br />
==== EVENTLOG ====<br />
* Rename the EVENTSOURCE struct to LOGHANDLE because it is currently used like a handle object. The EVENTSOURCE struct will be added again in one of the next commits. ([[Eric Kohl]])<br />
<br />
==== UMPNPMGR ====<br />
* Start using XP- and Vista-compatible pipe names for the RPC endpoint. Kick out the ROS-specific \pipe\umpnpmgr one. ([[Roel Messiant]])<br />
* Use only the Vista pipe name for now, using the XP one makes device installation fail.. ([[Roel Messiant]])<br />
* Use the correct PNP interface UUID ([[Roel Messiant]])<br />
<br />
==== USETUP ====<br />
* fix GeoID bug (forgotten \0) ([[Matthias Kupfer]])<br />
* add missing close for handle ([[Matthias Kupfer]])<br />
* one more fix (on request of Pierre S.) ([[Matthias Kupfer]])<br />
<br />
=== SETUP ===<br />
* 5540 5604 5614 5617 for more details. ([[Amine Khaldi]]; {{bug|5536}})<br />
* Fix a really mean bug: wcslen() returns the size in characters whereas MaximumLength has to be in bytes. ([[Pierre Schweitzer]])<br />
* Now, this sets MaximumLength to its appropriate size and prevents some memory issues (and buffers having odd size, which is weird for an unicode string...). ([[Pierre Schweitzer]])<br />
<br />
==== CMD ====<br />
<br />
=== SHELL ===<br />
* Carlo Bramix: MultiByteToWideChar() has just 6 and not 8 parameters, probably it's a forgetten copy/past from WideCharToMultiByte(). ([[Aleksey Bragin]]; {{bug|5678}})<br />
* Carlo Bramix: ConvertULargeInteger() should have its parameter 'Len' declared as UINT rather than 'INT'. This fixes a signed/unsigned mismatch warning. ([[Aleksey Bragin]]; {{bug|5678}})<br />
<br />
==== EXPLORER ====<br />
* Track the only Global Hook ReactOS has. ([[James Tabor]])<br />
* Revert last change. ([[James Tabor]])<br />
<br />
==== EXPLORER-NEW ====<br />
* Fix another "sizeof" usage mistake ([[Cameron Gutman]])<br />
* CID 1631 ([[Cameron Gutman]])<br />
<br />
=== SYSTEM ===<br />
<br />
==== SMSS ====<br />
* Remove the ROS_DOESNT_SUCK hack, and correctly started subsystem processes with the first MB reserved. ([[sir_richard]])<br />
<br />
==== WINLOGON ====<br />
* Add msg constants (by smiley) ([[Johannes Anderwald]])<br />
<br />
== BOOT ==<br />
<br />
=== ARMLLB ===<br />
* Make DbgPrint compatible so we can use debug.h. ([[sir_richard]])<br />
* Add support for ATAG_REVISION. ([[sir_richard]])<br />
* Fix support of ATAG_MEM: there can be multiple tags, one per DRAM bank. ([[sir_richard]])<br />
* Fix the default case not to "return": it should "Break" instead. ([[sir_richard]])<br />
* Only apply the RAMDisk hack on Beagle for now. ([[sir_richard]])<br />
* Add uImage header which uBoot expects on the images it can load nicely (using "go" will not give us ATAGs, "bootm" requires this header). It's a static header instead of requiring the mkImage tool, since we can disable data checksums in uBoot. We basically fake being a Linux kernel and the LLB handles the ATAGs. ([[sir_richard]])<br />
* Add boot stack for Zoom2. ([[sir_richard]])<br />
* Initialize hardware before parsing environment variables. This makes more sense, and also allows debug output from the environment scanning code. ([[sir_richard]])<br />
* Add the MACHINE_TYPE code for the ZOOM2, based on the standard machtype definitions maintained by the various boot loader communities. ([[sir_richard]])<br />
* Forgot to commit this earlier: define the ATAG_REVISION header. ([[sir_richard]])<br />
* Include FreeLoader's keycode mappings (which don't seem standard) in ARMLLB, so we can do correct keypad to keycode translation. ([[sir_richard]])<br />
* Include ReactOS's standard debug.h, which lets us un-redefine DbgPrint, and also gives us goodies like ASSERT and DPRINT1. ([[sir_richard]])<br />
* We made certain assumptions in the "generic" files that are actually board-specific. For example, Versatile does indeed return a strange ULONG as the RTC time (seconds since 1970, I think), but TWL4030 on the ZOOM2 is normal and returns BCD RTC values just like the PC CMOS. Therefore, most of the "Generic" time.c code should move to versatile later. For now, use an IFDEF. ([[sir_richard]])<br />
* Likewise, not all platforms have a PS/2 controller like the Versatile. ZOOM2 for example has a keypad, so the generic "input" file shouldn't assume keyboard-only. As such, most of the code there should also be made specific, but for now, use an ifdef. ([[sir_richard]])<br />
* Although the soothing BSOD blue color is nice for LLB debugging, we'd really prefer to have black so it looks more natural on the eyes when booting to FreeLoader. As such, make the default backcolor black, but keep the old blue color for early testing, if enabled with a define. ([[sir_richard]])<br />
* Split up support between OMAP3 Beagle and ZOOM2. ([[sir_richard]])<br />
* Implement ZOOM2 ARMLLB board support package. TWL4030 read/write implemented (through basic I2C on the HS interface), RTC and Keypad Matrix implemented (through TWL4030), NEC WVGA Panel Initialization (through basic SPI interface on the MBPSI), basic clock setup and GPIO access for DSS/DISPC, setup DSS/DISPC for output on the NEC panel. UART implemented through Quad-UART NS16550 compatible chip (using CPORTlib). ([[sir_richard]])<br />
* Requires having been booted through x-loader+uboot as a kernel image. Will work on directly booting from NAND later. ([[sir_richard]])<br />
* Delete deprecated folder ([[sir_richard]])<br />
* Add missing UART functionality for ZOOM2. Leverages existing CPORT library. ([[sir_richard]])<br />
<br />
=== FREELDR ===<br />
* Fix CDs checksum computation ([[Pierre Schweitzer]])<br />
* Convert most of the trap and blue screen code from asm to C, use KTRAP_FRAME and KSPECIAL_REGISTERS on the stack, instead of using a bunch of global variables. Convert multiply used asm code chunks into macros. Use intel syntax for remaining asm. ([[Timo Kreuzer]])<br />
* 135 lines of C + 178 lines of asm, instead of 942 lines of asm ([[Timo Kreuzer]])<br />
* On ARM, don't turn on maximum, hyper, ultra-slow debugging and analysis features for the heap. This, for example, reduces FreeLoader's size by 32KB+ and speeds up boot by entire seconds, as the entire heap isn't zeroed out on startup. ([[sir_richard]])<br />
* May I humbly suggest you do the same on x86?! ([[sir_richard]])<br />
* Add startup file for ARM builds as well, so that _start can be the first function in the file. ([[sir_richard]])<br />
* Set load address for ZOOM2, and differentiate Beagle vs ZOOM2. ([[sir_richard]])<br />
* Add linker script for ARM as well. We drop the relocation section as it shouldn't be needed. ([[sir_richard]])<br />
* Add more keycodes. ([[sir_richard]])<br />
* Put ARM boot code in .init section to guarantee it goes first in the file, as per the linker script. ([[sir_richard]])<br />
* Define FreeLoader module for ARM. Differences with x86 are mostly due to the fact "bootloader" was unfortunately made an x86-specific module type, so we have to use "kernel" to get around that, which thankfully has remained portable. ([[sir_richard]])<br />
* VaToPa/PaToVa are assuming all architectures have VA at PA | KSEG0_BASE. This is not the case. On ZOOM2, DDR RAM starts at 0x80000000 for example, so KSEG0 == VA == PA. Use an ifdef do handle this. ([[sir_richard]])<br />
* Headless/EMS support is an x86-specific feature (at least for now, until the code is made portable). ([[sir_richard]])<br />
* Use PaToVa to set the Hive and NLS data pointers, instead of assuming that KSEG0_BASE | Pa is the correct answer for all architectures. ([[sir_richard]])<br />
* Cleanup firmware table setup and add support for being booted from a ZOOM2 ARMLLB, and set the correct file system buffer address for that board. ([[sir_richard]])<br />
* For *every single heap allocation*, there was code to request an entire *heap statistic run*! This is ridiculous and slows heap allocations tremendously. Additionally, it also assumes bstats was linked in, which it might not be if the flag wasn't set in bheap.c. Only enable this code if a special MM_DBG define is set. ([[sir_richard]])<br />
* Done originally for ARM, but I think x86 will appreciate the benefit too (and x86 can now go ahead and disable all those ridiculous debug settings that are turned on by default in bheap.c). ([[sir_richard]])<br />
* Fix RAM layout assumptions in ARM code. ([[sir_richard]])<br />
* poor little printf causes boot break, nuff said. ([[Sylvain Petreolle]])<br />
* Conditionally enable heap-related debugging and validation checks by an MM_DBG define for all architectures. Inspired by 49744. ([[Aleksey Bragin]])<br />
* Delete a duplicate line. ([[Dmitry Gorbachev]])<br />
* compile headless support only for x86 ([[Timo Kreuzer]])<br />
* merge most spec file changes from cmake branch ([[Timo Kreuzer]])<br />
* add stub files to build ([[Timo Kreuzer]])<br />
* Add missing stubs.h ([[Timo Kreuzer]])<br />
<br />
==== FREELDR ====<br />
<br />
===== ARCH =====<br />
<br />
====== AMD64 ======<br />
* Add ksamd64.inc ([[Timo Kreuzer]])<br />
<br />
====== ARM ======<br />
* Our new target is the ZOOM2 OMAP3, instead of Beagle (but we'll keep testing both). ([[sir_richard]])<br />
* The text section is called ".text", not "text". This caused any ARM assembly to create a new section in the PE and waste 4KB. ([[sir_richard]])<br />
<br />
===== CACHE =====<br />
* Cache manager rewrite: ([[Art Yerkes]])<br />
** The cache manager rewrite I started years ago has finally appeared in ReactOS' trunk and although at this point it's not quite perfectly integrated, it's enough to boot up the bootcd or livecd. To check out the more mature original, check out arty-newcc-reactos, branch arty-newcc on bitbucket.org. Amine Khaldi encouraged me quite a bit to not give up on it, and was able to reach out and be an advocate when i really wasn't able to. Others agree that the time has come to begin removing the old cache manager. I expect the remaining problems in the version going to trunk will be taken care of relatively quickly.<br />
** The motivation for this effort lies in the particularly hairy relationship between ReactOS' cache manager and data sections. This code completely removes page sharing between cache manager and section and reimagines cache manager as being a facility layered on the memory manager, not really caring about individual pages, but simply managing data section objects where caching might occur.<br />
** It took me about 2 years to do the first pass of this rewrite and most of this year to fix some lingering issues, properly implement demand paging in ReactOS (code which didn't come with this patch in a recognizable form), and finish getting the PrivateCacheMap and SharedCacheMap relationship correct.<br />
** Currently, the new ntoskrnl/cache directory contains an own implementation of data file sections. After things have settled down, we can begin to deprecate and remove the parts of ReactOS' section implementation that depend on a close relationship with cache manager. Eventually, I think that the extra code added to ntoskrnl/cache/section will be removed and ReactOS' own sections will replace the use of the special MM_CACHE_SECTION_SEGMENT in the cache path.<br />
** Note also, that this makes all cache manager (and new section parts) use wide file offsets. If my section code were to take over other parts of the ReactOS memory manager, they would also benefit from these improvements.<br />
** I invite anyone who wants to to peek at this code and fix whatever bugs can be found.<br />
* Part 1 of fixes: ([[Art Yerkes]])<br />
** For some reason beyond me, I had abbreviated MiCowSectionPage to always assume CoW rather than always not CoW for cache sections.<br />
** Make sure we're looking for cache type sections rather than as we were in the branch) data file sections. More needed.<br />
* Make sure to initialize our page operation mutex. ([[Art Yerkes]])<br />
* Scan the whole range of the MemoryArea for pages to evict. ([[Art Yerkes]])<br />
* This fixes cache section page eviction. ([[Art Yerkes]])<br />
<br />
===== DISK =====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Also added support for IOCTL_DISK_GET_DRIVE_GEOMETRY_EX. ([[Pierre Schweitzer]])<br />
* Hackplemented support for IOCTL_DISK_GET_PARTITION_INFO_EX. It will work fine for MBR partitions but will fake returns for GPT partitions. ([[Pierre Schweitzer]])<br />
* Implemented support for IOCTL_DISK_GET_LENGTH_INFO ([[Pierre Schweitzer]])<br />
<br />
===== RTL =====<br />
* Fixed a really stupid (and old) bug in RtlComputeCrc32(): ([[Pierre Schweitzer]])<br />
* First parameter is initial CRC32 checksum. And it's complete and not partial, thus it needs to be an ULONG and not an USHORT. ([[Pierre Schweitzer]])<br />
* This fixes CRC32 checksum computation with initial checksum (tested again Windows 2003 & Seven). ([[Pierre Schweitzer]])<br />
* Fix heap code to actually use the new lock instead of using RTL_CRITICAL_SECTION. ([[Aleksey Bragin]])<br />
* Fix a ROUND_UP and ROUND_DOWN macros: it is a *rule* to wrap every argument in braces in a macro, otherwise shit happens. A couple of days were lost fighting a strange bug in the new heap manager code where it was doing ROUND_UP(Heap + 1, PAGE_SIZE)... ([[Aleksey Bragin]])<br />
* Change RtlLockBootStatusData prototype according to http://cookp.com/%2F/thread/1111206/how%20can%20i%20detect%20last%20boot%20success ([[Eric Kohl]])<br />
* Carlo Bramini <carlo DOT bramix AT libero DOT it> ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix for render status bar after changing line wrap and flicker issue. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* for details. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix RtlSetUserFlagsHeap declaration and definition. ([[Aleksey Bragin]])<br />
* Fix a bug introduced Mon Dec 6 00:25:14 1999 UTC (10 years, 10 months ago) in revision 828. NtFreeVirtualMemory takes a pointer to the address to free, not the address instead. For the last 11 years, freeing the process parameter block resulted in freeing whatever the first value in the structure is, which is MaximumLength and initialized to 0x1000. ReactOS would then free whatever random address was in that area. In real Windows, it is illegal to free an allocation in the middle of the base address, and this call failed with the new VAD code. ReactOS either leaked the memory or freed random data, who knows. ([[sir_richard]])<br />
* Make the PPB live in the Heap instead of having its own virtual allocation, fixing the issue above. Stop rounding it to a PAGE_SIZE, and just use the space required. ([[sir_richard]])<br />
* Roel Messiant: Specify proper byte length of a unicode string. Fixes out of bounds access in actctx.c support code. No more half-cut active context stuff in debug logs. ([[Aleksey Bragin]])<br />
* Minor code changes to RTL (one would call them "optimisation"). Added some missing paged code. ([[Pierre Schweitzer]])<br />
* Plus added useful asserts (used to catch r50615 bug!) ([[Pierre Schweitzer]])<br />
* Merge changes to rtl from cmake branch. Mostly use portable interlocked functions ([[Timo Kreuzer]])<br />
* Move page heap related code to heappage.c. ([[Aleksey Bragin]])<br />
<br />
===== SRC =====<br />
<br />
====== DRIVERS ======<br />
<br />
==== MESA32 ====<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Add missing breaks. (Samuel)<br />
<br />
=== DIRECTX ===<br />
* Jerome Gardou: Almost all of the ddraw->refcount winetests pass. One remains, due to the fact that IdirectDrawSurface::SetPalette is unimplemented. IDirectDraw::Createpalette is implemented too, but needs testing. There are no parameter checks. ([[Aleksey Bragin]]; {{bug|4909}})<br />
* Comments from me: The patch is not build-tested, however I did my best to merge it to existing ddraw and I prefer the actual code to be in the repository rather than hanging in bugzilla for years (last comment to the patch is dated 29.10.2009). ([[Aleksey Bragin]]; {{bug|4909}})<br />
<br />
===== D3D =====<br />
* Preparations for update to widl 1.3.4. ([[Eric Kohl]])<br />
<br />
==== WINE ====<br />
* Add iscntrlW() definition ([[Cameron Gutman]])<br />
* Fix non-x86 versions of Wine's push/pop exception frame macro. ([[sir_richard]])<br />
<br />
===== WINED3D =====<br />
* Update wined3d, ddraw, d3d8 and d3d9 to Wine 1.3.4. ([[Kamil Hornicek]])<br />
* Our CRT causes duplicate definitions, when trying to use it as fallback for missing msvcrt imports. Work around this limitation by adding powf and sqrtf wrappers for amd64 builds ([[Timo Kreuzer]])<br />
<br />
=== NTDLL ===<br />
* Use LOCK instead of lock for SList assembly functions, this is a conditional such that on UP, "lock" instruction won't be generated. ([[sir_richard]])<br />
* Apply the special begin/fault/resume lablels to the user-mode SList functions. Access faults can happen there due to a bug in the Windows algorithm, and Mm will need to handle that. ([[sir_richard]])<br />
* Fix loading of GlobalFlags in Image File Execution Options. I really wonder who had that brilliant idea that bitwise flags would be stored as a string in the registry. ([[Aleksey Bragin]])<br />
* If there is a GlobalFlags value specified in the registr for that specific image, it means that value should overwrite NtGlobalFlags. Fix that too (previously it was ORing which made no sense). ([[Aleksey Bragin]])<br />
* Respectively fix incorrect data type for GlobalFlags in ReactOS registry. ([[Aleksey Bragin]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* LoadImageFileExecutionOptions() improvements: ([[Aleksey Bragin]])<br />
* Apply certain heap flags if the process is being debugged (only if NtGlobalFlags is not overridden). ([[Aleksey Bragin]])<br />
* Implement enabling page heap and reading image-specific configuration values. ([[Aleksey Bragin]])<br />
* Add page heap configuration values to the Heap Manager. ([[Aleksey Bragin]])<br />
* Fix a typo which always set page heap enabled to true. ([[Aleksey Bragin]])<br />
* Load image execution options before creating process heap (so that GlobalFlag overrides can be taken into account). ([[Aleksey Bragin]])<br />
* Make LdrQueryImageFileExecutionOptions avoid heap usage when possible (and when it's not possible, fail with out of memory status). ([[Aleksey Bragin]])<br />
* Fixes a dramatic count of ~100 failures in "kernel32_winetest heap". ([[Aleksey Bragin]])<br />
* Don't access unitialized memory. Caught thanks to a new heap manager, and this fixes all weird actctx exceptions in kernel32_winetest heap. ([[Aleksey Bragin]])<br />
* Fix LdrVerifyImageMatchesChecksum() prototype. ([[Aleksey Bragin]])<br />
* Move RtlPcToFileHeader to rtl/libsupp.c ([[Timo Kreuzer]])<br />
* Raise harderror and terminate process when the image is of a foreign architecture. ([[Timo Kreuzer]])<br />
* Fix harderror status on machine type mismatch and pass file name. ([[Timo Kreuzer]])<br />
<br />
==== ADVAPI32 ====<br />
<br />
=== WIN32 ===<br />
* Roel Messiant: Properly handle STATUS_BUFFER_TOO_SMALL in RegEnumValueW implementation. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Katayama Hirofumi: Use DataLength field in RegEnumValueW instead of DataOffset. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Roel Messiant: Test behaviour in Vista and apply same fix to RegEnumValueA. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Implement LsaCreateAccount(), LsaOpenAccount() and LsaSetInformationPolicy(). ([[Eric Kohl]])<br />
* Implement LsaAddPrivilegesToAccount(), LsaCreateTrustedDomain(), LsaDeleteTrustedDomain() and LsaOpenTrustedDomainByName(). ([[Eric Kohl]])<br />
* Move the Encrypted File System (EFS) functions into their own file. ([[Eric Kohl]])<br />
* Roel Messiant: Fix short-circuit evaluation. ([[Aleksey Bragin]]; {{bug|5677}})<br />
* Implement LsaAddAccountRights(), LsaQueryTrustedDomainInfoByName() and LsaRemoveAccountRights(). ([[Eric Kohl]])<br />
* ConvertStringSidToSidW: Stop writing 1 subauthority too much. Fixes a DWORD sized buffer overflow. Should fix bug #5764. ([[Roel Messiant]])<br />
* ConvertStringSidToSidW: Don't leak an allocated SID in case of failure. ([[Roel Messiant]])<br />
* Move file encryption functions from crypt/crypt.c to misc/efs.c. ([[Eric Kohl]])<br />
<br />
==== ATL ====<br />
* Ettl Martin: Make CComCriticalSection destructor virtual. ([[Aleksey Bragin]]; {{bug|4975}})<br />
<br />
==== AUTHZ ====<br />
* Fix AuthzReportSecurityEvent, AuthzInitializeObjectAccessAuditEvent and AuthzInitializeObjectAccessAuditEvent2 prototypes. ([[Amine Khaldi]])<br />
* Missed these. ([[Amine Khaldi]])<br />
* Another dll addition to cmake, another rc file fix. ([[Daniel Reimer]])<br />
<br />
==== AVIFIL32 ====<br />
* Split utf8 resources into theit own file (MSVC compatibility) ([[Timo Kreuzer]])<br />
<br />
==== CFGMGR32 ====<br />
* Add missing functions. ([[Eric Kohl]])<br />
* Add forwarders to functions that are exported by setupapi.dll. ([[Eric Kohl]])<br />
* Mark deprecated functions. ([[Eric Kohl]])<br />
<br />
==== COMCTL32 ====<br />
* Fix bitmap resources. They were not very valid. Windows didn't even load them. Probably created with some linux tool *cough* ([[Timo Kreuzer]])<br />
* Fixes part of the broken icons. Not the pink ones though. ([[Timo Kreuzer]])<br />
* Revert 45676 ([[Johannes Anderwald]])<br />
* It appears that the definitions for IID_IUnknown differ for kernel mode COM and user mode COM ([[Johannes Anderwald]])<br />
<br />
==== DEVMGR ====<br />
* DisplayDevicePropertyText: Use full DWORD value, not just one byte of it (CID 1803). ([[Roel Messiant]])<br />
<br />
==== GDI32 ====<br />
* Don't make the wrong assumption that POINT and POINTL are identical. ([[Timo Kreuzer]])<br />
* remove useless memory reallocation : the buffer size must be dword aligned, we have no way to guarantee the buffer location will be. ([[Jérôme Gardou]])<br />
* pass BITMAPINFO pointer size to NtGdiGetDIBitsInternal ([[Jérôme Gardou]])<br />
* Implement GdiGetDcAttr. Just for convenience / cleaner code. ([[Timo Kreuzer]])<br />
* Move EFLOAT handling in seperate file, its x86 specific ([[Timo Kreuzer]])<br />
* Implement CombineTransform fully in usermode instead of forwarding to NtGdiCombineTransform ([[Timo Kreuzer]])<br />
* Implement MatrixToXForm ([[Timo Kreuzer]])<br />
* Implement GdiTransformPoints ([[Timo Kreuzer]])<br />
* GDI32] ([[Timo Kreuzer]])<br />
* Check paramters in CombineTransform ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf, 2nd try :) ([[Timo Kreuzer]])<br />
<br />
==== IPHLPAPI ====<br />
* Rewrite name server enumeration routines ([[Johannes Anderwald]])<br />
* Check if static dns entries are present before checking for dynamic dns entries ([[Johannes Anderwald]])<br />
* Fixes static dns entries ([[Johannes Anderwald]])<br />
* Remove conditional redefine of DPRINT. Wine debug channels at this point, and we have NDEBUG. ([[Roel Messiant]])<br />
* Use TRACE instead of DbgPrint. Gets rid of the "Status 2" spam when no static nameserver is in the registry. ([[Roel Messiant]])<br />
<br />
==== KERNEL32 ====<br />
* Winnls.h can be included now. ([[Kamil Hornicek]])<br />
* Igor Paliychuk: Fix properly showing genitive names from NLS data by applying a missed Wine sync. ([[Aleksey Bragin]]; {{bug|5556}})<br />
* NtCreateSection should not be called with merely SEC_FILE: this says nothing about what kind of operation should be done (a commit, a reserve, etc?). Use SEC_COMMIT instead to specify correct operation. This works in ReactOS as of now, but would've failed after the NtSection* API rewrite. ([[sir_richard]])<br />
* CreateFileMappingW should also accept/allow SEC_LARGE_PAGES, even if we don't suppport it yet. ([[sir_richard]])<br />
* Revert incorrect changes from 34404 and 40910: RtlSetUserFlagsHeap() doesn't set usual heap flags, it sets special user-settable heap entry flags. With the new heap manager such usage corrupts heap integrity (not to say prototype of this function is incorrect). ([[Aleksey Bragin]])<br />
* RtlReAllocateHeap() is supposed to copy user values and flags so there is no need to set them afterwise again. ([[Aleksey Bragin]])<br />
* Print delphi exception with the Exception code 0xeedfade, we were previously only checking for 0xeedface, maybe an older value. ([[Timo Kreuzer]])<br />
* Remove the old version of WaitNamedPipeW. ([[Eric Kohl]])<br />
* This patch fixes the broken wait pipe code. It was written and tested on r49458 because later revisions do not work for me. ([[Eric Kohl]])<br />
* Added real implementation of SetLastError() (instead of forwarding to NTDLL) ([[Pierre Schweitzer]])<br />
* Implemented BaseSetLastNTError() ([[Pierre Schweitzer]])<br />
* Renamed Basep8BitStringToCachedUnicodeString() to Basep8BitStringToStaticUnicodeString() and sightly changed its implementation ([[Pierre Schweitzer]])<br />
* Fixed implementation of LoadLibraryExA() & DisableThreadLibraryCalls() using those changes ([[Pierre Schweitzer]])<br />
* This is matching w2k3 implementation. This is of course a WIP. ([[Pierre Schweitzer]])<br />
* Revert r49761 on Pierre's request ([[Timo Kreuzer]])<br />
* Fix heap corruptions in MoveFileWithProgress ([[Johannes Anderwald]])<br />
* Fixes kernel32_winetest change crash ([[Johannes Anderwald]])<br />
* Introduced in rev 18073 (25.Sept 2005) ([[Johannes Anderwald]])<br />
* ReadDirectoryChangesW: Treat the OVERLAPPED structure as an IO_STATUS_BLOCK, not one of its fields. ([[Roel Messiant]])<br />
<br />
==== LSASRV ====<br />
* Add ServiceInit() stub and call it from lsass. ([[Eric Kohl]])<br />
* Change the calling convention of all LSA-RPC function to stdcall. ([[Eric Kohl]])<br />
* Export some of the LSA-RPC functions. ([[Eric Kohl]])<br />
<br />
==== MSI ====<br />
* Fix freed memory access and fix freeing of invalid pointer. (from http://www.winehq.org/pipermail/wine-patches/2010-October/094849.html ) ([[Aleksey Bragin]]; {{bug|3755}})<br />
<br />
==== MSVCRT ====<br />
* Don't export _matherr ([[Timo Kreuzer]])<br />
* Apply a hack to msvcrt spec file to avoid duplicate definition of atexit. Mingw-w64 has an identical hack. ([[Timo Kreuzer]])<br />
* No reason for wcsxfrm to be a stub when code is here. ([[Sylvain Petreolle]])<br />
<br />
==== NETCFGX ====<br />
* GetPerAdapterInfo requires IP_PER_ADAPTER_INFO struct ([[Johannes Anderwald]])<br />
* Fix reading static dns entries ([[Johannes Anderwald]])<br />
* Delete static name server key, when changing dns servers to automatic (dhcp) ([[Johannes Anderwald]])<br />
* Don't delete DhcpNameServer key yet, as more interaction is needed with dhcp service when changing from static dns to dynamic dhcp ([[Johannes Anderwald]])<br />
* Should finally fix static dns when dhcp is active ([[Johannes Anderwald]])<br />
* Fix case where there is only one static dns server set ([[Johannes Anderwald]])<br />
<br />
==== OLEACC ====<br />
* Use an actual entrypoint. Needed to record the instance handle, used by various function that access resources of the module. Should fix oleacc:main winetest. ([[Roel Messiant]])<br />
<br />
==== RPCRT4 ====<br />
* Add a missing format type to unmarshall_discriminant(). ([[Eric Kohl]])<br />
<br />
==== SETUPAPI ====<br />
* Implement CM_Get_Device_ID_List_ExW(). ([[Eric Kohl]])<br />
* SetupDiClassNameFromGuidExW: Rewrite to prevent a buffer overflow and pass additional winetests. Should fix bug #5474. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExA: Return the required buffer size in failure cases. ([[Roel Messiant]])<br />
* Bind to the PNP service using the Vista-compatible pipe. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExW: Simplify interaction with registry. ([[Roel Messiant]])<br />
* SetupDiCreateDeviceInfoW: Check for correct error value. ([[Roel Messiant]])<br />
* SetupDiGetClassDescriptionExW: Rewrite to return the correct required size and prevent WCHAR sized buffer overflow. ([[Roel Messiant]])<br />
* SetupDiGetClassDevsExW: Return INVALID_HANDLE_VALUE instead of NULL in failure case. ([[Roel Messiant]])<br />
* Implement CMP_WaitServicesAvailable(). ([[Eric Kohl]])<br />
* CM_Get_First_Log_Conf_Ex(): Create a LOG_CONF_INFO struct only if plcLogConf is not NULL. ([[Eric Kohl]])<br />
* Fix a warning. ([[Eric Kohl]])<br />
* Implement CM_Is_Version_Available and CM_Is_Version_Available_Ex. ([[Eric Kohl]])<br />
* Add resource descriptor function stubs. ([[Eric Kohl]])<br />
<br />
==== SHELL32 ====<br />
* Enable code as we support now IOCTL_DISK_GET_LENGTH_INFO ([[Johannes Anderwald]])<br />
* IOCTL_DISK_GET_LENGTH_INFO implemented in 49369 ([[Johannes Anderwald]])<br />
* Implement copy / paste for files when tree view is present ([[Johannes Anderwald]])<br />
* Don't add shortcuts / executables to recent file list ([[Johannes Anderwald]])<br />
* Add NULL checks in IShellView and IDropTarget implementations. Should fix bug #5780. ([[Roel Messiant]])<br />
<br />
==== SHLWAPI ====<br />
* Explicitly add msvcrt before ntdll to use it's *sprintf functions. Fixes bug 5557 ([[Timo Kreuzer]])<br />
<br />
==== SYSSETUP ====<br />
* SC Manager needs SC_MANAGER_ENUMERATE_SERVICE access right to be able to open a service ([[Jérôme Gardou]])<br />
* Add debug prints to help tracking down the "EnableUserModePnpManager()" issue ([[Jérôme Gardou]])<br />
<br />
==== USER32 ====<br />
* Remove the last reactos-only export from user32 (PrivateCsrssManualGuiCheck) ([[Giannis Adamopoulos]])<br />
* One more leftover to add. Now we test for both Local and Global hooks in user32. This will force any message sent to win32k if there are any Global hookers so we loose in performance. We need to rethink our usage of these Global hookers in our code. ([[James Tabor]])<br />
* Fix an over site and copy the return data back to the kernel. ([[James Tabor]])<br />
* Sync up with wine 1.2 rc6 menu so it will pass the tests from rev 47939. ([[James Tabor]])<br />
* Fixed export for PrintWindow and 5609. ([[James Tabor]]; {{bug|5466}})<br />
* Remove a bunch of uneeded code in GetMessage and PeekMessage that copyied the lparam in a new buffer and did unicode to ansi convertions. It is not needed because they don't receive messages with pointers any more ([[Giannis Adamopoulos]])<br />
* Fix all the user32 wine win test_parent_owner tests. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 30 failures dealing with rect size, Class and Title names. ([[James Tabor]])<br />
* Controls: Set fnids for the user client controls. ([[James Tabor]])<br />
* Start creeping in more Left to Right support, readying up for the next wine User32 controls port and test sync. Code is based on wine, credit them for any breakages. 8^P Our positions are off by 103 x 122 in some test cases, anyone having an idea please chime in. ([[James Tabor]])<br />
* Happy New Year! ([[Aleksey Bragin]])<br />
* Dear ReactOS team, you're the best. ([[Aleksey Bragin]])<br />
* Use new wsprintf library, remove old code (536 lines) ([[Timo Kreuzer]])<br />
* Fixes output of %I64, for example dxdiag ([[Timo Kreuzer]])<br />
* Implement sending EVENT_SYSTEM_DIALOGSTART event. It will be used by rosautotest ([[Giannis Adamopoulos]])<br />
* Fix bug in CreateIconIndirect ([[Timo Kreuzer]])<br />
* implement get_icon_size ([[Timo Kreuzer]])<br />
* use unmodified wine code for STATIC_PaintIconfn ([[Timo Kreuzer]])<br />
* Fix CreateIcon and CreateIconIndirect. Fixes user32_winetest:cursoricon. (Yes we execute less tests, but that is correct! wine probably only passes these tests by chance) ([[Timo Kreuzer]])<br />
<br />
==== WINHTTP ====<br />
<br />
==== WININET ====<br />
* Add a ROS-specific change that was missed during the last winesync to fix winsock error handling ([[Cameron Gutman]])<br />
* Remove the CP_UNIXCP definition ([[Cameron Gutman]])<br />
* Use WSASetLastError instead of errno in inet_ntop.c ([[Cameron Gutman]])<br />
* Thanks to IRC:igorko for pointing out the bug ([[Cameron Gutman]])<br />
<br />
==== WINMM ====<br />
* MCI_Close: Use UINT instead of UINT16 for the device id (CID 1804). ([[Roel Messiant]])<br />
<br />
==== NMIDEBUG ====<br />
<br />
== DRIVERS ==<br />
<br />
=== BASE ===<br />
* Fix and cleanup some code, and enable NMI support on the boot/install CD as well. ([[sir_richard]])<br />
<br />
==== ACPI ====<br />
<br />
=== BUS ===<br />
* Fix ACPI warnings (Love)<br />
* Based on a (Love)<br />
<br />
==== FASTFAT ====<br />
<br />
=== FILESYSTEMS ===<br />
* Fix for a buffer overflow and then a buffer overrun (if ever it fixes something) ([[Pierre Schweitzer]])<br />
* The way filenames are handled for FAT entries should be REALLY simplified. This would prevent such errors. ([[Pierre Schweitzer]])<br />
* Thus, there are more magic values in fastfat driver than everywhere else in ReactOS which makes proper fixing hard (impossible?). ([[Pierre Schweitzer]])<br />
* Finally, the code for that fix is crappy, but I don't care, it fits the rest of the fastfat driver code. ([[Pierre Schweitzer]])<br />
* pissed off* ([[Pierre Schweitzer]])<br />
* Fixes CID #2502 ([[Pierre Schweitzer]])<br />
* MagicValue--; ([[Pierre Schweitzer]])<br />
* ThanksTo(James, Amine); ([[Pierre Schweitzer]])<br />
* EOF */ ([[Pierre Schweitzer]])<br />
* Remove unused vars ~ ([[Pierre Schweitzer]])<br />
<br />
==== FASTFAT_NEW ====<br />
* Substantially improve FatiCreate routine, to handle previously unhandled cases, fix wrong code structure in some places, add a stub for further implementation of a new file creation branch. ([[Aleksey Bragin]])<br />
* Hackskip setting delay-on-close for a file for now (with a debug print reminder!) ([[Aleksey Bragin]])<br />
* Some fixes to the previous commit. ([[Aleksey Bragin]])<br />
* Don't use same name for a local boolean var and global enum. Spotted by Pierre. ([[Aleksey Bragin]])<br />
<br />
==== NPFS ====<br />
* Rename DEVICE_EXTENSION to NPFS_VCB. ([[Eric Kohl]])<br />
* Add a type variable to distinguish FCBs and CCBs for device, directory or pipe. ([[Eric Kohl]])<br />
* Attach an FCB to the VCB that represents the root directory of the file system and implement an open routine for the root directory. ([[Eric Kohl]])<br />
* Make NpfsWaitPipe work when it is called for the root directory. ([[Eric Kohl]])<br />
* Add an FCB that represents the file system (volume/device) and support absolute and relative open, cleanup and close. ([[Eric Kohl]])<br />
* Read and write IRPs must fail if the caller is not a pipe but a directory or a device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a directory or device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a pipe by the client. ([[Eric Kohl]])<br />
* Enable the driver to open a directory using a relative path name. ([[Eric Kohl]])<br />
* Add NpfsDirectoryControl routine in order to enumerate pipes. ([[Eric Kohl]])<br />
* Use NpfsGetFcb and NpfsGetCcb to retrieve the FCB or CCB and use SEH to protect these routines. ([[Eric Kohl]])<br />
* Add support for FileFullDirectoryInformation and FileBothDirectoryInformation. ([[Eric Kohl]])<br />
* Fix an off-by-one bug in the buffer size calculation. ([[Eric Kohl]])<br />
* Zero-initialize the return buffer. ([[Eric Kohl]])<br />
* Initialize only the required parts of the return buffer. This will enable the driver to return information about multiple pipes in a single request. ([[Eric Kohl]])<br />
* Check if the whole pipe name fits into the return buffer. Return STATUS_BUFFER_OVERFLOW if it does not fit and copy only a part of the file name in this case. ([[Eric Kohl]])<br />
* Return multiple file entries in a single request. ([[Eric Kohl]])<br />
<br />
==== I8042PRT ====<br />
<br />
=== INPUT ===<br />
* Fix potential buffer overflow ([[Johannes Anderwald]])<br />
* Calculate packet type according to PS/2++ spec (CID 1810). ([[Roel Messiant]])<br />
* Fix technical detail in comment to match spec. ([[Roel Messiant]])<br />
<br />
==== KS ====<br />
<br />
=== KSFILTER ===<br />
* Make pin / node / allocator create requests compatible to ms by removing obsolete slash before object class ([[Johannes Anderwald]])<br />
* Return correct error code in ksuser's KsCreatePin ([[Johannes Anderwald]])<br />
* ReactOS KS is now able to create audio pins in Windows XP, though playback is not yet working ([[Johannes Anderwald]])<br />
* All changes except ksuser change has been verified to work with VBox 3.2.10 ([[Johannes Anderwald]])<br />
* KS user changes not tested yet as KSStudio not working in trunk ([[Johannes Anderwald]])<br />
<br />
* Simplify KsTopologyPropertyHandler by using KspReadMediaCategory helper ([[Johannes Anderwald]])<br />
* Return correct status code in case of an overflow ([[Johannes Anderwald]])<br />
* Fix PciFindParentPciFdoExtension bug found by sir_richard "Early break would leave the lock held" ([[evb]])<br />
* Fix PciGetHackFlags for setup found by sir_richard "Setup currently doesn't have a correct registry" ([[evb]])<br />
* Fix DriverEntry for setup like PciGetHackFlags ([[evb]])<br />
* Fix DriverEntry PciOpenKey check found by sir_richard "PciOpenKey returns a BOOLEAN, not an NTSTATUS" ([[evb]])<br />
* Stop call PciGetAcpiTable found by sir_richard "PciGetAcpiTable is really broken, can lead to infinite loops, and also corrupts memory. We need to fix stefan's bugs" ([[evb]])<br />
* Implement not root FDO code in PciScanBus and support PCI_HACK_ONE_CHILD ([[evb]])<br />
* Implement multiple FDO exist code in PciAddDevice so PCI Bridge support now ([[evb]])<br />
* Implement PciAreBusNumbersConfigured for PCI Bridge support ([[evb]])<br />
* Hack FDO Start Device by sir_richard "The root FDO does send boot resources if PCIX is installed properly, this code will be needed" ([[evb]])<br />
* Do PCI_BUS_DRIVER_INTERNAL bugcheck by sir_richard "I have hacked KeBugCheckEx to ignore this for now, until PnP is fixed" ([[evb]])<br />
* Implement not root FDO code in PciInitializeArbiters ([[evb]])<br />
* Implement PciCacheLegacyDeviceRouting, PciFindPdoByLocation used by PciAssignSlotResources ([[evb]])<br />
* Make PciTranslateBusAddress do the stub work ([[evb]])<br />
* PciAssignSlotResources disabled because ReactOS not support IoAssignResources ([[evb]])<br />
* Implement PPBridge_ChangeResourceSettings ([[evb]])<br />
* PCIX driver nearly working now. ([[evb]])<br />
* Fix KSPROPERTY_PIN_CATEGORY handler when no category is provided ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_PIN_NAME handler when there is no name provided. Use fallback pin category. If there is no category provided, fail with correct error code ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_TOPOLOGY_NAME handler by checking if there is a node name provided. If not use node type as fallback. ([[Johannes Anderwald]])<br />
* Return correct error code when property request id is out of bounds ([[Johannes Anderwald]])<br />
* Fix property set support handler for topology nodes ([[Johannes Anderwald]])<br />
* Check if the driver supports a basic support handler. In that case return the basic support handler ([[Johannes Anderwald]])<br />
* Replace all ms portcls hacks by one. ([[Johannes Anderwald]])<br />
* MS Portcls is now working in ReactOS (which is nice for testing audio related bugs) ([[Johannes Anderwald]])<br />
* Fix several bugs in KsProbeStreamIrp ([[Johannes Anderwald]])<br />
* If requestor is KernelMode - just save a pointer in Irp->AssociatedIrp.SystemBuffer (currently not used) ([[Johannes Anderwald]])<br />
* If requestor is UserMode mark irp as buffered. Also set Flag IRP_INPUT_OPERATION when the ioctl is IOCTL_KS_READ_STREAM. This is important to propagate modifications to KSSTREAM_HEADERS (in particular DataUsed member) ([[Johannes Anderwald]])<br />
* ReactOS KS can now be used in WinXP in combination with KSStudio. In order to make it fully work, ks needs to implement software bus functions ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Perform irp completion in dedicated function ([[Johannes Anderwald]])<br />
* Move Software Bus function into own file ([[Johannes Anderwald]])<br />
* Remove debugging code which caused crashes ([[Johannes Anderwald]])<br />
* Partly implement IKsProcessingObject interface for filter ([[Johannes Anderwald]])<br />
* Fix check in FindMatchingCreateItem function ([[Johannes Anderwald]])<br />
* Implement software bus enumerator functions ([[Johannes Anderwald]])<br />
* Less spam, more information ([[Johannes Anderwald]])<br />
* Robert Horvath: Always limit destLen to MAX_PATH (modified to an if condition by me). ([[Aleksey Bragin]]; {{bug|5861}})<br />
* Robert Horvath: Modify GetFullPathName to follow Windows behaviour more closely. Reduces kernel32:path winetests by 4, and fixes all GetFullPathName tests. ([[Aleksey Bragin]]; {{bug|5865}})<br />
* Oleg Baikalow: TDI exported function prototypes are documented in WDK 7, so use them in our driver instead of old, probably NT4-aged stubs full of unknown variables. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't use psdk's tdi.h but use a real tdikrnl.h (adding a _TDI_ global define so it's recognized as a tdi driver itself). ([[Aleksey Bragin]])<br />
<br />
==== SWENUM ====<br />
* Implement SwDispatchPower, SwDispatchPower ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
<br />
=== MULTIMEDIA ===<br />
<br />
==== AUDIO ====<br />
* Add i/o completion routine, which delivers the number of bytes written / read ([[Johannes Anderwald]])<br />
* Close event handle, after the overlapped request has been handled. ([[Johannes Anderwald]])<br />
* Audio stack no longer leaks ~ 50 event handles per second ([[Johannes Anderwald]])<br />
<br />
===== SNDBLST.OLD =====<br />
<br />
==== NDIS ====<br />
<br />
=== NETWORK ===<br />
* Disable timer queuing code (hackfix for various network driver failures) ([[Cameron Gutman]])<br />
* Also needs to be merged into 0.3.12 ([[Cameron Gutman]])<br />
* Add a missing spin lock release in a failure case ([[Cameron Gutman]])<br />
* Fix incomplete copying of NDIS 5.1 miniport characteristics ([[Cameron Gutman]])<br />
* Fix sizeof typo ([[Cameron Gutman]])<br />
* CID 10400 ([[Cameron Gutman]])<br />
<br />
==== TDI ====<br />
* Oleg Baikalow: Implement basic event and delayed event support functions for CTE. Structure names are made up, but their contents should be compatible with what Windows 2003 tdi.sys uses. Formatting and coding style fixes by the committer. ([[Aleksey Bragin]])<br />
* Move CTE routines into corresponding events.c and timer.c source code files before further applying Oleg's patches. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Finish CTE timers. CTE implementation is complete now. ([[Aleksey Bragin]])<br />
* Define M_PI_4 too. ([[Aleksey Bragin]])<br />
<br />
===== CDROM =====<br />
<br />
=== STORAGE ===<br />
<br />
==== CLASS ====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Add Windows Server 2003 DDK Cdrom Sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* They both build and run fine, but PCIIDE(x) must be completed/enabled, and atapi must be rewritten to be WDM-compliant. ([[sir_richard]])<br />
* The previous commit message had a typo, these are the Windows XP DDK Samples, not the Server 2003 DDK samples !!! ([[sir_richard]])<br />
<br />
===== CLASS2 =====<br />
* Switch use from DISK_GEOMETRY to DISK_GEOMETRY_EX. It's needed to handle some Windows 2003's kernel routines. ([[Pierre Schweitzer]])<br />
<br />
==== CLASSPNP ====<br />
* Add Windows Server 2003 DDK ClassPNP sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* Convert to spec ([[Timo Kreuzer]])<br />
* basetsd.h] ([[Timo Kreuzer]])<br />
* add POINTER_SIGNED, POINTER_UNSIGNED, SPOINTER_32, UPOINTER_32 ([[Timo Kreuzer]])<br />
* Fix a typo in the spec file ([[Timo Kreuzer]])<br />
* remove debug prints ([[Johannes Anderwald]])<br />
* dedicated to christoph ([[Johannes Anderwald]])<br />
* Use correct type in sizeof expression (CID 1646 and 10401). ([[Roel Messiant]])<br />
* Simplify signature define (CID 3653 and 3654). ([[Roel Messiant]])<br />
* Remove funky 0xFF characters. ([[Roel Messiant]])<br />
<br />
==== IDE ====<br />
<br />
===== UNIATA =====<br />
* Update uniata to 0.40a1. Prepared by Samuel Serapion, edited by me. ([[Aleksey Bragin]]; {{bug|5762}})<br />
* RTL} ([[Timo Kreuzer]])<br />
* Replace RtlMoveMemory x86 asm code with the code from CRT's memmove, which is better. Now we can close bug #1941 ([[Timo Kreuzer]])<br />
* Marco Radossevich <fwdprojects=at=email=dot=it>, a.k.a. forart: ([[Dmitry Gorbachev]])<br />
* Just two important examples that involved my contributions: UniATA & FullFAT." ([[Dmitry Gorbachev]])<br />
* No code changes. ([[Dmitry Gorbachev]])<br />
* See thread <http://www.reactos.org/forum/viewtopic.php?f=14&t=8809> for more details. ([[Dmitry Gorbachev]])<br />
<br />
==== SCSIPORT ====<br />
* Remove some code duplication and fix a bug of copying the same interrupt information twice for a device with 2 interrupts (instead of the info for interrupt 1 then the info for interrupt 2) effectively making initialization fail because the resource allocation code will detect a conflict with itself ([[Cameron Gutman]])<br />
* Add apitests to reactos.dff ([[Timo Kreuzer]])<br />
* Implement support for 2 interrupts ([[Cameron Gutman]])<br />
* Halfplement support for 2 DMA channels ([[Cameron Gutman]])<br />
* Set/Read the CM_RESOURCE_DMA flags ([[Cameron Gutman]])<br />
* Remove a duplicate spin lock initialization ([[Cameron Gutman]])<br />
* Partially tested with 2 interrupts in use but UniATA seems to be broken because it registers both interrupts for each channel even though they are not sharable which causes it to fail when initializing the secondary IDE channel ([[Cameron Gutman]])<br />
* Fix a couple of typos in the DMA code from my last commit ([[Cameron Gutman]])<br />
* ScsiPortConvertPhysicalAddressToUlong takes an ULONG_PTR as input, fix function accordingly and do the "calculation" directly instead of calling RtlConvertUlongToLargeInteger ([[Timo Kreuzer]])<br />
* Spotted by Samuel. ([[Timo Kreuzer]])<br />
* ScsiPortDeviceControl: Slight improvement to buffer length validation. Return failure status on a handful of failure cases. Prevents buffer overruns in user code. ([[Roel Messiant]])<br />
<br />
=== USB ===<br />
<br />
==== NT4COMPAT ====<br />
<br />
===== USBDRIVER =====<br />
* Fix a bug that resulted in us only copying half of the old keyboard data ([[Cameron Gutman]])<br />
* CID 10402 ([[Cameron Gutman]])<br />
<br />
==== DISPLAYS ====<br />
<br />
=== VIDEO ===<br />
<br />
===== VGA_NEW =====<br />
* avoid buffer overrun, CID 11049 ([[Jérôme Gardou]])<br />
* Brought to light by vicmarcal ([[Jérôme Gardou]])<br />
* Use strlen() istead of sizeof() to get the string length from a pointer. CID 10403. ([[Timo Kreuzer]])<br />
<br />
==== MINIPORT ====<br />
<br />
===== VMX_SVGA =====<br />
* Convert a pointer to a WCHAR string to an array of WCHARs to fix sizeof calculation. CID 10404 ([[Timo Kreuzer]])<br />
<br />
==== VIDEOPRT ====<br />
* Add sanity checks ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Implement VideoPortGetCommonBuffer, VideoPortLockPages ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Yugoslavia no longer exists for some time, replaced by Serbia as successor of country code (phone) ([[Matthias Kupfer]])<br />
* Add parameter checks to DeleteEvent and WaitForSingleObject. ([[sir_richard]])<br />
* Fix WaitForSingleObject. It was waiting on the Object paramter itself -- which is the VideoPrt/ENG Event, not a real object, we have to wait on ->pKEvent instead. ([[sir_richard]])<br />
* Fix WaitForSingleObject round two, it was returning the NT_STATUS, while VideoPrt should return VP_STATUS/Win32 error codes. ([[sir_richard]])<br />
<br />
=== WDM ===<br />
<br />
==== AUDIO ====<br />
<br />
===== BACKPLN =====<br />
<br />
====== PORTCLS ======<br />
* Store Miniport object in the device descriptor ([[Johannes Anderwald]])<br />
* Fixes assert in NVidia NForce Audio Driver ([[Johannes Anderwald]])<br />
* Fix check if the pin can be instantiated another time ([[Johannes Anderwald]])<br />
* Remove hack to close old ([[Johannes Anderwald]])<br />
* Add function FreePin to remove its old reference ([[Johannes Anderwald]])<br />
* Fix memory leaks / reference leaks in WavePci pin implementation ([[Johannes Anderwald]])<br />
* Fix memory / reference leaks in WavePci Close implementation ([[Johannes Anderwald]])<br />
* Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM ([[Johannes Anderwald]])<br />
* Remove silence buffer hack ([[Johannes Anderwald]])<br />
* Stub DRM Property Handler ([[Johannes Anderwald]])<br />
* Before stopping the audio pin, fill the dma buffer with silence samples ([[Johannes Anderwald]])<br />
* create a subdevice descriptor for instantiated pins too ([[Johannes Anderwald]])<br />
* Rewrite the topology filter / pin / node property handling ([[Johannes Anderwald]])<br />
* Store property sets of filter / pins / nodes in a common property set array ([[Johannes Anderwald]])<br />
* Write a common dispatch function, which serves as a trampoline for filter / pin / node property requests ([[Johannes Anderwald]])<br />
* Private property handlers of the drivers are now accessible ([[Johannes Anderwald]])<br />
* Fix multiple bugs in round buffer implementation ([[Johannes Anderwald]])<br />
* Should result in less audio glitches, especially when playing audio files with low sample rates. Please report any regressions! ([[Johannes Anderwald]])<br />
* Disable driver specific filter / pin / node property handlers until bug leading to crashes has been found ([[Johannes Anderwald]])<br />
* Fix stupid bug which lead to access an invalid buffer. ([[Johannes Anderwald]])<br />
* dedicated to igorko ([[Johannes Anderwald]])<br />
* Do not leak KSSTREAM_HEADER (48 bytes) for each IOCTL_KS_WRITE_STREAM / IOCTL_KS_READ_STREAM request ([[Johannes Anderwald]])<br />
* Audio stack should now leak less memory ([[Johannes Anderwald]])<br />
* Revert 49356 ([[Johannes Anderwald]])<br />
* This change breaks portcls on WinXP ([[Johannes Anderwald]])<br />
* Add MPU-401 Uart miniport driver from DDK 2003 sample ([[Johannes Anderwald]])<br />
* Add license header ([[Johannes Anderwald]])<br />
* Dear lawyers / worried developers, this is the XP DDK Version. ([[Johannes Anderwald]])<br />
* ASM] ([[Timo Kreuzer]])<br />
* Remove superfluous .code64 ([[Timo Kreuzer]])<br />
* Add some macros for MSVC ([[Timo Kreuzer]])<br />
* Portcls does not need to set the size of the audio buffer for completed irps. This is done in a completion callback in wdmaud. Verified with WinXP portcls ([[Johannes Anderwald]])<br />
* Rewrite internal irp queue handling ([[Johannes Anderwald]])<br />
* It now supports multiple KSSTREAM_HEADERs per Irp, variable sized KSSTREAM_HEADERs per irp. ([[Johannes Anderwald]])<br />
* Store the mapped virtual address not in the KSSTREAM_HEADER, as user programs will receive then invalid addresses ([[Johannes Anderwald]])<br />
* Add checks whether this irp is for an sink pin or source pin ([[Johannes Anderwald]])<br />
* Fix multiple bugs when the pin is looped buffer mode (How did this work before?) ([[Johannes Anderwald]])<br />
* ReactOS portcls + WinXP now properly works with audio recording ([[Johannes Anderwald]])<br />
* Merge from the audio branch ([[Johannes Anderwald]])<br />
* Fix node property handler ([[Johannes Anderwald]])<br />
* Take advantage of IPinCount interface ([[Johannes Anderwald]])<br />
<br />
== HAL ==<br />
* Implement HalStopProfileInterrupt and add required RTC register and flag definitions. ([[Eric Kohl]])<br />
* Check that the interrupt line is not 255 ([[Cameron Gutman]])<br />
* Check that the interrupt pin is not 0 ([[Cameron Gutman]])<br />
* Fixes a failed assertion that Caemyr experienced with an ATI Rage graphics card ([[Cameron Gutman]])<br />
* HalpEnableInterruptHandler: Set the IDT_LATCHED flag if the caller requested a latched interrupt ([[Cameron Gutman]])<br />
* Fix a broken loop that resulted in us registering the resources of multiple COM ports as our KD port ([[Cameron Gutman]])<br />
* Fixes bug #5530 ([[Cameron Gutman]])<br />
* Add INIT_FUNCTION where needed. Will save 860KB later. ([[sir_richard]])<br />
* Disable INIT_FUNCTION to see whether it's responsible for Qemu broken status. Some are complaining of unworking trunk since r49463. ([[Pierre Schweitzer]])<br />
* This will be reverted after tests. ([[Pierre Schweitzer]])<br />
* Make directory/buildfiles for OMAP3-specific HAL. Shared between ZOOM2 and Beagle for now. ([[sir_richard]])<br />
* Convert while (TRUE); to ASSERT(FALSE); on unimplemented pathes. ([[Timo Kreuzer]])<br />
<br />
=== CRT ===<br />
<br />
== INCLUDE ==<br />
* Add powf() wrapper ([[Timo Kreuzer]])<br />
* Remove empty file ([[Gregor Schneider]])<br />
* New implementation of all printf functions. It's stream based (like MS one is) rather than buffer based (like our old is). Floating point is not 100% finished, but current implementation is good enough to boot. It can be enabled by a config switch. ([[Timo Kreuzer]])<br />
* Fix a bug in streamout(), that could cause a buffer overrun and made msvcrt_winetest crash. ([[Timo Kreuzer]])<br />
* In streamout() handle %%, negative fieldwidth and negative precision. ([[Timo Kreuzer]])<br />
* In streamout(): fix a number of formatting bugs, round floats, fix issue with large unsigned values that were treated as signed, simplify some code. ([[Timo Kreuzer]])<br />
* Define JBLEN and JBTYPE for ARM, based on the Windows ARM CRT source code (public). ([[sir_richard]])<br />
* _assert should use DbgRaiseAssertionFailure which is (a) correct and (b) portable, instead of __debugbreak. ([[sir_richard]])<br />
* Fix typos ([[Timo Kreuzer]])<br />
* Fix another typo ([[Timo Kreuzer]])<br />
* Fix bugs in converted asm file. Fixes Firefox color issues. ([[Timo Kreuzer]])<br />
* rename pow_asm.c to powl.c to reflect it's content. ([[Timo Kreuzer]])<br />
* Update "slightly less than all" IDLs to Wine-1.3.9. (Except for shlobj, shobjidl and shtypes.h, and DirectX stuff). ([[Aleksey Bragin]])<br />
* import MSVCRT_I10_OUTPUT from wine ([[Christoph von Wittich]])<br />
* import strtoi64 from wine 1.3.10 ([[Christoph von Wittich]])<br />
* Add missing _A_VOLID definition. ([[Amine Khaldi]])<br />
* Fix bugs in new printf implementation: use buffer size in _snprintf and check for the right failure return value of streamout_char. ([[Timo Kreuzer]])<br />
* Proper fix for r50248 ;-) ([[Colin Finck]])<br />
* Happy New Year from my side as well! ([[Colin Finck]])<br />
* Improve new printf implementation: ([[Timo Kreuzer]])<br />
* remove duplicated code and implement a generic function for all (v)s(w)(n)printf ([[Timo Kreuzer]])<br />
* don't call _flsbuf for string streams, while this works on windows, it doesn't work correctly on reactos (bug!) ([[Timo Kreuzer]])<br />
* Fix return error codes ([[Timo Kreuzer]])<br />
* Fix several bugs in new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a bug in _ecvt that makes msvcrt_winetest::printf crash ([[Timo Kreuzer]])<br />
* Enable new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a number of errors in floating point output. ([[Timo Kreuzer]])<br />
* Set errno when a overflow occurs in strtoull ([[Johannes Anderwald]])<br />
* Fixes 2 wine tests failures in msvcrt:string ([[Johannes Anderwald]])<br />
* Rewrite broken _flsbuf and implement _flswbuf ([[Timo Kreuzer]])<br />
* use _flswbuf in wstreamout ([[Timo Kreuzer]])<br />
* Fixes broken text output in dwnl etc ([[Timo Kreuzer]])<br />
* Fix _flsbuf return value ([[Timo Kreuzer]])<br />
* Improve code readability a bit ([[Timo Kreuzer]])<br />
* Get rid of the old printf code and some unused functions. 3346 lines of code less. ([[Timo Kreuzer]])<br />
* Remove deprecated <if>. ([[Timo Kreuzer]])<br />
* undocuser.h] ([[Giannis Adamopoulos]])<br />
* gather several undocumented definitions for user32 that were defined in several different files, sometimes in the source, sometimes in headers and sometimes defined several times here and there ([[Giannis Adamopoulos]])<br />
* This file should not contain internal user32 definitions but undocumented public definitions ([[Giannis Adamopoulos]])<br />
* Add user32_wsprintf library, with all the wsprintf functions, generated from the same codebase ([[Timo Kreuzer]])<br />
* simplify handling of ll modifier in streamout ([[Timo Kreuzer]])<br />
* Fix miscalculation of number of decimal points to shift for %f format. Should fix shlwapi:string tests and bug 5818. ([[Timo Kreuzer]])<br />
* Fix uninitialized warning ([[Timo Kreuzer]])<br />
* Replace isinf with !_finite and isnan with _isnan ([[Timo Kreuzer]])<br />
* Cleanup math.h from unixism. For now move everything that doesn't belong there into mingw_math.h. ([[Timo Kreuzer]])<br />
* effects dialog doesn't affect the color scheme (commented out until fixed finally) ([[Matthias Kupfer]])<br />
* save the KeyboardCues value correctly ([[Matthias Kupfer]])<br />
<br />
=== DDK ===<br />
* Add missing classpnp.h ([[Amine Khaldi]])<br />
* classpnp.h: Add FUNCTIONAL_DEVICE_EXTENSION, SET_FLAG, CLEAR_FLAG and TEST_FLAG ([[Amine Khaldi]])<br />
* Add some more missing definitions. ([[Amine Khaldi]])<br />
* Fix classpnp.h ([[sir_richard]])<br />
* Last couple of fixes to headers. Classpnp can compile (and link) now. ([[sir_richard]])<br />
* Fix a typo and introduce some minor formatting changes. ([[Amine Khaldi]])<br />
* Add missing min and max macros. ([[Amine Khaldi]])<br />
* Add misisng MmLockPagableCodeSection. ([[sir_richard]])<br />
* Fix ClassDebugPrint prototype. ([[Amine Khaldi]])<br />
* Fix RtlStringCbPrintf prototypes. ([[Amine Khaldi]])<br />
* Add dmusprop header ([[Johannes Anderwald]])<br />
* Add GTI_XXX macros to portcls.h ([[Johannes Anderwald]])<br />
* Add IID_IMusicTechnology guid to portcls.h ([[Johannes Anderwald]])<br />
* Add IMP_PowerNotify macro to portcls.h ([[Johannes Anderwald]])<br />
* Add KSDATARANGE_MUSIC to ksmedia.h ([[Johannes Anderwald]])<br />
* Add KSMUSIC_TECHNOLOGY, KSDATAFORMAT_SUBTYPE_MIDI_BUS, KSAUDFNAME_MIDI, KSNODETYPE_SYNTHESIZER to ksmedia.h ([[Johannes Anderwald]])<br />
* Remove broken definitions of KSPROPSETID_Synth, KSPROPSETID_Synth_Dls. They are defined in dmusprop.h ([[Johannes Anderwald]])<br />
* FsRtlRemoveBaseMcbEntry() return is VOID ([[Pierre Schweitzer]])<br />
* Fix NDIS macros. Patch by Oleg Baikalow. ([[Aleksey Bragin]])<br />
<br />
=== NDK ===<br />
<br />
* Fix RtlQuery/SetHeapInformation prototypes, move them to an appropriate place. ([[Aleksey Bragin]])<br />
* Add MMVAD_SHORT. ([[sir_richard]])<br />
* Merge arty-newcc branch ([[Art Yerkes]])<br />
* Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. ([[sir_richard]])<br />
* Fix definition of ARM PTE/PDE structure. ([[sir_richard]])<br />
* Add IMAGE_FILE_MACHINE_NATIVE ([[Timo Kreuzer]])<br />
* Add RTL_TRACE_BLOCK structure definition. ([[Aleksey Bragin]])<br />
<br />
=== PSDK ===<br />
* Add some missing structures in ioevent.h ([[Amine Khaldi]])<br />
* Add more missing definitions. ([[sir_richard]])<br />
* Last couple of fixes to headers. Classpnp can compile (and link) now. ([[sir_richard]])<br />
* Add some missing IOCTL_* definitions. ([[Amine Khaldi]])<br />
* Add missing ntddmmc.h definitions. ([[Amine Khaldi]])<br />
* Add CDROM_TOC_SESSION_DATA structure. ([[Amine Khaldi]])<br />
* Add missing header's header. ([[Amine Khaldi]])<br />
* Add FILEMUIINFO definition. Patch by Edison Henrique Andreassy ([[Aleksey Bragin]])<br />
* Add missing SEC_XXX definitions for Server 2003 (Vista ones still missing). ([[sir_richard]])<br />
* Add more track popup menu types. ([[James Tabor]])<br />
* Add INET_E_USE_DEFAULT_SETTING definition ([[Cameron Gutman]])<br />
* Add ICONINFOEX* definitions and GetIconInfoEx* declarations from Wine. ([[Aleksey Bragin]])<br />
* Add NOMIRRORBITMAP definition. ([[Aleksey Bragin]])<br />
* Add DecryptFileA/W prototype. ([[Eric Kohl]])<br />
* Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM ([[Johannes Anderwald]])<br />
* basetsd.h: Add POINTER_SIGNED, POINTER_UNSIGNED, SPOINTER_32, UPOINTER_32 ([[Timo Kreuzer]])<br />
* add TrustedDomainAuthInformationInternal and TrustedDomainFullInformationInternalFix to _TRUSTED_INFORMATION_CLASS. Fixes build ([[Jerome Gardou]])<br />
* Merge arty-newcc branch ([[Art Yerkes]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h. Fixed definition of NULL to __null in stddef.h ([[Timo Kreuzer]])<br />
* Don't define __in and __null on c++ build. as long as we keep using host headers, this won't work ([[Timo Kreuzer]])<br />
* Comment out specstrings.h inclusion in windef.h as per Timo's request. Fixes build. ([[Timo Kreuzer]])<br />
* Add missing DbgRaiseAssertionFailure inline to winnt.h header. ([[sir_richard]])<br />
* Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. ([[sir_richard]])<br />
* Add missing definitions to ipexport.h. Patch by Oleg Baikalow ([[Aleksey Bragin]])<br />
* Don't call TDIEntityID structure and type with the same name. Patch by Oleg Baikalow ([[Aleksey Bragin]])<br />
* Add missing definitions. ([[Aleksey Bragin]])<br />
* Remove undocumented defines from winuser.h and include undocuser.h when _WINE is defined. ([[Aleksey Bragin]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
<br />
=== REACTOS ===<br />
<br />
==== LIBS ====<br />
<br />
===== PSEH =====<br />
* Allow configuration of native SEH vs PSEH vs dummy PSEH with macro definitions (USE_NATIVE_SEH, USE_DUMMY_PSEH) ([[Timo Kreuzer]])<br />
<br />
===== CSRSS =====<br />
<br />
==== SUBSYS ====<br />
* Should use MEM_COMMIT | MEM_RESERVE, not just MEM_COMMIT when requesting a range of adress space that wasn't already reserved. This works in ReactOS because, well, no reason to explain why, but it wouldn't work on Windows or with a VAD-based kernel. ([[sir_richard]])<br />
* Initialise PPB to zero. (Roel)<br />
* The change from NtAllocateVirtualMemory to RtlAllocateHeap causes the memory to (Roel)<br />
* be not automatically initialised to zero anymore. (Roel)<br />
* Not every field of the PPB (for which the memory is allocated) gets explicitly (Roel)<br />
* initialised, meaning this results in them having bogus values. (Roel)<br />
* One of the now uninitialised fields is DebugFlags, which results in (Roel)<br />
* DbgBreakPoint being called in NtProcessStartup. Simply ensuring the memory is (Roel)<br />
* zeroed makes it all better again. (Roel)<br />
<br />
==== WIN32K ====<br />
* Coding for PrintWindow support for bug 5609. This does not fix the export, which should be a direct call to win32k. ([[James Tabor]])<br />
* Cleanup UserSetCursorPos ([[Giannis Adamopoulos]])<br />
* UserSetCursorPos: set the new position after sending WM_MOUSEMOVE message ([[Giannis Adamopoulos]])<br />
* now we pass all tests for SetCursorPos ([[Giannis Adamopoulos]])<br />
* clean up EXLATEOBJ before error path in NtGdiBitBlt ([[Jérôme Gardou]])<br />
* Implement win32k support functions for Get and Set process default layout. ([[James Tabor]])<br />
* Due to changes with wine it will be difficult to sync when RTL support is being added to ComCtl32. ([[James Tabor]])<br />
* Fix future wine sync user32 win test for get process default layout with null parameter. ([[James Tabor]])<br />
* Return the correct complexity, pass all user32 wine test_winregion tests. ([[James Tabor]])<br />
* PSDK ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Edison Henrique Andreassy <ehasis@hotmail.com>: Add FILEMUIINFO definition. ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Fixed ValidateTimerCallback, always returning true and just spinning in the loop. ([[James Tabor]])<br />
* Add one more process information flag with a point type and capturing the hit test in desktop structure. ([[James Tabor]])<br />
* Reduce duplicated code in co_UserCreateWindowEx, co_IntSetParent and co_WinPosSetWindowPos ([[Giannis Adamopoulos]])<br />
* based on wine ([[Giannis Adamopoulos]])<br />
* Don't place new windows with default position at the top left corner of the screen ([[Giannis Adamopoulos]]; {{bug|5484}})<br />
* Send WM_PARENTNOTIFY message when a window is destroyed ([[Giannis Adamopoulos]])<br />
* co_UserDestroyWindow: Send WM_PARENTNOTIFY message in correct order ([[Giannis Adamopoulos]])<br />
* Roel Messiant: Return correct address in the user heap commit routine. Should fix boot with the new heap manager. ([[Aleksey Bragin]])<br />
* Fix an ancient FIXME in PATH_PathToRegion ([[Giannis Adamopoulos]])<br />
* Move checks for active hooks in co_HOOK_CallHooks ([[Giannis Adamopoulos]])<br />
* Remove the FreeLParam 'feature' from win32k. This hack allowed us to post messages that contain pointers. However we don't do it anymore so we can also remove this as well ([[Giannis Adamopoulos]])<br />
* Add keyboard messages to the list with Hardware messages and not in the list with post messages ([[Giannis Adamopoulos]])<br />
* Disable checking if a hook is active. It is safe to disable it for now because it is just an optimization. If we try to call a hook when it is not active, it will fail anyway when it tries to find the hook. Fixes calling low level hooks ([[Giannis Adamopoulos]])<br />
* When we try to call a hook with null hook proc will cause a crash in user32. Add an assertion in win32k in order to catch the problem a bit earlier ([[Giannis Adamopoulos]])<br />
* Clean up co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* Renove some unneccessary casts ([[Timo Kreuzer]])<br />
* Fix an exception when set condition * first always is used then moving the mouse. There seems to be an initialization issue (The Init Bug) and not setting a desktop. ([[James Tabor]])<br />
* Fix typos found by Mephisto on IRC, also add some debug prints in SetWindowsHookEx to see what hooks are installed. ([[James Tabor]])<br />
* Do not override WH_JOURNALPLAYBACK results if zero. ([[James Tabor]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereferences. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Improve the code to enumerate monitors. ([[Timo Kreuzer]])<br />
* Don't use custom MIN / MAX / ABS macros ([[Timo Kreuzer]])<br />
* Calculate distance by r^2 = x^2 + y^2 ([[Timo Kreuzer]])<br />
* Use RECTL_bIntersectRect instead of code duplication ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference ([[Timo Kreuzer]])<br />
* pass bottom-right exclusive rect to IntGetMonitorsFromRect from NtUserMonitorFromPoint ([[Timo Kreuzer]])<br />
* Don't handle MONITOR_DEFAULTTOPRIMARY and MONITOR_DEFAULTTONEAREST twice ([[Timo Kreuzer]])<br />
* Use unsigned variables for unsigned values ([[Timo Kreuzer]])<br />
* Don't check the result of a UINT returning function for < 0 ([[Timo Kreuzer]])<br />
* Improve readability ([[Timo Kreuzer]])<br />
* message.c: ([[Giannis Adamopoulos]])<br />
* Don't use RETURN macro ([[Giannis Adamopoulos]])<br />
* Correctly use SEH. Use _SEH2_YIELD ([[Giannis Adamopoulos]])<br />
* Roel Messiant: ([[Aleksey Bragin]])<br />
* Heap corruption fixes. ([[Aleksey Bragin]])<br />
* remove rtl dependency ([[Johannes Anderwald]])<br />
* thanks to mephisto! ([[Johannes Anderwald]])<br />
* Fix mdl probe access rights ([[Johannes Anderwald]])<br />
* Fix possible use of uninitialized variable. Spotted by Amine. ([[Timo Kreuzer]])<br />
* Remove obsolete code ([[Johannes Anderwald]])<br />
* Thanks to Amine ([[Johannes Anderwald]])<br />
* Fix a bug in InitVideo: when looping through the adapters, reinitialize the cbValue before querying the registry. ([[Timo Kreuzer]])<br />
* Also handle failure. ([[Timo Kreuzer]])<br />
* Lock thread when removing hooks. ([[James Tabor]])<br />
* Track end of life thread when removing hooks. ([[James Tabor]])<br />
* Disable GDI_DEBUG. It's using > 20 MB memory. Too much for some people ;-) ([[Timo Kreuzer]])<br />
* Change all Init functions to be NTAPI instead of FASTCALL, return NTSTATUS, and be an INIT_FUNCTION (saving incredible 2k). Simplify the initialization sequence by using a simple macro. Delete a comment that is not true anymore. ([[Timo Kreuzer]])<br />
* Move some globals to appropriate file. ([[Timo Kreuzer]])<br />
* Make InitVideo return NTSTATUS and properly handle failure ([[Timo Kreuzer]])<br />
* Silence a DPRINT, improve a DPRINT ([[Timo Kreuzer]])<br />
* Turn off debug prints. ([[James Tabor]])<br />
* Fixed WaitForInputIdle, finally!, passed all the wine tests for it. ([[James Tabor]])<br />
* Moved Get/Peek message to the new all in one support routine. ([[James Tabor]])<br />
* Foreground hook hits one out of five, this needs more research. ([[James Tabor]])<br />
* Attempted to workout synchronizing issues with low level and regular hooks. ([[James Tabor]])<br />
* Simplify co_IntPeekMessage even more ([[Giannis Adamopoulos]])<br />
* Rename MsqInsertSystemMessage to MsqInsertMouseMessage ([[Giannis Adamopoulos]])<br />
* Updated the Rapps Versions, too. ([[Daniel Reimer]])<br />
* Fix hooks, do not cleanup hooks when any window from the same thread is destroyed. ([[James Tabor]])<br />
* Tweaks to hook and event timeouts. Increase performance with DOSBox when using mouse and keyboard. ([[James Tabor]])<br />
* Some more cleanup ([[Giannis Adamopoulos]])<br />
* Test for hooks before setting up for a hook call. This eliminates overhead. ([[James Tabor]])<br />
* Fix one of the greatest hacks in message handling: do not wake up every message queue when there is mouse or keyboard input ( wake only the thread that must take input) ([[Giannis Adamopoulos]])<br />
* rewrite co_WinPosWindowFromPoint, co_MsqInsertMouseMessage and co_MsqPeekHardwareMessage ([[Giannis Adamopoulos]])<br />
* port co_IntProcessMouseMessage and MsqSendParentNotify from wine ([[Giannis Adamopoulos]])<br />
* call co_IntProcessHardwareMessage from co_MsqPeekHardwareMessage, and not from co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* move co_IntProcessHardwareMessage, co_IntProcessKeyboardMessage and co_IntProcessMouseMessage to msgqueue.c ([[Giannis Adamopoulos]])<br />
* Apply workaround for POINT / POINTL, like for the others ([[Timo Kreuzer]])<br />
* Restore capturing the hit test in the desktop structure. Move journal record hook before sending the mouse hook. ([[James Tabor]])<br />
* revert r49718 ([[Timo Kreuzer]])<br />
* Remove some unused functions ([[Giannis Adamopoulos]])<br />
* move several user stubs in ntstubs.c ([[Giannis Adamopoulos]])<br />
* More fixes to In Send and Reply message support. ([[James Tabor]])<br />
* More fixes to In Send message support. One more case fixed in looping back. ([[James Tabor]])<br />
* Amend to r41772. Allow PostMessage to handle DDE messages ([[Giannis Adamopoulos]])<br />
* In FNID_SENDMESSAGECALLBACK use SEH before accesing the user-mode buffer ([[Giannis Adamopoulos]])<br />
* Merge r49994 and r49995 from reactx branch ([[Timo Kreuzer]])<br />
* Use the new version of NtUserGetMessage and NtUserPeekMessage written by Jim. It is possible to use them now because GetMessage and PeekMessage don't return messages that contain pointers. As a result they don't need to do any extra work to copy the message to user mode. All messages that contain pointers are sent messages and this means that they don't get into the message loop. Instead they are passed directly to the window proc. ([[Giannis Adamopoulos]])<br />
* DispatchMessage works only if the target window belongs to the current thread. This lets us remove uneeded copies of lparam to user mode. ([[Giannis Adamopoulos]])<br />
* Remove an unneeded debug message ([[Giannis Adamopoulos]])<br />
* remove some more unnecessary debug output ([[Giannis Adamopoulos]])<br />
* Silence 3 DPRINTs ([[Timo Kreuzer]])<br />
* NtGdiGetDIBitsInternal: Copy the requested amount of scanlines into the return buffer, not the whole bitmap. Should fix bug #5766. ([[Roel Messiant]])<br />
* Remove co_IntPostOrSendMessage and use co_IntSendMessageNoWait where possible ([[Giannis Adamopoulos]])<br />
* Improve "not enough memory" check when creating a bitmap ([[Jérôme Gardou]])<br />
* use correct function to set the last error. ([[Jérôme Gardou]])<br />
* IntCreateWindow: Fill out MaximumLength field of the window name. Fixes potential buffer overflow in at least NtUserDefSetText. ([[Roel Messiant]])<br />
* Fix EngGetLastError and EngSetLastError ([[Timo Kreuzer]])<br />
* Remove SetLastWin32Error and use EngSetLastError instead ([[Timo Kreuzer]])<br />
* Fixes bug 5792 and Get/PeekMessage tests. I noticed co_IntPostOrSendMessage to co_IntSendMessageNoWait changes when it should have been changed to co_IntSendMessage. Same as co_IntSendMessage to co_IntSendMessageNoWait when it should have not changed.... I'm sorting it out. ATM win test locks up and the system shutdown box is not present only the text message. ([[James Tabor]])<br />
* Use SendNotifyMessage for broadcasting these messages and SendMessageNoWait when not broadcasting. ([[James Tabor]])<br />
* Fix all the user32 wine win test_CreateWindow tests. ([[James Tabor]])<br />
* Fix all the user32 wine win test_enum_thread_windows tests. ([[James Tabor]])<br />
* Update note after 50205. ([[James Tabor]])<br />
* NtUserSetWindowFNID, sets user client side window function Ids, expands to ghost. ([[James Tabor]])<br />
* Allocate/free GRE events directly from pool, instead of using Eng APIs. Use documented tag for GRE Events (Dfsm), found in pooltag.txt ([[sir_richard]])<br />
* Implement EngMapEvent and EngUnmapEvent. ([[sir_richard]])<br />
* Improve LDEVOBJ_bLoadImage, use ExportSectionPointer from the GdiDriverInfo structure instead of calling RtlImageDirectoryEntryToData ([[Timo Kreuzer]])<br />
* Implement NtGdiGetBoundsRect and NtGdiSetBoundsRect. (Samuel)<br />
* Access the DC member directly instead of using IntGdiGetDCOrg ([[Timo Kreuzer]])<br />
* Remove unused IntGdiGetDCOrg, GdiSetDCOrg, GdiGetDCOrgEx ([[Timo Kreuzer]])<br />
* Simplify error checks, by reordering code in NtGdiScaleViewportExtEx ([[Timo Kreuzer]])<br />
* Simplify exception handling, use _SEH2_YIELD ([[Timo Kreuzer]])<br />
* Change function order ([[Timo Kreuzer]])<br />
* Minor code improvements ([[Timo Kreuzer]])<br />
* Fix type of DCLEVEL::prgnClip / prgnMeta (PVOID -> PREGION) ([[Timo Kreuzer]])<br />
* Move NtGdiGetRandomRgn to dcobjs.c ([[Timo Kreuzer]])<br />
* Fix a bug in FLOATOBJ_DivLong ([[Timo Kreuzer]])<br />
* Use if, instead of switch to handle flags in XFORMOBJ_bXformFixPoints ([[Timo Kreuzer]])<br />
* Define XFORMOBJ to EXFORMOBJ, a stack object that links to the matrix ([[Timo Kreuzer]])<br />
* There is no spoon. ([[Timo Kreuzer]])<br />
* Improve NtGdiStretchDIBitsInternal, use _SEH2_YIELT instead of saving an NTSTATUS and handle the fast path in place instead of setting a BOOL variable. Fixes warnings about uninitialized variables. ([[Timo Kreuzer]])<br />
* In BitmapFormat, allow intermediate bpp values, use ULONG as parameter type, instead of WORD and DWORD ([[Timo Kreuzer]])<br />
* In NtGdiCreateBitmap get the real bpp value from the gajBitsPerFormat array ([[Timo Kreuzer]])<br />
* Add back check of too large nWidth (needed to make sure, cjWidthBytes didn't overflow) ([[Timo Kreuzer]])<br />
* Merge all parameter checks ([[Timo Kreuzer]])<br />
* Check cPlanes and cBitsPixel paramters explicitly ([[Timo Kreuzer]])<br />
* Use GreCreateBitmapEx ([[Timo Kreuzer]])<br />
* Remove BITMAP_GetRealBitsPixel ([[Timo Kreuzer]])<br />
* In GreCreateBitmapEx handle allocation failure in the rle hack path and set LastError, when failed to allocate bitmap bits. ([[Timo Kreuzer]])<br />
* Cleanup pooltags a little, use official tags where known and applicable. ([[Timo Kreuzer]])<br />
* Fix use of XFORMOBJ. Should fix gdi32_winetest clipping regression and release breakage. ([[Timo Kreuzer]])<br />
* Win32k implementation of GetCharacterPlacementW, work is dedicated to the late Professor John Collins. ([[James Tabor]])<br />
* Implement NtGdiCreateMetafileDC. ([[James Tabor]])<br />
* Since most of the gdi work I committed is being reverted or if'ed out of existence, this will be the last. ([[James Tabor]])<br />
* Remove debugging code. ([[Timo Kreuzer]])<br />
* Don't trat BI_BITFIELDS as compressed format in DIB_CreateDIBSection. Fixes KSStudio. Why it was introduced by r48359? I don't know. It was broken before. I refrain from making any more comments about that piece of ... code. ([[Timo Kreuzer]]; {{bug|5781}})<br />
* Don't leak the memory for DIB sections. we set BMF_DONT_FREE in SURFACE_bSetBitmapBits, when the caller provides bits. This needs to be reconsidered. ([[Timo Kreuzer]])<br />
* In UserSetCursor, return a pointer to the old cursor, not the handle ([[Timo Kreuzer]]; {{bug|5722}})<br />
* really delete the pointer shape when NULL cursor is set, instead of just hiding it. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Move reference handling completely to NtUserSetCursor ([[Timo Kreuzer]]; {{bug|5722}})<br />
* In UserChangeDisplaySettings, set NULL cursor before change and restore old cursor after change to make sure we have the right color format. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Reset monitor size after mode switch. (rafalh; {{bug|5727}})<br />
* Go back to hiding the cursor with GreMovePointer, instead of setting NULL bitmaps. While MSDN states that psoColor and psoMask can both be NULL in DrvSetPointerShape, it doesn't explicitly say anything about both being NULL at the same time. VBox driver doesn't expect that and will crash, so most likely windows doesn't do this. ([[Timo Kreuzer]])<br />
* Set correct error value on failure in NtUserSetCursor. (Victor)<br />
* Portability bugfixes ([[Thomas Bluemel]])<br />
* Create a security descriptor for the desktops rather than passing the ACLs in as a security descriptor ([[Thomas Bluemel]])<br />
* Fix draw of cursors in static controls ([[Matthias Kupfer]])<br />
* Last part of fix for bug #4874 ([[Matthias Kupfer]])<br />
* Implement GetClassLongPtrA/W ([[Thomas Bluemel]])<br />
* Fix replaced by more flexible code for arbitrary cursor sizes ([[Matthias Kupfer]])<br />
* Fix crash with standalone win test_hind_message test. ([[James Tabor]])<br />
* Fix buggy mechanism of pushing and popping free gdi handle slots. The old mechanism unneccessarily locked the entry and it was prone to the ABA problem as it didn't use a sequence number. ([[Timo Kreuzer]])<br />
* Fix a bug in calculation of the background color for 32bpp -> 1bpp color translations. ([[Timo Kreuzer]])<br />
* Fixes bug 2372 ([[Timo Kreuzer]])<br />
* add missing file ([[Timo Kreuzer]])<br />
* Add GetTransform declaration. (until we have undocgdi.h). ([[Aleksey Bragin]])<br />
* Enable simple FontSmoothing by default. It matters for arwinss, trunk just ignores this value and always smoothes the fonts. ([[Aleksey Bragin]])<br />
* Robert Horvath: LocalUnlock has to be different from GlobalUnlock. The subtle difference between LocalUnlock and GlobalUnlock, is, that the former will return FALSE and set ERROR_NOT_LOCKED on LMEM_FIXED allocations. Fixes 1 kernel32:heap failure. ([[Aleksey Bragin]]; {{bug|5869}})<br />
* Robert Horvath: Add GlobalFlag entry in hivesys_{arch}.inf with the default value 0x0. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Add a missing ORing of the registry-loaded GlobalFlags value in ExpInitializeExecutive. Thanks to Robert Horvath for spotting the issue. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Merge all amd64 related changes from cmake branch ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 1 ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 2 ([[Timo Kreuzer]])<br />
* Edijs: Properly load window size and position. ([[Aleksey Bragin]]; {{bug|5872}})<br />
* Handle BITMAPV4HEADER and BITMAPV5HEADER, when creating a DIB palette. Detect PAL_RGB like done with PAL_BGR in PALETTE_AllocPalette (optimization). ([[Timo Kreuzer]])<br />
* Fixes pink icons. ([[Timo Kreuzer]])<br />
* Remove some artifact from ARM build. ([[Pierre Schweitzer]])<br />
* Fix initialization of XLATEOBJ, when source and dest format are equal. (Thomas; {{bug|5828}})<br />
* Remove gexloTrivial, it was never used ([[Timo Kreuzer]])<br />
* Remove EXLATEOBJ_vInitTrivial and move the code into EXLATEOBJ_vInitialize ([[Timo Kreuzer]])<br />
* Properly set XO_TABLE ([[Timo Kreuzer]])<br />
* Set ppalDstDc in EXLATEOBJ_vInitXlateFromDCs ([[Timo Kreuzer]])<br />
<br />
=== 3RDPARTY ===<br />
<br />
== LIB ==<br />
==== FREETYPE ====<br />
===== INCLUDE =====<br />
====== FREETYPE ======<br />
======= CONFIG =======<br />
* Instead of having 4 template rbuild configuration files that must be kept in-sync, maybe there should be a generic one that they all inherit from? ([[sir_richard]])<br />
* Add new property settings that exist in x86, but not ARM because nobody added them there. For example, nor cc, nor cache were being built on ARM, because NEWCC was undefined (which isn't treated as 0 by rbuild). ([[sir_richard]])<br />
* How I long for CMAKE. ([[sir_richard]])<br />
<br />
======= DATA =======<br />
<br />
======== XML ========<br />
<br />
===== ICU =====<br />
<br />
====== SOURCE ======<br />
<br />
==== ICU4ROS ====<br />
<br />
==== MINGW ====<br />
* Don't compile atonexit.c. atexit is exported from msvcrt. ([[Timo Kreuzer]])<br />
* Revert r50267 ([[Timo Kreuzer]])<br />
<br />
==== SOUND ====<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
* Getting device capabilities requires the unicode version of the structure ([[Johannes Anderwald]])<br />
* Implement MIDM_OPEN, MIDM_CLOSE, MIDM_START, MIDM_STOP ([[Johannes Anderwald]])<br />
* Implement MODM_OPEN, MODM_CLOSE ([[Johannes Anderwald]])<br />
* Refactor MmeOpenWaveDevice into MmeOpenDevice add add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Refactor MmeCloseWaveDeivce into MmeCloseDevice and add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Handle mixers identified by id, not by handle ([[Johannes Anderwald]])<br />
* Fix opening of mixer devices ([[Johannes Anderwald]])<br />
* Waveformat struct is only provided when type is wave device ([[Johannes Anderwald]])<br />
* Implement wave reset routine, fixes audio recording on ReactOS SndRec, AudaCity etc. Also fixes random hang in WinAmp when skipping audio bytes ([[Johannes Anderwald]])<br />
* Implement wave pausing / restarting, should lead to smoother playback ([[Johannes Anderwald]])<br />
<br />
===== MMIXER =====<br />
* Rewrite topology node enumeration algorithm ([[Johannes Anderwald]])<br />
* Old algorithm didnt properly take in account sum/mux nodes, may assign nodes to multiple lines and was not able to detect circuits which may lead to infinite loops ([[Johannes Anderwald]])<br />
* New algorithm properly partitions the nodes and also checks if nodes has already been assigned. As a plus, it is also faster ([[Johannes Anderwald]])<br />
* Algorithm based on msdn http://msdn.microsoft.com/en-us/library/ff538873(v=VS.85).aspx ([[Johannes Anderwald]])<br />
* Tested on VBox 3.28 (AC97) ([[Johannes Anderwald]])<br />
* Please retest supported soundcards for regressions ([[Johannes Anderwald]])<br />
* Implement support routines which get called when a topology node changes its state ([[Johannes Anderwald]])<br />
* Volume changes / mute on/off changes should now be broadcasted again to all listening applications ([[Johannes Anderwald]])<br />
* Add support for topologies where pins directly connect to other pins without nodes in between ([[Johannes Anderwald]])<br />
* Check if the topology contains node. Fixes assert hit in VmWare Player(sound is not working) ([[Johannes Anderwald]])<br />
* Thanks to Caemyr for testing ([[Johannes Anderwald]])<br />
* Disable assert for now ([[Johannes Anderwald]])<br />
* Amendment to rev. 49167 requested by Caemyr. ([[Kamil Hornicek]])<br />
* Apply a hack to filter out pins, which are not part of filter node processing path ([[Johannes Anderwald]])<br />
* The hack filters out all pins which have a physical connection. Ideally the code should check if the pin is part of a different rendering path and in that case remove the pin. ([[Johannes Anderwald]])<br />
* Revert 49167 ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Kernel streaming pins need to transit states from Run -> Pause -> Acquire -> Stop. ([[Johannes Anderwald]])<br />
* Fixes SB Live playback hang on last tone when stopping playback ([[Johannes Anderwald]])<br />
* Enumerate MIDI devices and provide all necessary functions to deal with them ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Tons of fixes to enumeration of mixerlines, controls / etc ([[Johannes Anderwald]])<br />
* Fix mixer event notification callbacks ([[Johannes Anderwald]])<br />
* For more info, read audio-bringup log ([[Johannes Anderwald]])<br />
<br />
=== LSALIB ===<br />
* Fix compiler warnings for AMD64 build. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
* Fix PCI group key ([[Johannes Anderwald]])<br />
<br />
== NTOSKRNL ==<br />
* IoRegisterPlugPlayNotification: Do not fail if no Interface can be found for the given GUID. Just do not call the Callback-Routine in this case. The Interface could be created later. ([[Eric Kohl]])<br />
* disable some locale IDs because they are not supported yet ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 417 Rhaeto-Romanic ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 445 Bengali (India) ([[Matthias Kupfer]]; {{bug|5636}})<br />
* or still unknown ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 48f ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 490 ([[Matthias Kupfer]]; {{bug|5636}})<br />
* this fixes multiple entries () ([[Matthias Kupfer]]; {{bug|5636}})<br />
* Implement NtQueryOpenSubKeys. ([[Eric Kohl]])<br />
* Add amd64 versions of MI_MAKE_PROTOTYPE_PTE and MiProtoPteToPte ([[Timo Kreuzer]])<br />
* Remove outdated external declarations ([[Timo Kreuzer]])<br />
* disable deprecated amd64 code ([[Timo Kreuzer]])<br />
* use MiFillSystemPageDirectory only for 2 paging levels ([[Timo Kreuzer]])<br />
* Alternative workaround for pentium lock errata: Instead of burdening the page fault handler, just mark the IDT page as Write-Through if the bug is present. According to http://www.rcollins.org/Errata/Dec97/F00FBug.html it shall prevent the lock up. Please test. Dedicated to elhoir. ([[Timo Kreuzer]])<br />
* Fix ARC names accordingly ([[Pierre Schweitzer]])<br />
* Don't ignore IopCreateArcNames() return while booting. ([[Pierre Schweitzer]])<br />
* At the moment, it's just returning STATUS_SUCCES but it will be changed later. ([[Pierre Schweitzer]])<br />
* Fixed a FIXME in ARC names by implementing IopStoreSystemPartitionInformation(). This make ReactOS writing boot paths to registry. ([[Pierre Schweitzer]])<br />
* On boot, while loading drivers, make starting Loader Block available to the whole kernel to let drivers calling on-boot functions that may need it. ([[Pierre Schweitzer]])<br />
* One of them will be implemented later. ([[Pierre Schweitzer]])<br />
* Implement SeImpersonateClientEx() and simplify SeImpersonateClient(). ([[Eric Kohl]])<br />
* Replace \" with "" in resource files. This makes CMAKE build way more silent. Needs to be merged. ([[Daniel Reimer]])<br />
* TBD find a way to silent warnings happening due to \n in strings. ([[Daniel Reimer]])<br />
* Implemented FstubAllocateDiskInformation(), FstubDbgGuidToString(), FstubDbgPrintDriveLayoutEx(), FstubDbgPrintPartitionEx(), FstubDetectPartitionStyle(), FstubFreeDiskInformation(), FstubGetDiskGeometry(), FstubReadPartitionTableMBR(), FstubReadSector() ([[Pierre Schweitzer]])<br />
* Stubbed FstubReadPartitionTableEFI() ([[Pierre Schweitzer]])<br />
* This leads to a correct & working implementation of IoReadPartitionTableEx(). As this state, it only handles MBR partition tables as EFI/GPT as been stubbed out. ([[Pierre Schweitzer]])<br />
* EFI/GPT support will come later. ([[Pierre Schweitzer]])<br />
* Implemented IopFetchConfigurationInformation(), IopCreateArcNamesCd(), IopCreateArcNamesDisk(), IopVerifyDiskSignature() ([[Pierre Schweitzer]])<br />
* Removed IopApplyRosCdromArcHack(), IopGetDiskInformation(), IopAssignArcNamesToCdrom() ([[Pierre Schweitzer]])<br />
* Finally, rewritten IopCreateArcNames() ([[Pierre Schweitzer]])<br />
* To make it short, this is the rewrite of ARC names handling in the kernel. ([[Pierre Schweitzer]])<br />
* This brings our kernel to a higher state of existence. Indeed, it's leaving NT4 design for a proper NT5.2 design, with less hacks, less ROS specific stuff and such. ([[Pierre Schweitzer]])<br />
* This code handles the mount manager we don't have yet. ([[Pierre Schweitzer]])<br />
* Implemented FstubAdjustPartitionCount(), FstubConvertExtendedToLayout(), FstubCopyEntryEFI(), FstubCreateDiskMBR(), FstubCreateDiskEFI(), FstubCreateDiskRaw(), FstubDbgPrintSetPartitionEx(), FstubReadHeaderEFI(), FstubReadPartitionTableEFI(), FstubSetPartitionInformationEFI(), FstubVerifyPartitionTableEFI(), FstubWriteBootSectorEFI(), FstubWriteEntryEFI(), FstubWriteHeaderEFI(), FstubWritePartitionTableEFI(), FstubWritePartitionTableMBR(), FstubWriteSector() ([[Pierre Schweitzer]])<br />
* Implemented IoCreateDisk(), IoGetBootDiskInformation(), IoReadDiskSignature(), IoSetPartitionInformationEx(), IoVerifyPartitionTable(), IoWritePartitionTableEx() ([[Pierre Schweitzer]])<br />
* To sum up, this commit finishes FSTUB API implementation in the ReactOS kernel. This means one important thing: now ReactOS kernel knows about a bit about EFI and about GPT. No need to say that it's the first step into EFI support. But a lot more work is needed. Especially since the kernel is the only real entity in ReactOS to handle GPT. All the rest of the OS doesn't know anything about GPT. ([[Pierre Schweitzer]])<br />
* A small note about FstubVerifyPartitionTableEFI(). This function is supposed to check whether a disk formated with GPT is valid, and if it's not, to fix it. First step is implemented. Second step isn't yet supported. ([[Pierre Schweitzer]])<br />
* A general note about all that stuff: on GPT, backup table isn't properly handled for the moment, as ReactOS is experiencing disk geometry issues. That means it's not having the proper disk sectors count and then, can't find the backup table (which is located on last disk sector). ([[Pierre Schweitzer]])<br />
* References: ([[Pierre Schweitzer]])<br />
* http://www.intel.com/technology/efi/ ([[Pierre Schweitzer]])<br />
* http://developer.apple.com/library/mac/#technotes/tn2006/tn2166.html ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.h;hb=HEAD ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.c;hb=HEAD ([[Pierre Schweitzer]])<br />
* Rewrite the resource map code to fix a regression, several failures cases, and a few memory leaks ([[Cameron Gutman]])<br />
* Remove an incorrect definition of IopDetectResourceConflict in pnpreport.c (no idea how this didn't trigger an onslaught of warnings) ([[Cameron Gutman]])<br />
* Partially implement IoAssignResources so that it creates a non-conflicting resource list from the requirements but it doesn't claim the resources for the device in the registry ([[Cameron Gutman]])<br />
* Partially implement IoReportResourceUsage so that it checks the resource list for conflicts but doesn't claim the resources in the registry ([[Cameron Gutman]])<br />
* Please test this revision with a variety of hardware and drivers because it activates several code paths in the PnP manager ([[Cameron Gutman]])<br />
* If this causes problems, look for "Denying an attempt to claim resources currently in use by another device!" in the debug log and report the bug to me ([[Cameron Gutman]])<br />
* Fix a critical bug in the conflict detection code ([[Cameron Gutman]])<br />
* Don't unconditionally skip conflict detection for shared resources, instead it should be done on a descriptor-by-descriptor basis (if both descriptors are shared) ([[Cameron Gutman]])<br />
* This check wasn't removed when I initially wrote this code and added the proper check below ([[Cameron Gutman]])<br />
* Add IoWMIDeviceObjectToProviderId and IoIs32bitProcess stubs for 64bit builds ([[Timo Kreuzer]])<br />
* Comment out some deprecated amd64 code ([[Timo Kreuzer]])<br />
* Add MmProtectToValue ([[Timo Kreuzer]])<br />
* Fix a typo ([[Timo Kreuzer]])<br />
* Fix a bug. ([[Timo Kreuzer]])<br />
* Initialize the Zero variable ([[Timo Kreuzer]])<br />
* Don't corrupt the Color value in case we didn't have any page on MmZeroedPageListHead. ([[Timo Kreuzer]])<br />
* Use appropriated macros ([[Pierre Schweitzer]])<br />
* Simplify code, which should bring some fixing ([[Pierre Schweitzer]])<br />
* Fix potential buffer overflow ([[Pierre Schweitzer]])<br />
* Get back INIT_FUNCTION on lassy's polite request. ([[Pierre Schweitzer]])<br />
* Previously, in ReactOS' stories: ([[Pierre Schweitzer]])<br />
* ReactOS was broken since more a hundred of commits when two devs decided it was enough. One (we will name him Timo) fixed the context switch. The second, with the help of a third dev (Pierre & Hervé) decided to run tests by disabling some stuff (ie INIT_FUNCTION). This magically made testbot going back to life. ([[Pierre Schweitzer]])<br />
* But, some complains came from the ML, so trying to appease world, Pierre decided to revert half of his changes, thinking this would be OK. ([[Pierre Schweitzer]])<br />
* Now, after a night. It appears that half revert was a pretty bad idea. Testbot keeps being broken. ([[Pierre Schweitzer]])<br />
* So, this commit reverts r49665 (which was half reverting r49662). That way, testbot should be back, able to run tests. BUT, due to a NPFS issue, some tests are broken. Eric has been nicely mailed about that issue, with an idea of fix (thanks go here to Aleksey). ([[Pierre Schweitzer]])<br />
* For those who like that, drama to follow on ML. ([[Pierre Schweitzer]])<br />
* I turn into being S/M... ([[Pierre Schweitzer]])<br />
* Add missing PAGED_CODE() where needed ([[Pierre Schweitzer]])<br />
* Removed a wrong ASSERT in FsRtlIsNameInExpressionPrivate() and replace it by the right one ([[Pierre Schweitzer]])<br />
* Mark FsRtlIsDbcsInExpression() as halfplemented ([[Pierre Schweitzer]])<br />
* Renamed MmIsFileAPagingFile() to MmIsFileObjectAPagingFile() its appropriated name ([[Pierre Schweitzer]])<br />
* Added it to internal headers ([[Pierre Schweitzer]])<br />
* Implemented FsRtlIsPagingFile() ([[Pierre Schweitzer]])<br />
* Implemented FsRtlLookupPerStreamContextInternal(), FsRtlInsertPerStreamContext(), FsRtlRemovePerStreamContext(), FsRtlTeardownPerStreamContexts() ([[Pierre Schweitzer]])<br />
* Based on my previous work on pierre-fsd branch. ([[Pierre Schweitzer]])<br />
* Add missing prototype and define ([[Pierre Schweitzer]])<br />
* Implemented FsRtlPTeardownPerFileObjectContexts(), FsRtlLookupPerFileObjectContext(), FsRtlInsertPerFileObjectContext(), FsRtlRemovePerFileObjectContext() ([[Pierre Schweitzer]])<br />
* Stubplemented IoGetFileObjectFilterContext(), IoChangeFileObjectFilterContext() ([[Pierre Schweitzer]])<br />
* Add support of per file object filter context to IopDeleteFile() ([[Pierre Schweitzer]])<br />
* As ReactOS doesn't support file objects extensions, this doesn't work (blame Aleksey) - yet ([[Pierre Schweitzer]])<br />
* Implement MemorySectionName case for NtQueryVirtualMemory. Protect buffer access with SEH. (Samuel; {{bug|5753}})<br />
* revert accidental change from r49499 ([[Timo Kreuzer]])<br />
* Fixed FsRtlIsNameInExpression() according to r50018 tests ([[Pierre Schweitzer]])<br />
* Rewritten FsRtlIsDbcsInExpression() using FsRtlIsNameInExpression() pattern. ([[Pierre Schweitzer]])<br />
* This fixes all failing tests from kmtest.sys and make this function definitely tastier to MS fastfat.sys ([[Pierre Schweitzer]])<br />
* Merge some changes from r50021 to FsRtlIsNameInExpression() to make code easier to read and understand... ([[Pierre Schweitzer]])<br />
* Silent FstubEx* debug prints on popular demand (ie, Timo) ([[Pierre Schweitzer]])<br />
* commit base for new vga display miniport driver, is svn copy of framebuf_new as many codes identical ([[evb]])<br />
* Will than commit and document differences to make into vga driver ([[evb]])<br />
* Add the new vga miniport to build ([[evb]])<br />
* Replace the framebuf_new spec rc rbuild with vga_new spec rc rbuild ([[evb]])<br />
* Delete pointer.c ([[evb]])<br />
* Start make changes, driver.h new fields for VGA, change driver short/long name/tag, add macros and in enable.c remove hw pointer support ([[evb]])<br />
* fix now palette.c for vga, by copy logPalVGA/VGALOGPALETTE from NT4 DDK VGA sample drv and turn off codes for allocate 256 color pallette, instead use fix 16 color logPalVGA ([[evb]])<br />
* fix header of debug.c ([[evb]])<br />
* Finish make enable.c work full on vga, main change force 4BPP (disable other codes), create 4BPP bitmap surfobj, associate and lock ([[evb]])<br />
* Easy part done, now hard part ([[evb]])<br />
* Mode detect look for 4BPP, planar, graphics < 0x800 mode now ([[evb]])<br />
* Add GDIINFO from NT4 VGA DDK sample driver ([[evb]])<br />
* Set 4BPP prefer DIB format ([[evb]])<br />
* No graphics caps set for VGA driver ([[evb]])<br />
* Put static palette/color buffer for when VGA IOCTL send later ([[evb]])<br />
* Convert almost done, bInitSURF is last ([[evb]])<br />
* Fix an assign where a comparison was intended. CID 2626. ([[Amine Khaldi]])<br />
* Actually, code was correct, but ugly (who said "normal, that's a hack). ([[Pierre Schweitzer]])<br />
* So, when that code is called from SetupLDR, KeyHandle is required to be to 1. This what code does. Thing we do in the if condition when it appears we are called from SetupLDR. ([[Pierre Schweitzer]])<br />
* To avoid any further question, or warning, adding more parenthesis to show that we know what we do. ([[Pierre Schweitzer]])<br />
* So, to sum up, there's no comparaison for KeyHandle ([[Pierre Schweitzer]])<br />
* Fix CID 3454 ([[Pierre Schweitzer]])<br />
* Remove all #line 15 "ARM³::BLA" ([[Timo Kreuzer]])<br />
* Reasons: ([[Timo Kreuzer]])<br />
* It doesn't provide any benefits, its only purpose was to "look cool" ([[Timo Kreuzer]])<br />
* It never looked cool, instead a character mess appeared ([[Timo Kreuzer]])<br />
* It makes finding the related file harder, especially when the file is named differently then the description or when multiple files have the same tag ([[Timo Kreuzer]])<br />
* It effectively breaks Coverity scans ([[Timo Kreuzer]])<br />
* Make definitions of ExpChangeRundown, ExpChangePushlock and ExpSetRundown 64 bit safe (have one portable definition and use it accordingly) ([[Timo Kreuzer]])<br />
* Hoover a bit in CC part 1. Should make MM happier. ([[Pierre Schweitzer]])<br />
* But MS fastfat driver not yet ([[Pierre Schweitzer]])<br />
* Plumber work part 1. To prevent leaks ([[Pierre Schweitzer]])<br />
* Hoovering part 2... ([[Pierre Schweitzer]])<br />
* Fix typo ~ ([[Pierre Schweitzer]])<br />
* Remove broken definition of SharedUserdata and use correct SharedUserData instead. Fixes a crash on real Hardware. (Daniel; {{bug|5650}})<br />
* Simplify SepPrivilegeCheck. (Timo)<br />
* Fix comments and reduce code complexity. ([[Timo Kreuzer]])<br />
* MiAddressToPte translates a virtual address to the corresponding PTE, MiAddressToPde to the corresponding PDE. MiPteToAddress is the inverse of MiAddressToPte and translates from a PTE to the virtual address. MiPdeToAddress broke this scheme and didn't calculate the corresponding virtual adress, but the adress of the page table. Fix this inconsistency by renaming the macro to MiPdeToPte and adding a fixed MiPdeToAddress. All references fixed accordingly. ([[Timo Kreuzer]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Remove useless checks ([[Pierre Schweitzer]])<br />
* Move redundant sum before loop, so it's done only once ([[Pierre Schweitzer]])<br />
* Fix handling of * wildcard ([[Pierre Schweitzer]])<br />
* This fixes failing kmtest tests added in r50614 ([[Pierre Schweitzer]])<br />
* Fix a bug where a spinlock was acquired on not initialized local variable ([[Johannes Anderwald]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Get back "useless checks" (tests show they weren't that useless) ([[Pierre Schweitzer]])<br />
* Prevent code redundancy ([[Pierre Schweitzer]])<br />
* This fixes 4 failing kmtest tests added in r50679 ([[Pierre Schweitzer]])<br />
* Improved * WC handling for both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression ([[Pierre Schweitzer]])<br />
* This fixes all failing tests in kmtest ([[Pierre Schweitzer]])<br />
<br />
=== IO ===<br />
<br />
==== PNPMGR ====<br />
* Check that we got a valid vector back from HAL when translating an interrupt resource ([[Cameron Gutman]])<br />
* Add some debugging messages for failure paths in device resource handling code ([[Cameron Gutman]])<br />
<br />
=== CSR ===<br />
<br />
==== CSRSRV ====<br />
<br />
== SUBSYSTEMS ==<br />
* CSRSS was started with a free address space, and was able to map 0xA0000 into it by luck, because the ReactOS Mm allocator picks address ranges randomly, and it somehow managed to avoid the low 1MB addresses. Were this algorithm to change, or perhaps, were we to implement VADs for VM allocations, the 0xA0000 region might already be allocated (by an early-process-initialization allocation, such as the heap). This is what the flag referenced above was designed for, but it was not used. Using this flag, on the other hand, now makes CSRSS fail, because it attempts to map the RAM into 0xA0000, which fails since you can map a section on top of reserved memory. To work around this Brobdingnagian annoyance, CSRSS simply releases the first MB of memory that SMSS has nicely reserved for it, and then proceeds with the mapping. This fixes the issue of getting 0xA0000 by luck and now guarantees it can be mapped. ([[sir_richard]])<br />
<br />
=== WIN32 ===<br />
<br />
==== CSRSS ====<br />
<br />
===== WIN32CSR =====<br />
* Move PrivateCsrssManualGuiCheck from user32 to win32csr ([[Giannis Adamopoulos]])<br />
<br />
== TOOLS ==<br />
<br />
=== RBUILD ===<br />
* Fix "format not a string literal and no format arguments" build warnings. ([[Eric Kohl]])<br />
<br />
== Uncategorized ==<br />
<br />
=== 0 ===<br />
* Use the full name we get from SearchForExecutable when building the command line for CreateProcess so we get proper name in argv later. ([[Kamil Hornicek]])<br />
<br />
=== ADVAPI32_LSASRV ===<br />
* Prepare LsapValidateDbHandle for access checks. ([[Eric Kohl]])<br />
* Move the functionality of LsaQueryInformationPolicy (advapi32.dll) into the new function LsarQueryInformationPolicy (lsasrv.dll). ([[Eric Kohl]])<br />
* Remove dead code from advapi32.dll. ([[Eric Kohl]])<br />
<br />
=== APPS ===<br />
* Damir Aliev: Properly convert encoding in cmdline tools. ([[Aleksey Bragin]]; {{bug|3487}})<br />
<br />
=== ARMDDK ===<br />
* Define some spinlock functions. ([[sir_richard]])<br />
<br />
=== ASM ===<br />
* Merge asm related changes from cmake branch. ([[Timo Kreuzer]])<br />
* revert r49824 ([[Timo Kreuzer]])<br />
* Add include guards to asm.inc and comment out broken ljmp macro ([[Timo Kreuzer]])<br />
* Add syscalls.inc, containing assembler macros to generate syscall stubs (all supported architectures) ([[Timo Kreuzer]])<br />
* Change the macros to prefix the labels with Nt or Zw depending on whether we build usermode or kernel mode stubs ([[Timo Kreuzer]])<br />
* Create zw.S using the macros ([[Timo Kreuzer]])<br />
<br />
=== CLASSPNP_CDROM_NEW ===<br />
* Remove useless files. ([[sir_richard]])<br />
<br />
=== EXPLORER_NEW ===<br />
* Provide the ability to query version info (needed for task (DavidErceg; {{bug|4386}})<br />
* grouping). (DavidErceg; {{bug|4386}})<br />
* Open a context menu, when a task is right clicked. (greenie; {{bug|4671}})<br />
* Implement resizing the work area. (greenie; {{bug|5846}})<br />
<br />
=== FREELDR_NTFS ===<br />
* Some fixes and addings to the NTFS header. ([[Pierre Schweitzer]])<br />
* To be used later in order to fix NTFS driver in FreeLdr ([[Pierre Schweitzer]])<br />
<br />
=== HEAP ===<br />
* Move on to using a real HEAP_LOCK structure for a heap lock. ([[Aleksey Bragin]])<br />
* Implement kernel-mode counterparts of this lock too. Right now these don't introduce much of a difference, but they are going to be properly used by the new heap manager code. ([[Aleksey Bragin]])<br />
* Fix allocated/free memory fillers to match those Windows uses (winetests) ([[Aleksey Bragin]])<br />
* Add missing coalesce-on-free flag check in RtlCreateHeap ([[Aleksey Bragin]])<br />
* Turn on tail check/pattern filling in RtlAllocateHeap. ([[Aleksey Bragin]])<br />
* Add extra stuff storage support in RtlAllocateHeap and its helpers. ([[Aleksey Bragin]])<br />
* Set win32 statuses where necessary. ([[Aleksey Bragin]])<br />
* Return success in RtlValidateHeap to reduce spam when running winetest. ([[Aleksey Bragin]])<br />
* Roel Messiant: Remove old-style Peb->ProcessHeaps assignment from RTL, it's already done by MM. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix a typo (missing else) between two if branches, which fixes commit routine support. ([[Aleksey Bragin]])<br />
* Properly save requested size if 0 was given (1 should be allocated, but 0 saved as a requested amount). Fixes winetests. ([[Aleksey Bragin]])<br />
* Remove unnecessary dprints. ([[Aleksey Bragin]])<br />
* Set proper heap flags (tail and free checking) in case heap validation is enabled. Fixes another bunch of winetests. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix infinite loop in RtlDestroyHeap if heap contained big blocks. ([[Aleksey Bragin]])<br />
* Implement setting/getting heap user values and flags (very easy provided heap design is now proper). Amount of winetest failures is down to 12 (but 3 crashes in child processes). ([[Aleksey Bragin]])<br />
* Move (and cleanup) private heap definitions and structure to a standalone header file heap.h. It's explicitly included in heap_rewrite.c and heapdbg.c to prevent conflicts with the existing heap manager in heap.c. ([[Aleksey Bragin]])<br />
* Add 64 bit compatibility. ([[Aleksey Bragin]])<br />
* Properly set HEAP_GROWABLE flag if dwMaximumSize is 0 in HeapCreate. Also check for dwMaximumSize validity. Fixes out-of-memory problems when running "heavy" applications like Office 2003 setup with a new heap manager (which actually respects HEAP_GROWABLE flag). ([[Aleksey Bragin]])<br />
* More resource fixes making warnings vanish when built with cmake. ([[Daniel Reimer]])<br />
* RC file fixes for inconsistences shown up by the recent dll work in r49105. ([[Daniel Reimer]])<br />
* Fix RtlQuery/SetHeapInformation prototypes, move them to an appropriate place. ([[Aleksey Bragin]])<br />
* Implement RtlQuery/SetHeapInformation. ([[Aleksey Bragin]])<br />
* Implement in-place block growing. ([[Aleksey Bragin]])<br />
* Amount of winetest heap failures is down to 6 (3 exceptions still happen). ([[Aleksey Bragin]])<br />
* Fix DWORD -> ULONG in function definitions too. ([[Aleksey Bragin]])<br />
* Implement heap validation support. ([[Aleksey Bragin]])<br />
* Add ability to dynamically allocate UCR descriptors when preallocated amount is exhausted. ([[Aleksey Bragin]])<br />
* Fix a few bugs in RtlpFindAndCommitPages and in deactivated RtlpDecommitFreeBlock. ([[Aleksey Bragin]])<br />
* Enable free blocks decommitting. ([[Aleksey Bragin]])<br />
* New heap manager would now be ready to replace the old one. ([[Aleksey Bragin]])<br />
* Add special debug heap function declarations and stubs. ([[Aleksey Bragin]])<br />
* Add a useful inline for detecting whether a special or normal heap is going to be used. ([[Aleksey Bragin]])<br />
* Implement parameters validation ("DebugHeap") in all used RTL heap APIs. Winetests failures down to 4. ([[Aleksey Bragin]])<br />
* Hackfixed build by stubbing RtlpValidateHeapHeaders(), RtlpValidateHeapEntry() and hackplementing RtlpValidateHeap(). ([[Pierre Schweitzer]])<br />
* To be properly fixed. ([[Pierre Schweitzer]])<br />
* Fix a typo which lead to incorrect flags being forced. Fixes last remaining major winetest failures (only 1 GlobalAlloc/Free implementation related one is left to be fixed). ([[Aleksey Bragin]])<br />
* Time has come to get rid of a slightly modified implementation of WINE's heap, which is a hack based on Windows 95's heap implementation, itself a hack of DOS memory management. It supported 3 out of the 18 possible NT Heap Flags, did not support custom allocation/deallocation routines, and was about 50-80x slower with fragmentation rates up to 500x higher when compared to NT's LFH (WINE is lucky because the advanced NT Heap features are used in kernel-mode usually, not in user-mode, and they are crossing their fingers for this being the same). Several high-end SQL/Database applications would significantly benefit from custom heap features provided by NT. Not to say about removing crappy support for a custom Commit routine and crappy support for User-defined flags and the User-defined value. ([[Aleksey Bragin]])<br />
* So, the glorious moment for a new heap manager, which is (to remind you) a totally new heap manager, resembling real NT heap manager, based on data structures similar to Windows 2003 and Vista+'s heap structures, supporting advanced heap flags (e.g. useful for debugging), having substantially lower fragmentation rates (and thus speed and reliability), having native support for user-defined flags and user-defined values, also native support for a custom commit routine, which is very important for trunk's win32 subsystem. It also reserves, commits, decommits and frees memory on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary. Not to say about support for per process heaps, with a proper lock, and a further support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* Yeah, I'm not a fun person :D ([[Aleksey Bragin]])<br />
* Fix a typo (assignment) in the ASSERT, spotted by Johannes Anderwald. ([[Aleksey Bragin]])<br />
* Peer review rocks. ([[Aleksey Bragin]])<br />
* RtlpInsertFreeBlockHelper: Don't validate the Previous Size of the next Heap Entry when inserting a free Heap Entry into a free list. Should solve bug #5843 and may affect bug #5857. ([[Roel Messiant]])<br />
* All callers of this function already perform this check, except for RtlpInsertFreeBlock, a function used during Heap Segment creation/expansion. ([[Roel Messiant]])<br />
* RtlpInsertFreeBlock creates multiple free Heap Entries (using the helper function) if the free space is too big to be contained in a single Heap Entry. ([[Roel Messiant]])<br />
* In such a case however, it creates a Heap Entry and calls the helper before creating the next Heap Entry, which triggers this assert. ([[Roel Messiant]])<br />
* FontSmoothing" system parameter registry key should be REG_SZ (as it is in Windows, and as other SPIs are). ([[Aleksey Bragin]])<br />
<br />
=== INTRIN ===<br />
* Implement _mm_sfence, _mm_lfence, __faststorefence (for amd64) ([[Timo Kreuzer]])<br />
* Don't use __sync_synchronize() for _ReadWriteBarrier, as it issues an mfence instruction and this is not what we want ([[Timo Kreuzer]])<br />
* Remove "BUGBUG" comment, because the fact that _ReadBarrier and _WriteBarrier are full (compiler) barriers isn't critical. ([[Timo Kreuzer]])<br />
<br />
=== NCI ===<br />
* Ue macros for the other nci generated files, too and delete nci-tool. ([[Timo Kreuzer]])<br />
<br />
=== NPFS_KERNEL32 ===<br />
* Switch back to the old pipe wait code but keep the new code in place (disabled). ([[Eric Kohl]])<br />
<br />
=== NTOS ===<br />
* Lookup the special labels from above when initializing the System DLL. Only lookup INT2E vs SYSENTER on x86, other architectures don't need a stub. ([[sir_richard]])<br />
* Bitmap resources start at index 1, not 0. Also make sure we don't go past the maximum IDB_ resource index for no reason, and check the size of the resource instead of assuming it's going to be one page. ([[sir_richard]])<br />
* Stop using MiInsertInListTail and MiRemoveHeadList in the deprecated ReactOS page functions. Those two functions do not adequately support the semantis needed for page insertion/removal and should've never been used. MmAllocPage now uses MiRemoveAny/ZeroPage, and MmDereferencePage uses MiInsertPageInFreeList. Should help with some corruptions. More is coming. ([[sir_richard]])<br />
* Don't use dangerous MiRemoveHeadList in MDL page allocation, use MiRemoveAnyPage instead. ([[sir_richard]])<br />
* Don't repurpose pages from the zero/free page list without actually unlinking the page first! This should fix even more corruptions. ([[sir_richard]])<br />
* Adding colored page lists means we need to start using the OriginalPte field as a forward/back link. This is shared with AweReferenceCount, which ReactOS uses as the RMAP list head. However, RMAPped pages shoudl never be free/zero, and non-free-zero pages will never have a color backlink in OriginalPte, so it should theoretically be safe to do this. However, it's possible for the RMAP "get" function to be called on a free/zero page (which would normally return NULL), but with color chaining enabled, the "get" function would misinterpret the backlink as an RMAP entry. Therefore, we overload the ParityError bit to signify "there is an RMAP". The get/set functions now handle this, and the color linkage will ASSERT this later. This way, a colorlink with ParityError == FALSE is not treated as an rmap list head. ([[sir_richard]])<br />
* Remove MiZeroPage, use MiZeroPhysicalPage instead. They work pretty much the same except the needless raise to DISPATCH_LEVEL. ([[sir_richard]])<br />
* Get rid of the messed up MiMapPageToZeroInHyperSpace which was hacking into MiMapPagesToZeroInHyperSpace. Now MiMapPagesToZeroInHyperSpace is properly implemented to use chained PFNs, and the MmZeroPageThread code has been modified to correctly use the new mechanism. ([[sir_richard]])<br />
* Zero page mapping now happens at PASSIVE trough MiMapPAgesToZeroInHyperSpace, not DISPATCH anymore. ([[sir_richard]])<br />
* More fixes are coming to remove the remaining MiRemoveHeadList and rewrite the zero page loop. Should fix more possible corruptions. ([[sir_richard]])<br />
* One last fix to the zero page thread before we move to ARM3: use MiRemoveAnyPage instead of dangerous MiRemoveHeadList. The code works on the assumption (validated by Windows through a bug check) that MiRemoveAnyPage always returns the first free page, and we also manually grab the first free page, and compare this is true. Nice way to detect PFN database corruption. ([[sir_richard]])<br />
* Fix MiInsertZeroAtBack to increment the MmAvailablePage count, since MiRemoveAnyPage decrements it (MiRemoveHeadList did not). ([[sir_richard]])<br />
* Zeroed pages should go at the front, not the back of the zero list. Going to the back is a special boot-only case on MP, which isn't supported. Implement zero-only version of MiInsertPageInList, remove MiInsertZeroPageAtBack. ([[sir_richard]])<br />
* Remove many other deprecated functions. Physical memory consistency should now be higher than in the past. ([[sir_richard]])<br />
* The RMAP entry only has a valid process if the address is in user-space, otherwise process is NULL. Only attempt to acquire the process rundown lock if a process actually exists. Fixes crashes caused by 48905. ([[sir_richard]])<br />
* Switch to using an ARM3, much more correct MmZeroPageThread. Stub support for discarding sections and listening to the Power Manager Idle Timer. ([[sir_richard]])<br />
* Use a synchronization (auto-reset) instead of notification event for the zero page thread, this way we don't have to reset it manually and query its state. Instead, a boolean MmZeroingPageThreadActive is checked instead. ([[sir_richard]])<br />
* Once we switch to colored lists, major improvements can be done for speed. ([[sir_richard]])<br />
* Write missing color code in certain PFN functions, and fix existing code where needed. Add some debugging. For now, turned off until testing succeeds. ([[sir_richard]])<br />
* Redocument which MMPFN fields are violated by ReactOS-internal values. This has gotten much better than before. ([[sir_richard]])<br />
* Fix straggling bugs in color table algorithms. ([[sir_richard]])<br />
* Enable color tables! Right now pages are merely entering and exiting the tables, the tables themselves are never used for allocations. This will change with further commits. ([[sir_richard]])<br />
* Add MiRemoveZeroPageSafe helper function, when a zero page is required, but the inline zeroing of MiRemoveZeroPage is not. This function will only try grabbing a zero page if one exists, otherwise a free page will be grabbed and zeroed with custom code of the caller's choosing. ([[sir_richard]])<br />
* Add concept of process color and system color. Compute correct color to use whenever requesting a page. ([[sir_richard]])<br />
* Uncondtionally enable the color code when inserting/removing pages. ([[sir_richard]])<br />
* For now, when requesting a page, colors are still ignored, and the global PFN lists are scanned instead. If there are no regressions, we are one patch away from that. ([[sir_richard]])<br />
* Fix a bug in MiRemoveAnyPage: it was always checking the colored zero page list, instead of checking the colored free page list the second time around. ([[sir_richard]])<br />
* Add definition for size of a page directory, and size of all page directories required per process (some architectures have more than one page directory per process/address space). ([[sir_richard]])<br />
* MiSetConsumer no longer achieves anything. Remove it. ([[sir_richard]])<br />
* Use SYSTEM_PD_SIZE instead of assuming that this is PAGE_SIZE, since this is not the case on (future) ARM and (current) AMD64 ports. ([[sir_richard]])<br />
* Remove some magic numbers in the pool code, using PTE_COUNT, MiAddressToPde, when needed. Also, the expansion code uses PDEs, not PTEs, so differentiate this, because on some systems (ARM), there are different structures for both. ([[sir_richard]])<br />
* Use MI_WRITE_INVALID_PTE. ([[sir_richard]])<br />
* ARM3 paged pool now works, the expansion bug has been fixed (and the code is more portable). Expect to see it gradually enabled soon. ([[sir_richard]])<br />
* He's climbing in yo PFN database, he snatching yo pages up, tryin to page em so y'all need to hide your pool hide your cache, and hide your working set cuz they grabbin' all the pages out there. We gonna page you, we gonna page you, so you can run and fault on that, run and fault on that, home boy, homeboy, home homeboy. ([[sir_richard]])<br />
* Enable ARM3 Paged Pool and remove all related deprecated code. Install tested on several VMs, it might cause new regressions. Let's fix them before 0.3.13 instead of reverting. ([[sir_richard]])<br />
* This is why you shouldn't let Antoine Dodson commit code. ([[sir_richard]])<br />
* Move all the Nt*Section API interfaces into ARM3 and rewrite most of the code to perform the same parameter validation and input checks as Windows does. Support all protection masks. Use correct section object access mask. Use appropriate SEH where needed. Pass 0-initialized local instead of NULL when needed. Don't assume certain parameters are OPTIONAL when they are not. Don't return SEH failures at the end of the system call, the kernel usually returns the result of the system call proper. Call DbgkMapViewOfSection in scenarios where it would not have gotten called before. Protect against certain kinds of kernel-mode access from user-mode. ([[sir_richard]])<br />
* Move unimplemented Mm*Section APIs into ARM3 as well. ([[sir_richard]])<br />
* Go ahead and now fill out the OriginalPte field for PFNs initialized with MiInitializePfn(ForOtherProcess). They should only belong to ARM3 so they'll never have SwapEntry/RMAP associated with them. This functionality is important for future Prototype PTE support, among other things, as it lets us get the original PTE value written for a given PFN entry. ([[sir_richard]])<br />
* Define MI_MAKE_PROTOTYPE_PTE macro to make a real prototype PTE from a PTE. Define counter-part MiProtoPteToPte to recover the true PTE from a given Prototype PTE. ([[sir_richard]])<br />
* Define MI_PTE_LOOKUP_NEEDED instead of using 0xFFFF. The name was found in checked build assertion strings. ([[sir_richard]])<br />
* Add MM_VIEW (used for System-mapped Section Views) and MM_SESSSION (used to define the system/session view mappings) structure definitions. ([[sir_richard]])<br />
* Initialize system views by calling MiInitializeSystemSpaceMap. This sets up the lock, bitmap, and hash table. ([[sir_richard]])<br />
* Implement/fixup the code paths during page faults that are needed to succesfuly resolve a demand page associated with a pagefile backed ARM3 section (which uses Prototype PTEs). A lot of the code was already there but assumed we were using Prototype PTEs only for the shared user data page. By combining that code with the typical demand-zero fault code, we obtain the needed paths. For now, only tested with ARM3 sections that are page-filed backed (not image or data-file backed) mapped into system view space (MmMapViewOfSectionInSystemSpace), not user-mode addresses (which need VADs). The code to actually create/map these doesn't exist in trunk yet, the purpose of this checkin is to test the new fault changes to make sure they don't cause negative effects to already-working faults. ([[sir_richard]])<br />
* Implement MmCreateArm3Section, which creates ARM3-backed sections, but only for pagefile-backed memory at the moment. It uses MiCreatePagingFileMap and creates the expected Segment, Subsection, ControlArea and Section objects described in Windows kernel internals literrature. It's surprisingly easy and only takes 200 lines of code. ([[sir_richard]])<br />
* Implement MiMapViewInSystemSpace, all it took was another 250 lines and we can now map ARM3 sections into memory. Accessing them causes a fault, which we correctly handle with the prototype PTE fault code. ([[sir_richard]])<br />
* Added a bogus allocation flag that can be used with Nt/MmCreateSection and MmMapViewInSystemSpace to take the ARM3 path instead. Only for internal testing at the moment. ([[sir_richard]])<br />
* Now we need to look at how to allow mapping these into user-space as well... ([[sir_richard]])<br />
* Nobody reads/checks for MEMORY_AREA_CACHE_SEGMENT. Might as well just call this zero (no logical change). ([[sir_richard]])<br />
* We don't support SEC_BASED for ARM3 sectios either, ASSERT that. ([[sir_richard]])<br />
* Nobody actually writes TRUE for WriteCopyView in the MEMORY_AREA data structure, so this field is useless (always false). Remove all instances of its use. ([[sir_richard]])<br />
* Nobody uses MEMORY_AREA_SYSTEM anymore, call these MEMORY_AREA_OWNED_BY_ARM3 for now. We'll have to sync this code with x86 later anyway. ([[sir_richard]])<br />
* Use the Spare flag in the VAD as a ReactOS/MemoryArea specific flag to signify that this VAD is associated with a MEMORY_AREA and should be unlinked at process exit, but not freed. This is because MemoryAreas themselves are cleaned up later, and in the future their associated VADs (not yet in Trunk) will also be parsed. In the process death scenario, those VADs will be freed, but not unlinked (since it would already have been unlinked). ([[sir_richard]])<br />
* Add a _64K macro definition so we can stop typing out 65536 all the time. ([[sir_richard]])<br />
* Delete deprecated handling of MEMORY_AREA_IO_MAPPING. Delete all MEMORY_AREA definitions except the ones for SEGMENT_VIEW and VIRTUAL_MEMORY. All other memory is now owned by ARM3! ([[sir_richard]])<br />
* Delete WriteCopyView flag from MEMORY_AREA (unused, and was taking up 4 bytes due to alignment), and add a Vad pointer (takes up 4 bytes -- no actual size change). ([[sir_richard]])<br />
* For VM and Section MEMORY_AREAs mapped in user-mode, build a "fake" VAD and insert it into the VAD Root of the Process. This means there is now a consistent view between ARM3 and RosMm in terms of user-mode address space layout, which will come in handy later. ([[sir_richard]])<br />
* Destroy the MEMORY_AREA's VAD when the MEMORY_AREA itself is deleted. Watch out for the scenario explained in a previous check-in, where the VAD was caught by the MmCleanProcessAddressSpace vad-cleanup-loop. ([[sir_richard]])<br />
* Implement MiInsertVad to restore the old functionality of MiInsertNode when the current parent and insertion result is not yet known. It obtains the information and calls MiInsertNode. ([[sir_richard]])<br />
* Add the tiny little bit of code required to correctly handle user-mode faults on ARM3 mapped sections in certain limited scenarios. ([[sir_richard]])<br />
* Implement ARM3 version of MmMapViewOfSection, only for ARM3 pagefile-backed sections, and without any special flag support. Tested and works great, with the new pagefault code correctly finding the Prototype PTE for the VAD. ([[sir_richard]])<br />
* Make every VAD insert also create a MEMORY_AREA. Now the two address space views should be completely synchronized and we can try removing the hack that was done for PEB/TEB support (which will remove the 200 thread regression). ([[sir_richard]])<br />
* Implement MiGetNextNode and MiFindEmptyAddressRangeInTree. ([[sir_richard]])<br />
* When shutting down, call Cc to flush the dirty cached pages, otherwise these might've gotten lost (and lead to lost/corrupted data on disk). ([[sir_richard]])<br />
* Don't assume that CcFlushDirtyPages will run with APCs disabled. Go ahead and actually enter/leave a critical region (Acquire/ReleaseForLazyWrite depend on this). The guarded mutex does disable APCs, but it's released when the actual flush happens. ([[sir_richard]])<br />
* Delete a bunch of junk, 5 less files in Mm now (also moved some functions around). Delete unused functions where found. ([[sir_richard]])<br />
* The modified page writer should run at a high priority such as 27, not in idle mode at priority 1 -- otherwise dirty pages never get flushed out. ([[sir_richard]])<br />
* Reimplement MmGetFileNameForAddress, MmGetFileNameForSection, MmGetFileObjectForSection to also support ARM3 sections. Shouldn't affect anything other than the user-mode debugging support. ([[sir_richard]])<br />
* High-level interface fixes to NtAllocateVirtualMemory/NtFreeVirtualMemory: ([[sir_richard]])<br />
* Validate MEM_LARGE_PAGES, MEM_PHYSICAL flags. Check for permission to use MEM_LARGE_PAGES. ([[sir_richard]])<br />
* Validate protection mask. ([[sir_richard]])<br />
* Validate MEM_RELEASE and MEM_DECOMMIT. ([[sir_richard]])<br />
* Perform correct SEH in NtFreeVirtualMemory. ([[sir_richard]])<br />
* Protect against overflows past VAD/User address ranegs. ([[sir_richard]])<br />
* Only reference the process by handle if this isn't already the current process. ([[sir_richard]])<br />
* If this isn't the current process, attach to it during the duration of the VM operation. ([[sir_richard]])<br />
* Temporary debugging. ([[sir_richard]])<br />
* Implement monitor bitmap support for the display dialog (Carlo; {{bug|3158}})<br />
* Fix incorrect codepage values (Carlo; {{bug|3158}})<br />
* Look for applets in windows dir as well as system dir (Carlo; {{bug|3158}})<br />
* Fix bugs in the VAD algorithms, we should be rounding up, not down. ([[sir_richard]])<br />
* My attempt at making bugchecks a thing of the past has failed, someone has caught the typo. Bugchecks will now happen in ReactOS again instead of being ignored. Maybe you can "forget" to merge this one with the release branch? ;-) ([[sir_richard]])<br />
* Add support for user-mode VAD faults on page tables (just a couple lines of extra code). ([[sir_richard]])<br />
* Add support for user-mode VAD demand zero faults. ([[sir_richard]])<br />
* Remove broken ASSERT. ([[sir_richard]])<br />
* Hackfix a hack. Should get rid of the recent VAD assert in user32/bpp changes. ([[sir_richard]])<br />
* Fix copy/paste error. ([[sir_richard]])<br />
* Add MmProtectToValue array to convert MM/PTE protection values to Win32 protection flags. ([[sir_richard]])<br />
* Handle faults on non-demand-zero PTEs (and/or demand-zero PTEs that are not READWRITE (such as EXECUTE_READWRITE)). ([[sir_richard]])<br />
* Use MI_SET_PFN_DELETED where we missed it. ([[sir_richard]])<br />
* Implement support for deleting user-mode pageable VM addresses. Now when cleaning up the process address space, MiDeleteVirtualAddresses is called for the VADs, so this will now actually free the PEB/TEB pages that were previously getting leaked for each thread/process (a known regression I introduced when moving to VADs for PEB/TEB). ([[sir_richard]])<br />
* Fix brainfart (an interesting bug we would've never hit, but a bug nevertheless). ([[sir_richard]])<br />
* Complete the VAD-to-MAREA Synchronization hack by removing fake MAREAs that were added when inserting real VADs. To do this, we have to track the fake MAREA associated with a VAD, so we overload the FirstProtoTypePte field in the VAD, if this is NOT a section VAD (which we don't use yet). We'll figure something out for section VADs later. ([[sir_richard]])<br />
* Now that VAD and MAREA views are synchronized, remove the VAD limit and let VADs be created at any address. Also do not create an arbitrary 16MB VAD memory area anymore. This basically now allows for as many PEB/TEBs as can fit in the address space, fixing the recent known regression that limited the number of threads a process could have. ([[sir_richard]])<br />
* Store the protection mask in the Fake VADs as well, we can read/convert this from the MAREA protection value. ([[sir_richard]])<br />
* Reimplement NtQueryVirtualMemory to use VAD information instead. Even though Alloc/Free are still MAREA-based, the fake VADs we build ought to be enough to make the query API work for certain limited scenarios. Only some paths are implemented and it's lacking SEH, but it's good enough for the install/boot requirements. If there are any regressions, please file bugs. ([[sir_richard]])<br />
* Remove the Bavarian hack, I no longer think it is needed. ([[sir_richard]])<br />
* Remove the "35314 sginsberg /* REACTOS Mm Hack of Doom */". Apocalypse averted? ([[sir_richard]])<br />
* Clean up Mm initialization, there is now no-more RosMM stuff done in Phase 0 of MmInit, only ARM3 runs. The kernel address space and memory areas are only initialized in Phase 1, because that's where sections are started up, and they're the only thing other than VM which still use memory-areas. ([[sir_richard]])<br />
* Implement MiDecrementReferenceCount and rewrite large parts of the ProbeAndLock/Unlock MDL API to fully use ARM3 APIs, dropping MmReference/DereferencePage behind. ([[sir_richard]])<br />
* Fix many MDL API bugs: correctly check for I/O pages, use LIST_HEAD instead of -1, track system-wide locked pages, use the process working set lock instead of the address space lock, add check for cross-ring MDL mappings, and make some small optimizations. ([[sir_richard]])<br />
* Make some more fixes in MmAllocatePagesForMdl, MmFreeMdlPages to make the PFN entries more "correct". ([[sir_richard]])<br />
* Had a little breakthrough: instead of complicating our lives and hiding certain ReactOS-Mm fields inside legitimate ARM3/MMPFN fields, differentiate between "legacy" (RosMm) and ARM3 pages. The legacy allocator (MmAllocPage/MmRequestPageMemoryConsumer) will use the non-paged pool to allocate a MMROSPFN add-on (8 bytes), in which the RMAP list head and SWAPENTRY are stored. When a legacy "free" is done, this data is deleted. Additionally, we can now tell apart between ARM3 and RosMm pages, so appropriate ASSERTs have been added to make sure the two never cross paths (which should safely let us use all the PFN fields now and implement working sets, etc...). I don't know why I didn't think of this sooner. ([[sir_richard]])<br />
* Get rid of MC_NPPOOL and MC_PPOOL memory consumers since those are not managed by RosMm anymore. Use MC_SYSTEM for the page table stuff that RosMm still handles, and keep MC_USER and MC_CACHE for the current Section/VirtualMemory/Cache RosMm code. ([[sir_richard]])<br />
* Implement the MAREA<->VAD hack for section VADs as well. ([[sir_richard]])<br />
* Use allocation attribute 0x1 instead of 0xC0000000 to let RosMm know this is an ARM3 section. 0xC0000000 is actually a valid combination of SEC_ flags, 0x1 is illegal and thus recognized. ([[sir_richard]])<br />
* Add support for unmapping ARM3 sections, destroying segments and control areas, and clearing out subsection PTEs. ([[sir_richard]])<br />
* Add support to MiDeletePte/MiDeleteVirtualAddresses to handle Section VADs. ([[sir_richard]])<br />
* Add support to MiDeletePte to handle valid, prototype PTEs. ([[sir_richard]])<br />
* Add MEM_TOP_DOWN support to ARM3 section code. ([[sir_richard]])<br />
* Add support for unmapping currently mapped ARM3 section views at process termination. ([[sir_richard]])<br />
* Use the new ARM3 section code for mapping the NLS section in the system (tests the system-view mapping code) and in each new process (tests the data-mapping code). Section is correctly unmapped at process termination time! ([[sir_richard]])<br />
* C Pointer Math will bite even the most experienced programmer in the ass. Fix wrong calculation which led to ASSERTs and memory corruption (since the last revision). ([[sir_richard]])<br />
* Fix multiple math/logic bugs in the PrototypePTE paths. Caught while trying to switch the Win32k GDI Handle Table to ARM3 sections. ([[sir_richard]])<br />
* Go back to using RosMm for the NLS section since supposedly this causes issues on some systems. This is the only actual change in r206/208/209, so if Caemyr's data is correct, this fill fix it. ([[sir_richard]])<br />
* Protect Arty's changes with #ifdef NEWCC, otherwise this code ASSERTs and crashes as soon as a pageout operation is required. Since your advanced test/regression systems boot into configurations with 1GB+ RAM, you never even test these paths and one could put an ASSERT(FALSE) and you wouldn't even notice it (as proven). ([[sir_richard]])<br />
* Remove merge artifact from newcc. ([[sir_richard]])<br />
* Make sure we don't get a user-pointer back from MmMapInSystemSpace. ([[sir_richard]])<br />
* Sanity checks when dealing with creating/cleaning process address space. ([[sir_richard]])<br />
* Set the VmDeleted flag when the process address space is being nuked. ([[sir_richard]])<br />
* Fix typos. ([[sir_richard]])<br />
* Assert nobody tries to touch the sharecount of a non-ARM3 page. ([[sir_richard]])<br />
* ASSERT nobody tries to put ARM3 pages into the MC_USER LRU. ([[sir_richard]])<br />
* You can't just set MDL_LOCKED_PAGES without actually... locking the page. Add a MmReferencePage when doing so, so when that a paging read/write IRP gets completed (and MmUnlockPages is called), the page gets handled correctly. Can now boot with 64MB RAM without ASSERTs. ([[sir_richard]])<br />
* Fix one of the MDL code paths that isn't getting called frequently. ([[sir_richard]])<br />
* Fix a bug in MmFindGapBottomUp which could make it return an address lower than what the caller said should be the lowest address. ([[sir_richard]])<br />
* Fix a bug in the MDL Code which would dereference a completely bogus page frame index. ([[sir_richard]])<br />
* Misc typo and cleanup fixes. ([[sir_richard]])<br />
* CR3 should be PDE_BASE, not PTE_BASE! ([[sir_richard]])<br />
* Define DemandZeroPte. ([[sir_richard]])<br />
* Define an array of MI_USAGE integers to track what a PFN is used for. ([[sir_richard]])<br />
* Extend the MMPFN structure for ReactOS-specific PFN tracing mechanism. ([[sir_richard]])<br />
* Add macros to track page usage and process/extra-data (not yet used). ([[sir_richard]])<br />
* Add page-tracking macro calls wherever needed. MI_TRACE_PFNS is still off, though, so this code won't be called. ([[sir_richard]])<br />
* Mark all initialization functions INIT_FUNCTION. ([[sir_richard]])<br />
* This will save ~280KB of RAM once we dump INIT from RAM in a future patch. ([[sir_richard]])<br />
* Display current free RAM at certain checkpoints. ([[sir_richard]])<br />
* Implement the idle loop in C. ([[sir_richard]])<br />
* Make idle loop portable. Can be moved out of /i386 now. ([[sir_richard]])<br />
* Context switch in C instead of ASM. Can be made more portable, but it's a good start. Unless Timo rewrites it. ([[sir_richard]])<br />
* KiDispatchInterrupt (the DPC handler) in C, instead of ASM. ([[sir_richard]])<br />
* Optimize new context switching code to avoid wasted cycles. ([[sir_richard]])<br />
* Assign a working set to the system process and correctly initialize its address space. ([[sir_richard]])<br />
* Assign the working set list address, system-wide, but per-process (in hyperspace). ([[sir_richard]])<br />
* Give every process its working set page, and store it. Build a bogus working set list (MMWSL). ([[sir_richard]])<br />
* Use the process working set list (MMWSL) to track page table references during faults, just as Windows does. ([[sir_richard]])<br />
* Correctly initialize the colored page list heads and assert their validity. ([[sir_richard]])<br />
* Fix bugs in MiAllocateContiguousPages. Fixes an ASSERT Caemyr was seeting a lot (the cont-able ASSERT). ([[sir_richard]])<br />
* Fix another bug in the continuous memory allocation code, which would go off-by-one while looping the PFN entries for the allocation, and corrupt the PteFrame/PteAddress of an unrelated PFN entry. If this PFN was in the active lists, it would cause page table leaks and faults, if the page was on a free list, it would override the colored list backlink and corrupt the list, later causing unlinked pages to remain linked to the list. ([[sir_richard]])<br />
* Fix a bug in MiRemovePageByColor which caused corruption of the page list and could lead to crashes, re-use of freed memory, assuming active memory was free, etc. ([[sir_richard]])<br />
* Use MI_PFN_ELEMENT in this code, as the extra checks done by MiGetPfnEntry are irrelevant and slow things down. ([[sir_richard]])<br />
* Remove some old ReactOS hacks before we had MMROSPFNDATA. ([[sir_richard]])<br />
* Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the way page allocations are given out and creates a less uniform physical memory layout. The fact this now works means that the PFN lists are finally now sane. ([[sir_richard]])<br />
* Bugfixes for the I/O Controller Object. ([[sir_richard]])<br />
* Define portable MI_MAKE_ACCESSED_PAGE macro. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to account ARM, where the PDE and PTE formats are different. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to use portable PTE macros instead of hard-coding x86-only fields. ([[sir_richard]])<br />
* Don't put boot.s in "arch" anymore, it's part of "boot" now. ([[sir_richard]])<br />
* Erm, why is it that the ARM compiler detects this obvious bug, but x86 does not? Fix missing ShareCount zeroing when unlocking an MDL. ([[sir_richard]])<br />
* Errr... wow! Another one caught by ARM GCC. I can swear x86 GCC used to catch these. Did someone change warning settings? Anyhow, fix a *f++ which increments the pointer, not the value INSIDE the pointer (*f)++. Fixes MiDeleteSystemPageableVm. ([[sir_richard]])<br />
* Fix incorrect assumptions that a PDE == PTE which have crept up throughout new ARM3 code. ([[sir_richard]])<br />
* Fix a couple more unportable directly "Hard" PTE field accesses, instead of using portable MI macros. ([[sir_richard]])<br />
* Cleanup some of the pool code that had really messed up PDE vs PTE. ([[sir_richard]])<br />
* Define the number of page directoty levels for ARM. ([[sir_richard]])<br />
* Comment out some ARM3 code that won't be needed now that most of the x86 code is in C. ([[sir_richard]])<br />
* Add MiGetPteOffset for ARM. All of the kernel compiles, but does not link yet. ([[sir_richard]])<br />
* Fix up ARM code to match recent ARM3 changes. ([[sir_richard]])<br />
* Do not use initguid inside every single file to zillionplicate the GUIDs! Why doesn't the x86 linker catch this?!!? ([[sir_richard]])<br />
* Some more ARM build and linker fixes, moving some of the new x86 C code into ARM. This should really be shared later. ([[sir_richard]])<br />
* Totally broke thread context switching on ARM for now. It's a Good Thing. ([[sir_richard]])<br />
* Fix 16-bit interlocked operations on ARM (GCC doesn't provide built-ins). ARM should build now. ([[sir_richard]])<br />
* STATUS_SUCCESS is not the only succesful return code. ([[sir_richard]])<br />
* Seems like cpsr_c doesn't work in this case? Need to investigate. Put an infinite loop in the entrypoint on ARM. ([[sir_richard]])<br />
* Roel Messiant: Fix NtQueryObject to return the required buffer size if the buffer provided was too small. Unimplemented paths behaviour is preserved. ([[Aleksey Bragin]])<br />
* Check that MaximumSize is valid value if the section is being backed by paging file. ([[Michael Martin]])<br />
* Always initialize TrapFrame segment selectors in KiEnterTrap, because further C code relies on at least TrapFrame->SegFs being correct. Running Arwinss on VirtualBox exposed this bug. ([[Aleksey Bragin]])<br />
* I wouldn't find solution for this bug without Timo's great help! ([[Aleksey Bragin]])<br />
* Remove IMAGE_FILE_MACHINE_NATIVE and IMAGE_FILE_MACHINE_ARCHITECTURE definitions, use only the former ([[Timo Kreuzer]])<br />
* Fix incompatibility with newer KiEnterTrap implementation. Should fix spontaneous issues I possibly introduced with my previous commit, and finally fixes that VirtualBox issue. ([[Aleksey Bragin]])<br />
* Fix memory region size calculation in MemoryBasicInformation in certain cases. Spotted by Michael Martin. ([[Aleksey Bragin]])<br />
* Fix a typo in region size calculation of special memory areas, which unbreaks OllyDbg & co. Thanks Michael Martin for the hint. ([[Aleksey Bragin]]; {{bug|5692}})<br />
<br />
* Do the required flush when the last reference to a cache stripe is released. The installer now completes given enough ram in NEWCC=1, and writes an understandable FS. There's at least one more problem preventing the resulting installation from booting however. ([[Art Yerkes]])<br />
* Fix a bug in rmap where we were checking the next (unfortunately named current) rmap for a segment membership. ([[Art Yerkes]])<br />
* Fix a mistake in cache trim. ([[Art Yerkes]])<br />
* #ifdef detection of DirectMapping in section in NEWCC mode in page out. ([[Art Yerkes]])<br />
<br />
* Fix copypasta, thanks Victor! ([[Aleksey Bragin]])<br />
* Greatly simplify and fix the incorrect and overcomplicated if condition in IoIsOperationSynchronous(), based on MSDN description. Bug spotted, fix tested by Pierre. ([[Aleksey Bragin]])<br />
* Temporary bring back the old boot image until I or sir_richard commit a proper fix. ([[Aleksey Bragin]])<br />
* Reduce PDE/PTE confusion a little more. ([[Roel Messiant]]; {{bug|5791}})<br />
* MiQueryMemoryBasicInformation: Fall back on MEMORY_AREA data in sections until the MM rewrite also covers these. for more info. ([[Roel Messiant]]; {{bug|5791}})<br />
* Complete rewrite reserving and releasing of System PTEs. ([[Roel Messiant]])<br />
* The previous algorithm, in a nutshell, worked as follows: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by their base address. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping). ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Problems with the previous algorithm: ([[Roel Messiant]])<br />
* While the idea is that all PTEs in clusters are zeroed, which requesters rely on, cluster bookkeeping isn't zeroed on merges. ([[Roel Messiant]])<br />
* The side effect of this was that PTEs that weren't really zeroed were randomly delivered to requesters. ([[Roel Messiant]])<br />
* 99% of the time, allocations are serviced using the first cluster in the list, which is virtually always the first suitable cluster. ([[Roel Messiant]])<br />
* This is so because the ordering is based on the base address of the clusters, and allocations are serviced using the cluster tail. ([[Roel Messiant]])<br />
* Because the first cluster starts out as the whole pool, and the pool is quite sizable, it can deal with virtually allocations.. for a while. ([[Roel Messiant]])<br />
* A corollary of the previous point is *massive fragmentation* because: as long as an allocation isn't released back into the pool, ([[Roel Messiant]])<br />
* the space of previous allocations that have been released isn't reused because the first cluster can't suck them up, and enough allocations remain in use. ([[Roel Messiant]])<br />
* The combined effect of the previous two points: a first cluster that effectively shrinks mostly, with small clusters forming behind it. ([[Roel Messiant]])<br />
* Once the first cluster has shrunk far enough (which of course takes a long time), 90% of the space may still be free, scattered in mostly small clusters. ([[Roel Messiant]])<br />
* This would make decent sized allocations fail because of the heavy fragmentation. ([[Roel Messiant]])<br />
* An implementation detail that caused the head of the list to be treated as a genuine cluster when the first cluster in the list was too small. ([[Roel Messiant]])<br />
* The algorithm (as explained above) made this case quite unlikely until your system has been running for a while, after which it could happily ([[Roel Messiant]])<br />
* corrupt list heads of other pools, depending on where the list head is with respect to its own pool. ([[Roel Messiant]])<br />
* Empirically obtained data revealed that after just *booting to the desktop*, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained roughly 70 (unusable) clusters, blocking 15 to 20% of the pool. These figures increased to roughly 100 ([[Roel Messiant]])<br />
* clusters and 30 to 35% after opening a foxy browser and using it to visit a mathematically inspired search engine. ([[Roel Messiant]])<br />
* The same data also showed that over 95% of allocations requested just a single PTE, and a noticable allocation spike ([[Roel Messiant]])<br />
* also occured in the range of 65-128 PTEs. It should be clear optimizing for small allocations is a good idea, ([[Roel Messiant]])<br />
* and preferably encourage reuse the same PTEs for such allocations. ([[Roel Messiant]])<br />
* And the new algorithm was born: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by increasing cluster size. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping) .. really this time! ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Both in the reservation and release actions, insertions into the list preserve the increasing cluster size order. ([[Roel Messiant]])<br />
* Empirically obtained data now revealed that after just booting to the desktop, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained exactly 2 clusters. This increased to 10 clusters after some minor internet browsing and watching a 5 minute video using a media player. ([[Roel Messiant]])<br />
* Fix a typo in the page fault handler that caused PDEs to be fixed up when they were in fact valid. ([[Roel Messiant]])<br />
* Only update the System Page Directory when expanding the paged pool. Fixes the PointerPde asserts. ([[Roel Messiant]])<br />
* On paged pool expansion, the system page directory and the process page directory of the calling process were updated. ([[Roel Messiant]])<br />
* When updating the process page directory, an assert made sure the PDE that got written was invalid. ([[Roel Messiant]])<br />
* In case of the System process, both page directories are located on the same physical page. ([[Roel Messiant]])<br />
* So when this process expanded the paged pool, the system page directory update automagically ([[Roel Messiant]])<br />
* updated the process page directory too. The assert therefore triggered. ([[Roel Messiant]])<br />
* Not explicitly updating the process page directory will result in a page fault later on, which is ([[Roel Messiant]])<br />
* handled by copying the required PDE from the system page directory to the process page directory. ([[Roel Messiant]])<br />
* Rumour has it this fix is incorrect because "something's wrong with the System PDE stuff". The lack ([[Roel Messiant]])<br />
* of any further info however leads to this change and explanation. ([[Roel Messiant]])<br />
* Remove undocumented defines from winuser.h and include undocuser.h when _WINE is defined. ([[Aleksey Bragin]])<br />
* crt header compatibility update: ([[Timo Kreuzer]])<br />
* define _USE_MATH_DEFINES for dsound, gdiplus, jscript and some win32k files ([[Timo Kreuzer]])<br />
* don't define HAVE_LRINT(F) in libsamplerate ([[Timo Kreuzer]])<br />
* Remove M_PI constants from win32k ([[Timo Kreuzer]])<br />
* Try to fix a winetst crash. ([[Timo Kreuzer]])<br />
<br />
=== NTOS_MM ===<br />
* N ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Initialize Found to FALSE in NtQueryVirtualMemory. I wonder how GCC missed uninitialized var usage? ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Implement case when NtQueryVirtualMemory is called with non-existing virtual address. ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Handle various special cases in NtQueryVirtualMemory (e.g. querying illegal virtual addresses, shared memory area, etc). Example of an app doing this - OllyDbg. ([[Aleksey Bragin]])<br />
* Don't lie about page protection in MiQueryAddressState. Fixes PDFCreator-alike bugs. ([[Aleksey Bragin]]; {{bug|5627}})<br />
* Don't access pfn database directly, there is a function for this. Thanks sir_richard. ([[Aleksey Bragin]])<br />
<br />
=== NTOSKRNL_MM ===<br />
* Acquire rundown protection on process to make sure it is not being terminated and before attempting to do anything with the process. Fixed a rare case of PspDeleteProcess being called twice for a process, resulting in bugcheck. ([[Michael Martin]])<br />
* Fix the use of an uninitialized variable. ([[Amine Khaldi]])<br />
<br />
=== NTOSKRNL_NEWCC ===<br />
* Init Dummy var even if just used for debug to suppress warning ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PPC ===<br />
* Fix index out of bounds ([[Pierre Schweitzer]])<br />
* Fix sizeof() wrong usage ([[Pierre Schweitzer]])<br />
* Fix the fix, spotted by "ThFabba" on IRC ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* PspCreateThread: If thread creation fails, dereference the Process object also to account for the reference taken at the beginning of the function. ([[Michael Martin]])<br />
* Remove mistakenly committed ASSERTs that were used during my tests. ([[Michael Martin]])<br />
* Revert r48857. The Process object is dereferenced when the Thread object is destroyed, so dont dereference it here. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* add a comment so that noone will stumble upon this atrocity a second time. ([[Timo Kreuzer]])<br />
<br />
=== PSDK_DDK ===<br />
* Add more missing definitions. Fix classpnp.h. ([[sir_richard]])<br />
* Last couple of fixes to headers. Classpnp can compile (and link) now. ([[sir_richard]])<br />
<br />
=== PSDK_NDK ===<br />
* Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. ([[sir_richard]])<br />
<br />
=== RTL_DPH ===<br />
* Add core DPH (Debug Page Heap) structures based on Windows 2003/Vista. ([[Aleksey Bragin]])<br />
* Add misc generic support routines. ([[Aleksey Bragin]])<br />
* Implement DPH version of RtlCreateHeap(). ([[Aleksey Bragin]])<br />
* Debug prints match those printed by Windows 2003. ([[Aleksey Bragin]])<br />
* Implement adding a new pool and allocating a new node. ([[Aleksey Bragin]])<br />
* Add a bunch of stubs. ([[Aleksey Bragin]])<br />
* Implement list manipulation routines: pool list, virtual list, unused list. ([[Aleksey Bragin]])<br />
* Implement node removal from an available list. ([[Aleksey Bragin]])<br />
* Implement more support functions: coalescing a node into the list of available nodes, finding a best fitting node for a given size, growing available virtual memory amount. ([[Aleksey Bragin]])<br />
* Implement other support locking/unlocking, handle-related routines. ([[Aleksey Bragin]])<br />
* Fix RtlpDphFreeVm definition. ([[Aleksey Bragin]])<br />
* Node lists related improvements: Add a function for removing a node from a free list, implement coalescing free nodes into an available list. ([[Aleksey Bragin]])<br />
* Implement a non-implemented case in RtlpDphAllocateNode when there is a need to allocate more virtual memory, and fix incorrect size calculation too. ([[Aleksey Bragin]])<br />
* Implement a function for validating the page heap block. ([[Aleksey Bragin]])<br />
* Implement RtlpPageHeapDestroy. Now we have two exported APIs ready: heap create and heap destroy. ([[Aleksey Bragin]])<br />
* Branch for the 0.3.13 release ([[Colin Finck]])<br />
<br />
=== RTL_HEAP ===<br />
* First commit of a heap manager rewrite. It introduces a totally new heap manager, with the following features: ([[Aleksey Bragin]])<br />
* Actually resembles real NT's heap manager; ([[Aleksey Bragin]])<br />
* Based on data structures similar to Windows 2003 and Vista+'s heap structures; ([[Aleksey Bragin]])<br />
* Supporting advanced heap flags (e.g. useful for debugging); ([[Aleksey Bragin]])<br />
* Substantially lower fragmentation rates (and thus speed and reliability) than the existing Wine's implementation. It's going to be further enhanced by adding a frontend allocator (for example, as lookaside lists, or as a Low Fragmentation Heap alike frontend in Vista+ systems); ([[Aleksey Bragin]])<br />
* Real support for user-defined flags and native support for user-defined values; ([[Aleksey Bragin]])<br />
* Native support for a custom commit routine, which is very important for trunk's win32 subsystem; ([[Aleksey Bragin]])<br />
* Reserving, committing, decommitting and freeing on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary; ([[Aleksey Bragin]])<br />
* Support for per process heaps, with a proper lock; ([[Aleksey Bragin]])<br />
* Reserved support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* The committed code is a result of a month of work, and is a heavy work-in-progress one. It already implements the bare minimum required to boot to 3rd stage and run FireFox 3, however many rare codepaths are not implemented yet and there is some maintenance work to do (e.g. move structures and defines to a standalone header file). A list of used references is stated in the header of a source file for now. ([[Aleksey Bragin]])<br />
* Implement missing parts of a virtual block allocations support. ([[Aleksey Bragin]])<br />
* Minor fixes to handling extra stuff in heap blocks. ([[Aleksey Bragin]])<br />
* Wine's heap regression tests now run through the end without crashing and show 277 failures. ([[Aleksey Bragin]])<br />
<br />
=== SPRINTF ===<br />
* Don't compile the new sprintf by default. Requested by Timo. ([[Amine Khaldi]])<br />
<br />
=== USB_USBEHCI ===<br />
* Reorganization code to put hardware related structures and routines in own source files. ([[Michael Martin]])<br />
* Modify ResetPort to correctly reset the port instead of the controller. ([[Michael Martin]])<br />
* Implement allocating chunks of memory from the Common Buffer for use with the rest of source code. ([[Michael Martin]])<br />
* Implement creating and deleting Queue Heads and Transfer Descriptors from common buffer. ([[Michael Martin]])<br />
* Implement linking/unlinking QueueHeads to create a linked list for Asynchronous Schedule traversal. ([[Michael Martin]])<br />
* Implement BuildSetupPacketFromURB for creating a setup packet from a URB. ([[Michael Martin]])<br />
* Implement SubmitControlTransfer. ([[Michael Martin]])<br />
* Remove all hardware related structs from usbehci.h as they are now in hardware.h. ([[Michael Martin]])<br />
* Add debugging routines for usb descriptors, queue heads and transfer descriptors. ([[Michael Martin]])<br />
* This will break building usbehci, but not a problem as it is not included in the default build. Will be fixed with later commit. ([[Michael Martin]])<br />
* Remove all hardware related routines from fdo.c as they are now in hardware.c ([[Michael Martin]])<br />
* Replace ExecuteControlRequest with new SubmitControlTransfer. ([[Michael Martin]])<br />
* For internal control requests (originating from ehci driver) use an event to signal request completion. ([[Michael Martin]])<br />
* When submitting non internal control request save the Irp in the software part of the QueueHead. ([[Michael Martin]])<br />
* For these requests check for errors and complete the Irp with the appropriate URB Status when the QueueHead is complete. ([[Michael Martin]])<br />
* Misc code cleanup and dead code removal. ([[Michael Martin]])<br />
* UsbEhci now works as before and should be ready for some forward progress. ([[Michael Martin]])<br />
* Fix bug in InitializeUsbDevice that caused endpoints to be duplicated in internal config structure. ([[Michael Martin]])<br />
* Fix implementation of UsbRemoveDevice. ([[Michael Martin]])<br />
* Implement SetDeviceHandleData and RestoreUsbDevice. ([[Michael Martin]])<br />
* SubmitControlTransfer: Not all control request need data, in which case dont create a MDL and a PID_CODE_IN_TOKEN TD Descriptor. ([[Michael Martin]])<br />
* Fix bug in ReleaseMemory that caused memory not to be marked as free. ([[Michael Martin]])<br />
* Fix incorrect memory header size that resulted in memory corruption. ([[Michael Martin]])<br />
* Implement URB_FUNCTION_SELECT_INTERFACE. ([[Michael Martin]])<br />
* Add missing IoMarkIrpPending before calling SubmitControlRequest. ([[Michael Martin]])<br />
* Now use BuildSetupPacketFromURB for creating the CtrlSetup data structure. ([[Michael Martin]])<br />
* When selecting configuration, make the ConfigurationHandle from the related UsbDevice instead of always the RootHub device. ([[Michael Martin]])<br />
* Fix typo that caused all pipes to be marked as interrupt type. ([[Michael Martin]])<br />
* Change CompletePendingURBRequest to only complete one SCE request Irp. ([[Michael Martin]])<br />
* EhciDefferedRoutine: Only free Mdl if one was created when the request was added to the queue. ([[Michael Martin]])<br />
* Dont assume that three transfer descriptors need to be freed, use a while moving to each linked and free instead. ([[Michael Martin]])<br />
* Yabba Dabba Doo added to increase size of message. :) ([[Michael Martin]])<br />
<br />
=== VBEMP ===<br />
* Fix rounding error when calculating display size (neoman; {{bug|5790}})<br />
* Loosely based on (neoman; {{bug|5790}})<br />
* Fixes gdi32_winetest:mapping (neoman; {{bug|5790}})<br />
<br />
=== VIDEOPRT_WIN32K ===<br />
* Synchronize and share PEVENT/ENG_EVENT/VIDEO_PORT_EVENT implementation, as these objects are actually the same (and VideoPrt Event* APIs can be used on GRE Event Objects). Use ENG_EVENT structure from ntddvdeo.h instead of re-creating our own. Drivers using these interfaces will no longer explode. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Implement registering event routine which gets called when a topology node (volume / mute node) changes ([[Johannes Anderwald]])<br />
* Implement fetching event changes ([[Johannes Anderwald]])<br />
* Unlock locked pages before freeing the mdl ([[Johannes Anderwald]])<br />
* Fixes assertion hit 'Assertion 'OldRefCount < 2500' failed at ARM³::MDLSUP line 1008' ([[Johannes Anderwald]])<br />
* Fixes playback / recording of longer audio files ([[Johannes Anderwald]])<br />
* Implement support functions which call the provided functions of mmixer library ([[Johannes Anderwald]])<br />
* Fix a bug in device interface request ioctl handler ([[Johannes Anderwald]])<br />
* Midi devices should now be visible, capabilities be retrieved and opened / close ([[Johannes Anderwald]])<br />
* Writing data is not yet supported ([[Johannes Anderwald]])<br />
* Free allocated mdls in the io completion routine. Also free the associated stream header. ([[Johannes Anderwald]])<br />
* Don't free associated stream header anymore ([[Johannes Anderwald]])<br />
* Tested with VBox 3.2.10 + VmWare Player 3.1.2 + WinXP ([[Johannes Anderwald]])<br />
* Update to new mmixer library interface ([[Johannes Anderwald]])<br />
<br />
=== WIN32KSYS ===<br />
* replace nci-generated stubs with a stub file using macros ([[Timo Kreuzer]])<br />
<br />
=== WIN32K|USER32 ===<br />
* Implement NtUserGetMenuIndex, . ([[James Tabor]]; {{bug|5528}})<br />
* Move to the new window structure. Window Object served us well. ([[James Tabor]])<br />
* Rewrite the Event and Hook procedures. ([[James Tabor]]; {{bug|5670}})<br />
* Add fix for KsStudio for Olaf Siejka and debug prints for WH_KEYBOARD_LL. ([[James Tabor]]; {{bug|5670}})<br />
* Fix for DosBOX. Added more data copies in user32 hook.c. ([[James Tabor]]; {{bug|5670}})<br />
* This hook commit fixes the ros regression testing startup, but consider this a hax fix until more research in Global hooks has completed. More pointed Global hook tests are needed. Misc changes, removed unused storage pointers and reordering. For DosBOX, the mouse low level is now working and the keyboard low level should not be so intermittent as before, now sending messages from system desktop not from thread desktop, ([[James Tabor]]; {{bug|5670}})<br />
* Cleanup and added debug prints. ([[James Tabor]])<br />
* Fixed SendNotifyMessage, thanks to Michael Martin callback changes. Fixed DispatchMessage when dealing with thread errors. Fixed all but one of the Get/PeekMessage wine tests. Fixed attaching threads to process information. Plus other fixes. ([[James Tabor]])<br />
* Implemented support for QS bits, ReplyMessage (not fully correct), and others. ([[James Tabor]])<br />
* Tested everything here, please post regressions so I can add more applications to the test list. This patch is synced with 49720 and 49772. After that there are graphic issues. ([[James Tabor]])<br />
* Credits goes to wine for helping with diagnosing issues in the ReactOS message system. ([[James Tabor]])<br />
* Remove the old send message API and use NtUserMessageCall. ([[James Tabor]])<br />
* Send messages do not pass the Ansi bit. This was evident during the hook changes. User32 knows the caller is Ansi and with a Unicode window user32 can make the apropate switch. Win32k on the other hand, assumes, based on the Unicode window the caller is Unicode. Hook tests enabled in send message, forces the call to win32k, and the Ansi product is Unicode data. Using NtUserMessageCall this bit can be passed forward to allow win32k to make the correct switch going to callback. ([[James Tabor]])<br />
* Finish 50030 (work by Giannis), Now PostMessage passes all the correct data based on Get/PeekMessage. Example: Post A, Get/Peek A, Translate A, Dispatch A, should be that simple. FYI: DDE memory handling should be in win32k not user32 and why,,,,, ~see next point~ ([[James Tabor]])<br />
* Patch up problems (at a minimum) going into the SendMessage/Timeout A2U U2A support in win32k and fixed SMTO callback if local. ([[James Tabor]])<br />
* Fix all the user32 wine win test_SetParent tests. ([[James Tabor]])<br />
* Fix mdi class window function Id, now msi message tests do not assert. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 6 failures dealing with rect size. Start A2U and U2A support. ([[James Tabor]])<br />
* Fix copy paste error, which means this code is not used, should have pop up during testing. ([[James Tabor]])<br />
* Add hack to mark desktop window as a desktop window and notes for creating a desktop with tips in win32k. Move user position code from window to winpos. ([[James Tabor]])<br />
<br />
=== WINE32K|USER32 ===<br />
* Implement client thread information for the beginning of QS flag support and signaling synchronization of messages. ([[James Tabor]])<br />
* Set and clear idle event when setting clearing masks. This fixed the idle foreground hook call from user mode. ([[James Tabor]])<br />
* Fixed wine ListBox and ReactOS ComboBox tests. Critical note: SendMessageA/W, when IsThreadHooked is used and any global hooks are affirmed, all messages are sent to Win32k and the result is, A to W and W to A mismatch via UMToKM. Fixing Global hook support exposed a critical bug in ReactOS message system. Enable the appropriate hooks will temporarily remedy this bug. ([[James Tabor]])<br />
* All patches are from a checked out revision from 49475. Upping ntuser.h, win32k and user32 to sync. ([[James Tabor]])<br />
<br />
=== YAROTOWS ===<br />
* Reintegrate the branch. Thanks to Jerome Gardou, Kamil Hornicek and everyone helping. Main features: ([[Timo Kreuzer]])<br />
** Implement LDEVOBJ api. Responsible for loading dlls (display drivers, font drivers, keyboard layout, etc), replacing code in different locations.<br />
** Implement PDEVOBJ api. A PDEVOBJ represents a physical device and is the core component for handling multiple display devices.<br />
** Rewrite device locking. The new method was neccessary to allow dynamic mode switching.<br />
** Implement support for enumerating display devices and settings.<br />
** Implement dynamic mode switching.<br />
** Implement a number of Eng mapping functions.<br />
** Rewrite Eng level surface handling for cleaner code and better compatability.<br />
** Rewrite parts of the DIB handling code.<br />
** Rewrite DC creation and deletion. Deletion and cleanup is now completely callback based. Now we don't leak the DC objects when terminating a process, like we did before.<br />
** Improve the XLATE and BRUSH code, removing several old hacks.<br />
** Improve icon code.<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.13&diff=29281
ChangeLog-0.3.13
2011-02-24T01:41:41Z
<p>CycleGeek: add to Applications, Translations</p>
<hr />
<div>This is the changelog for ReactOS™ [[0.3.13|version 0.3.13]] (released XXXXXXX), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.12|version 0.3.12]] (released 20 October 2010).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core developers ===<br />
* Giannis Adamopoulos<br />
* Johannes Anderwald<br />
* Aleksey Bragin<br />
* Dmitry Chapyshev<br />
* Benedikt Freisen<br />
* Jerome Gardou<br />
* Cameron Gutman<br />
* Kamil Hornicek<br />
* Amine Khaldi<br />
* Eric Kohl<br />
* Timo Kreuzer<br />
* Matthias Kupfer<br />
* Michael Martin<br />
* Ged Murphy<br />
* Sylvain Petreolle<br />
* ReactOS Portable Systems Group<br />
* Daniel Reimer<br />
* Gregor Schneider<br />
* Pierre Schweitzer<br />
* James Tabor<br />
* Christoph von Wittich<br />
* Art Yerkes<br />
<br />
=== Patch submitters ===<br />
* Damir Aliev<br />
* Oleg Baikalow<br />
* Carlo Bramini<br />
* Vincenzo Cotugno<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Adam Kachwalla<br />
* Radek Liška<br />
* Roel Messiant<br />
* Love Nystrom<br />
* Igor Paliychuk<br />
* Samuel Serapion<br />
* Víctor Martínez<br />
<br />
=== Localization ===<br />
* spb-ivan92 ({{Bug|5685}})<br />
* wojtekkozlo664 AT op DOT pl ({{Bug|5740}})<br />
* Mario Kacmar<br />
* Andres Traks<br />
<br />
=== Support staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.13 changes ==<br />
=== Applications ===<br />
* Calc: Initialize next field<br />
* Paint: Generalize changes related to mirroring rectangular selections to free form selections, solve problem regarding selection contents update<br />
* Ping: Localization support added<br />
* Regedit: "Load Hive..." and "Unload Hive..." menu items implemented, support added for import/export of v5 registry files, "go" button added to address bar<br />
* Taskmgr: Support added for DELETE key to processes and applications list<br />
* Winmine: Synced and forked from Wine 1.3.5 winemine.<br />
<br />
=== Control Panel Applets ===<br />
=== Installer ===<br />
=== Services ===<br />
== Tests ==<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* avifil32<br />
* browseui<br />
* calc<br />
* cmdutils/reg<br />
* console.cpl<br />
* devmgr<br />
* explorer-new<br />
* intl.cpl<br />
* mscutils/eventvwr<br />
* mscutils/servman<br />
* netid<br />
* regedit<br />
* shell32<br />
* sysdm.cpl<br />
* syssetup<br />
* taskmgr<br />
* timedate.cpl<br />
* usetup<br />
* winmine<br />
<br />
'''Czech'''<br />
* calc<br />
* explorer-new<br />
* input.cpl<br />
* rapps<br />
* sysdm.cpl<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* timedate.cpl<br />
* ping<br />
* shutdown<br />
<br />
'''German'''<br />
* ping<br />
<br />
'''Italian'''<br />
* ping<br />
<br />
'''Japanese'''<br />
* calc<br />
* newdev<br />
* sysstetup<br />
* usetup<br />
<br />
'''Polish'''<br />
* ping<br />
* rapps<br />
<br />
'''Russian'''<br />
* taskmgr<br />
<br />
'''Slovak'''<br />
* calc<br />
* cmd<br />
* format<br />
* usetup<br />
<br />
'''Ukranian'''<br />
* usetup<br />
<br />
== Wine syncs ==<br />
Libraries synced<br />
* atl<br />
* d3d8<br />
* d3d9<br />
* ddraw<br />
* fusion<br />
* gdiplus<br />
* hlink<br />
* iexplore<br />
* mprapi<br />
* msi<br />
* msiexec<br />
* reg<br />
* shdocvw<br />
* urlmon<br />
* wer.dll<br />
* widl<br />
* wined3d<br />
* winemine<br />
* winhlp32<br />
* winhttp<br />
* wininet<br />
* wordpad<br />
* write<br />
* wtsapi32<br />
* xcopy<br />
<br />
== Third party libraries ==<br />
* DejaVu Fonts Documentation updated to 2.31<br />
* RedHat Liberation Fonts updated to 1.06<br />
* Tahoma Fonts undated to Wine HEAD<br />
* bzip2 updated to 2.06<br />
<br />
== BASE ==<br />
=== APPLICATIONS ===<br />
==== CMDUTILS ====<br />
* Fix compilation with msvc by GetProcAddress'ing undocumented functions, TCHAR -> WCHAR in the process ([[Jérôme Gardou]])<br />
<br />
===== XCOPY =====<br />
* Spanish translation by JasonGenie at gmail dot com ([[Amine Khaldi]]; {{bug|5889}})<br />
* Add stubs for all page heap API functions. ([[Aleksey Bragin]])<br />
* Enable call to RtlpPageHeapDestroy() when necessary. ([[Aleksey Bragin]])<br />
* Reset Parameters==-1 hack after unsuccessful call to RtlpPageHeapCreate(), would be necessary when page heap is implemented.. ([[Aleksey Bragin]])<br />
<br />
==== FINDSTR ====<br />
* Port findstr (incomplete, as author of this patch states, it may satisfy RosBE, .c .h and .rc files) from FreeDOS project. Needed for RosBE-on-ReactOS support. ([[Aleksey Bragin]]; {{bug|5724}})<br />
<br />
==== NETWORK ====<br />
* Use memcpy with sizeof instead of strncpy with strlen to make sure the destination string will be zero terminated. ([[Timo Kreuzer]])<br />
* CID 1649 ([[Timo Kreuzer]])<br />
<br />
===== PING =====<br />
* Implement small helper MyLoadString, using FindResource, LoadResource, LockResource and replacing LoadString, so we don't need to link to user32 anymore. ([[Timo Kreuzer]])<br />
* Fix typos ;) ([[Johannes Anderwald]])<br />
* Fix MyLoadString. (menone7)<br />
<br />
==== REGEDIT ====<br />
* Fix a bug causing registry entries with names containing a backslash to be displayed incorrectly ([[Cameron Gutman]])<br />
* Adam Kachwalla <geekdundee@gmail.com> ([[Aleksey Bragin]]; {{bug|5711}})<br />
** Make address bar case-insensitive<br />
** Remove trailing slashes in address bar when at root keys (e.g. "HKEY_LOCAL_MACHINE\" or "HKEY_CURRENT_USER\")<br />
<br />
=== SERVICES ===<br />
* Remove the reference counter from the common handle type as a handle is never shared or duplicated. ([[Eric Kohl]])<br />
* Remove the access right from the service handle as it is not used. ([[Eric Kohl]])<br />
* Dereference service manager handles and service handles in two separate functions that SEH-protect the initial access to the handle and signature check. This will protect SCM from bogus handles. ([[Eric Kohl]])<br />
* Use new handle check functions in RCloseServiceHandle(). ([[Eric Kohl]])<br />
* RControlService: Check if a control request is acceptable for a user mode service before sending it to the service. ([[Eric Kohl]])<br />
* RControlService: Check the current state before sending a control request. ([[Eric Kohl]])<br />
* Merge ScmControlService() and ScmSendStartCommand() into ScmSendServiceCommand(). ([[Eric Kohl]])<br />
* Revert r49366. ([[Eric Kohl]])<br />
* Fix a typo (|| instead of |). Found by clang. ([[Timo Kreuzer]])<br />
<br />
==== EVENTLOG ====<br />
* Rename the EVENTSOURCE struct to LOGHANDLE because it is currently used like a handle object. The EVENTSOURCE struct will be added again in one of the next commits. ([[Eric Kohl]])<br />
<br />
==== UMPNPMGR ====<br />
* Start using XP- and Vista-compatible pipe names for the RPC endpoint. Kick out the ROS-specific \pipe\umpnpmgr one. ([[Roel Messiant]])<br />
* Use only the Vista pipe name for now, using the XP one makes device installation fail.. ([[Roel Messiant]])<br />
* Use the correct PNP interface UUID ([[Roel Messiant]])<br />
<br />
==== USETUP ====<br />
* add missing close for handle ([[Matthias Kupfer]])<br />
* one more fix (on request of Pierre S.) ([[Matthias Kupfer]])<br />
<br />
=== SETUP ===<br />
* 5540 5604 5614 5617 for more details. ([[Amine Khaldi]]; {{bug|5536}})<br />
* Fix a really mean bug: wcslen() returns the size in characters whereas MaximumLength has to be in bytes. ([[Pierre Schweitzer]])<br />
* Now, this sets MaximumLength to its appropriate size and prevents some memory issues (and buffers having odd size, which is weird for an unicode string...). ([[Pierre Schweitzer]])<br />
<br />
==== CMD ====<br />
<br />
=== SHELL ===<br />
* Carlo Bramix: MultiByteToWideChar() has just 6 and not 8 parameters, probably it's a forgetten copy/past from WideCharToMultiByte(). ([[Aleksey Bragin]]; {{bug|5678}})<br />
* Carlo Bramix: ConvertULargeInteger() should have its parameter 'Len' declared as UINT rather than 'INT'. This fixes a signed/unsigned mismatch warning. ([[Aleksey Bragin]]; {{bug|5678}})<br />
<br />
==== EXPLORER ====<br />
* Track the only Global Hook ReactOS has. ([[James Tabor]])<br />
* Revert last change. ([[James Tabor]])<br />
<br />
==== EXPLORER-NEW ====<br />
* Fix another "sizeof" usage mistake ([[Cameron Gutman]])<br />
* CID 1631 ([[Cameron Gutman]])<br />
<br />
=== SYSTEM ===<br />
<br />
==== SMSS ====<br />
* Remove the ROS_DOESNT_SUCK hack, and correctly started subsystem processes with the first MB reserved. ([[sir_richard]])<br />
<br />
==== WINLOGON ====<br />
* Add msg constants (by smiley) ([[Johannes Anderwald]])<br />
<br />
== BOOT ==<br />
<br />
=== ARMLLB ===<br />
* Make DbgPrint compatible so we can use debug.h. ([[sir_richard]])<br />
* Add support for ATAG_REVISION. ([[sir_richard]])<br />
* Fix support of ATAG_MEM: there can be multiple tags, one per DRAM bank. ([[sir_richard]])<br />
* Fix the default case not to "return": it should "Break" instead. ([[sir_richard]])<br />
* Only apply the RAMDisk hack on Beagle for now. ([[sir_richard]])<br />
* Add uImage header which uBoot expects on the images it can load nicely (using "go" will not give us ATAGs, "bootm" requires this header). It's a static header instead of requiring the mkImage tool, since we can disable data checksums in uBoot. We basically fake being a Linux kernel and the LLB handles the ATAGs. ([[sir_richard]])<br />
* Add boot stack for Zoom2. ([[sir_richard]])<br />
* Initialize hardware before parsing environment variables. This makes more sense, and also allows debug output from the environment scanning code. ([[sir_richard]])<br />
* Add the MACHINE_TYPE code for the ZOOM2, based on the standard machtype definitions maintained by the various boot loader communities. ([[sir_richard]])<br />
* Forgot to commit this earlier: define the ATAG_REVISION header. ([[sir_richard]])<br />
* Include FreeLoader's keycode mappings (which don't seem standard) in ARMLLB, so we can do correct keypad to keycode translation. ([[sir_richard]])<br />
* Include ReactOS's standard debug.h, which lets us un-redefine DbgPrint, and also gives us goodies like ASSERT and DPRINT1. ([[sir_richard]])<br />
* We made certain assumptions in the "generic" files that are actually board-specific. For example, Versatile does indeed return a strange ULONG as the RTC time (seconds since 1970, I think), but TWL4030 on the ZOOM2 is normal and returns BCD RTC values just like the PC CMOS. Therefore, most of the "Generic" time.c code should move to versatile later. For now, use an IFDEF. ([[sir_richard]])<br />
* Likewise, not all platforms have a PS/2 controller like the Versatile. ZOOM2 for example has a keypad, so the generic "input" file shouldn't assume keyboard-only. As such, most of the code there should also be made specific, but for now, use an ifdef. ([[sir_richard]])<br />
* Although the soothing BSOD blue color is nice for LLB debugging, we'd really prefer to have black so it looks more natural on the eyes when booting to FreeLoader. As such, make the default backcolor black, but keep the old blue color for early testing, if enabled with a define. ([[sir_richard]])<br />
* Split up support between OMAP3 Beagle and ZOOM2. ([[sir_richard]])<br />
* Implement ZOOM2 ARMLLB board support package. TWL4030 read/write implemented (through basic I2C on the HS interface), RTC and Keypad Matrix implemented (through TWL4030), NEC WVGA Panel Initialization (through basic SPI interface on the MBPSI), basic clock setup and GPIO access for DSS/DISPC, setup DSS/DISPC for output on the NEC panel. UART implemented through Quad-UART NS16550 compatible chip (using CPORTlib). ([[sir_richard]])<br />
* Requires having been booted through x-loader+uboot as a kernel image. Will work on directly booting from NAND later. ([[sir_richard]])<br />
* Delete deprecated folder ([[sir_richard]])<br />
* Add missing UART functionality for ZOOM2. Leverages existing CPORT library. ([[sir_richard]])<br />
<br />
=== FREELDR ===<br />
* Fix CDs checksum computation ([[Pierre Schweitzer]])<br />
* Convert most of the trap and blue screen code from asm to C, use KTRAP_FRAME and KSPECIAL_REGISTERS on the stack, instead of using a bunch of global variables. Convert multiply used asm code chunks into macros. Use intel syntax for remaining asm. ([[Timo Kreuzer]])<br />
* 135 lines of C + 178 lines of asm, instead of 942 lines of asm ([[Timo Kreuzer]])<br />
* On ARM, don't turn on maximum, hyper, ultra-slow debugging and analysis features for the heap. This, for example, reduces FreeLoader's size by 32KB+ and speeds up boot by entire seconds, as the entire heap isn't zeroed out on startup. ([[sir_richard]])<br />
* May I humbly suggest you do the same on x86?! ([[sir_richard]])<br />
* Add startup file for ARM builds as well, so that _start can be the first function in the file. ([[sir_richard]])<br />
* Set load address for ZOOM2, and differentiate Beagle vs ZOOM2. ([[sir_richard]])<br />
* Add linker script for ARM as well. We drop the relocation section as it shouldn't be needed. ([[sir_richard]])<br />
* Add more keycodes. ([[sir_richard]])<br />
* Put ARM boot code in .init section to guarantee it goes first in the file, as per the linker script. ([[sir_richard]])<br />
* Define FreeLoader module for ARM. Differences with x86 are mostly due to the fact "bootloader" was unfortunately made an x86-specific module type, so we have to use "kernel" to get around that, which thankfully has remained portable. ([[sir_richard]])<br />
* VaToPa/PaToVa are assuming all architectures have VA at PA | KSEG0_BASE. This is not the case. On ZOOM2, DDR RAM starts at 0x80000000 for example, so KSEG0 == VA == PA. Use an ifdef do handle this. ([[sir_richard]])<br />
* Headless/EMS support is an x86-specific feature (at least for now, until the code is made portable). ([[sir_richard]])<br />
* Use PaToVa to set the Hive and NLS data pointers, instead of assuming that KSEG0_BASE | Pa is the correct answer for all architectures. ([[sir_richard]])<br />
* Cleanup firmware table setup and add support for being booted from a ZOOM2 ARMLLB, and set the correct file system buffer address for that board. ([[sir_richard]])<br />
* For *every single heap allocation*, there was code to request an entire *heap statistic run*! This is ridiculous and slows heap allocations tremendously. Additionally, it also assumes bstats was linked in, which it might not be if the flag wasn't set in bheap.c. Only enable this code if a special MM_DBG define is set. ([[sir_richard]])<br />
* Done originally for ARM, but I think x86 will appreciate the benefit too (and x86 can now go ahead and disable all those ridiculous debug settings that are turned on by default in bheap.c). ([[sir_richard]])<br />
* Fix RAM layout assumptions in ARM code. ([[sir_richard]])<br />
* poor little printf causes boot break, nuff said. ([[Sylvain Petreolle]])<br />
* Conditionally enable heap-related debugging and validation checks by an MM_DBG define for all architectures. Inspired by 49744. ([[Aleksey Bragin]])<br />
* Delete a duplicate line. ([[Dmitry Gorbachev]])<br />
* compile headless support only for x86 ([[Timo Kreuzer]])<br />
* merge most spec file changes from cmake branch ([[Timo Kreuzer]])<br />
* add stub files to build ([[Timo Kreuzer]])<br />
* Add missing stubs.h ([[Timo Kreuzer]])<br />
<br />
==== FREELDR ====<br />
<br />
===== ARCH =====<br />
<br />
====== AMD64 ======<br />
* Add ksamd64.inc ([[Timo Kreuzer]])<br />
<br />
====== ARM ======<br />
* Our new target is the ZOOM2 OMAP3, instead of Beagle (but we'll keep testing both). ([[sir_richard]])<br />
* The text section is called ".text", not "text". This caused any ARM assembly to create a new section in the PE and waste 4KB. ([[sir_richard]])<br />
<br />
===== CACHE =====<br />
* The cache manager rewrite I started years ago has finally appeared in ([[Art Yerkes]])<br />
* ReactOS' trunk and although at this point it's not quite perfectly ([[Art Yerkes]])<br />
* integrated, it's enough to boot up the bootcd or livecd. To check out ([[Art Yerkes]])<br />
* the more mature original, check out arty-newcc-reactos, branch ([[Art Yerkes]])<br />
* arty-newcc on bitbucket.org . Amine Khaldi encouraged me quite a bit ([[Art Yerkes]])<br />
* to not give up on it, and was able to reach out and be an advocate ([[Art Yerkes]])<br />
* when i really wasn't able to. Others agree that the time has come to ([[Art Yerkes]])<br />
* begin removing the old cache manager. I expect the remaining problems ([[Art Yerkes]])<br />
* in the version going to trunk will be taken care of relatively ([[Art Yerkes]])<br />
* quickly. ([[Art Yerkes]])<br />
* The motivation for this effort lies in the particularly hairy ([[Art Yerkes]])<br />
* relationship between ReactOS' cache manager and data sections. This ([[Art Yerkes]])<br />
* code completely removes page sharing between cache manager and section ([[Art Yerkes]])<br />
* and reimagines cache manager as being a facility layered on the memory ([[Art Yerkes]])<br />
* manager, not really caring about individual pages, but simply managing ([[Art Yerkes]])<br />
* data section objects where caching might occur. ([[Art Yerkes]])<br />
* It took me about 2 years to do the first pass of this rewrite and most ([[Art Yerkes]])<br />
* of this year to fix some lingering issues, properly implement demand ([[Art Yerkes]])<br />
* paging in ReactOS (code which didn't come with this patch in a ([[Art Yerkes]])<br />
* recognizable form), and finish getting the PrivateCacheMap and ([[Art Yerkes]])<br />
* SharedCacheMap relationship correct. ([[Art Yerkes]])<br />
* Currently, the new ntoskrnl/cache directory contains an own ([[Art Yerkes]])<br />
* implementation of data file sections. After things have settled down, ([[Art Yerkes]])<br />
* we can begin to deprecate and remove the parts of ReactOS' section ([[Art Yerkes]])<br />
* implementation that depend on a close relationship with cache ([[Art Yerkes]])<br />
* manager. Eventually, I think that the extra code added to ([[Art Yerkes]])<br />
* ntoskrnl/cache/section will be removed and ReactOS' own sections will ([[Art Yerkes]])<br />
* replace the use of the special MM_CACHE_SECTION_SEGMENT in the cache ([[Art Yerkes]])<br />
* path. ([[Art Yerkes]])<br />
* Note also, that this makes all cache manager (and new section parts) ([[Art Yerkes]])<br />
* use wide file offsets. If my section code were to take over other ([[Art Yerkes]])<br />
* parts of the ReactOS memory manager, they would also benefit from ([[Art Yerkes]])<br />
* these improvements. ([[Art Yerkes]])<br />
* I invite anyone who wants to to peek at this code and fix whatever ([[Art Yerkes]])<br />
* bugs can be found. ([[Art Yerkes]])<br />
* KSUSER, KS, SYSAUDIO] ([[Johannes Anderwald]])<br />
* Make pin / node / allocator create requests compatible to ms by removing obsolete slash before object class ([[Johannes Anderwald]])<br />
* Return correct error code in ksuser's KsCreatePin ([[Johannes Anderwald]])<br />
* ReactOS KS is now able to create audio pins in Windows XP, though playback is not yet working ([[Johannes Anderwald]])<br />
* All changes except ksuser change has been verified to work with VBox 3.2.10 ([[Johannes Anderwald]])<br />
* KS user changes not tested yet as KSStudio not working in trunk ([[Johannes Anderwald]])<br />
<br />
===== DISK =====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Also added support for IOCTL_DISK_GET_DRIVE_GEOMETRY_EX. ([[Pierre Schweitzer]])<br />
* Hackplemented support for IOCTL_DISK_GET_PARTITION_INFO_EX. It will work fine for MBR partitions but will fake returns for GPT partitions. ([[Pierre Schweitzer]])<br />
* Implemented support for IOCTL_DISK_GET_LENGTH_INFO ([[Pierre Schweitzer]])<br />
<br />
===== RTL =====<br />
* Fixed a really stupid (and old) bug in RtlComputeCrc32(): ([[Pierre Schweitzer]])<br />
* First parameter is initial CRC32 checksum. And it's complete and not partial, thus it needs to be an ULONG and not an USHORT. ([[Pierre Schweitzer]])<br />
* This fixes CRC32 checksum computation with initial checksum (tested again Windows 2003 & Seven). ([[Pierre Schweitzer]])<br />
* Fix heap code to actually use the new lock instead of using RTL_CRITICAL_SECTION. ([[Aleksey Bragin]])<br />
* Fix a ROUND_UP and ROUND_DOWN macros: it is a *rule* to wrap every argument in braces in a macro, otherwise shit happens. A couple of days were lost fighting a strange bug in the new heap manager code where it was doing ROUND_UP(Heap + 1, PAGE_SIZE)... ([[Aleksey Bragin]])<br />
* Change RtlLockBootStatusData prototype according to http://cookp.com/%2F/thread/1111206/how%20can%20i%20detect%20last%20boot%20success ([[Eric Kohl]])<br />
* Carlo Bramini <carlo DOT bramix AT libero DOT it> ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix for render status bar after changing line wrap and flicker issue. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* for details. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix RtlSetUserFlagsHeap declaration and definition. ([[Aleksey Bragin]])<br />
* Fix a bug introduced Mon Dec 6 00:25:14 1999 UTC (10 years, 10 months ago) in revision 828. NtFreeVirtualMemory takes a pointer to the address to free, not the address instead. For the last 11 years, freeing the process parameter block resulted in freeing whatever the first value in the structure is, which is MaximumLength and initialized to 0x1000. ReactOS would then free whatever random address was in that area. In real Windows, it is illegal to free an allocation in the middle of the base address, and this call failed with the new VAD code. ReactOS either leaked the memory or freed random data, who knows. ([[sir_richard]])<br />
* Make the PPB live in the Heap instead of having its own virtual allocation, fixing the issue above. Stop rounding it to a PAGE_SIZE, and just use the space required. ([[sir_richard]])<br />
* Roel Messiant: Specify proper byte length of a unicode string. Fixes out of bounds access in actctx.c support code. No more half-cut active context stuff in debug logs. ([[Aleksey Bragin]])<br />
* Minor code changes to RTL (one would call them "optimisation"). Added some missing paged code. ([[Pierre Schweitzer]])<br />
* Plus added useful asserts (used to catch r50615 bug!) ([[Pierre Schweitzer]])<br />
* Merge changes to rtl from cmake branch. Mostly use portable interlocked functions ([[Timo Kreuzer]])<br />
* Move page heap related code to heappage.c. ([[Aleksey Bragin]])<br />
<br />
===== SRC =====<br />
<br />
====== DRIVERS ======<br />
<br />
==== MESA32 ====<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Add missing breaks. (Samuel)<br />
<br />
=== DIRECTX ===<br />
* Jerome Gardou: Almost all of the ddraw->refcount winetests pass. One remains, due to the fact that IdirectDrawSurface::SetPalette is unimplemented. IDirectDraw::Createpalette is implemented too, but needs testing. There are no parameter checks. ([[Aleksey Bragin]]; {{bug|4909}})<br />
* Comments from me: The patch is not build-tested, however I did my best to merge it to existing ddraw and I prefer the actual code to be in the repository rather than hanging in bugzilla for years (last comment to the patch is dated 29.10.2009). ([[Aleksey Bragin]]; {{bug|4909}})<br />
<br />
===== D3D =====<br />
* Preparations for update to widl 1.3.4. ([[Eric Kohl]])<br />
<br />
==== WINE ====<br />
* Add iscntrlW() definition ([[Cameron Gutman]])<br />
* Fix non-x86 versions of Wine's push/pop exception frame macro. ([[sir_richard]])<br />
<br />
===== WINED3D =====<br />
* Update wined3d, ddraw, d3d8 and d3d9 to Wine 1.3.4. ([[Kamil Hornicek]])<br />
* Our CRT causes duplicate definitions, when trying to use it as fallback for missing msvcrt imports. Work around this limitation by adding powf and sqrtf wrappers for amd64 builds ([[Timo Kreuzer]])<br />
<br />
=== NTDLL ===<br />
* Use LOCK instead of lock for SList assembly functions, this is a conditional such that on UP, "lock" instruction won't be generated. ([[sir_richard]])<br />
* Apply the special begin/fault/resume lablels to the user-mode SList functions. Access faults can happen there due to a bug in the Windows algorithm, and Mm will need to handle that. ([[sir_richard]])<br />
* Fix loading of GlobalFlags in Image File Execution Options. I really wonder who had that brilliant idea that bitwise flags would be stored as a string in the registry. ([[Aleksey Bragin]])<br />
* If there is a GlobalFlags value specified in the registr for that specific image, it means that value should overwrite NtGlobalFlags. Fix that too (previously it was ORing which made no sense). ([[Aleksey Bragin]])<br />
* Respectively fix incorrect data type for GlobalFlags in ReactOS registry. ([[Aleksey Bragin]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* LoadImageFileExecutionOptions() improvements: ([[Aleksey Bragin]])<br />
* Apply certain heap flags if the process is being debugged (only if NtGlobalFlags is not overridden). ([[Aleksey Bragin]])<br />
* Implement enabling page heap and reading image-specific configuration values. ([[Aleksey Bragin]])<br />
* Add page heap configuration values to the Heap Manager. ([[Aleksey Bragin]])<br />
* Fix a typo which always set page heap enabled to true. ([[Aleksey Bragin]])<br />
* Load image execution options before creating process heap (so that GlobalFlag overrides can be taken into account). ([[Aleksey Bragin]])<br />
* Make LdrQueryImageFileExecutionOptions avoid heap usage when possible (and when it's not possible, fail with out of memory status). ([[Aleksey Bragin]])<br />
* Fixes a dramatic count of ~100 failures in "kernel32_winetest heap". ([[Aleksey Bragin]])<br />
* Don't access unitialized memory. Caught thanks to a new heap manager, and this fixes all weird actctx exceptions in kernel32_winetest heap. ([[Aleksey Bragin]])<br />
* Fix LdrVerifyImageMatchesChecksum() prototype. ([[Aleksey Bragin]])<br />
* Move RtlPcToFileHeader to rtl/libsupp.c ([[Timo Kreuzer]])<br />
* Raise harderror and terminate process when the image is of a foreign architecture. ([[Timo Kreuzer]])<br />
* Fix harderror status on machine type mismatch and pass file name. ([[Timo Kreuzer]])<br />
<br />
==== ADVAPI32 ====<br />
<br />
=== WIN32 ===<br />
* Roel Messiant: Properly handle STATUS_BUFFER_TOO_SMALL in RegEnumValueW implementation. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Katayama Hirofumi: Use DataLength field in RegEnumValueW instead of DataOffset. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Roel Messiant: Test behaviour in Vista and apply same fix to RegEnumValueA. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Implement LsaCreateAccount(), LsaOpenAccount() and LsaSetInformationPolicy(). ([[Eric Kohl]])<br />
* Implement LsaAddPrivilegesToAccount(), LsaCreateTrustedDomain(), LsaDeleteTrustedDomain() and LsaOpenTrustedDomainByName(). ([[Eric Kohl]])<br />
* Move the Encrypted File System (EFS) functions into their own file. ([[Eric Kohl]])<br />
* Roel Messiant: Fix short-circuit evaluation. ([[Aleksey Bragin]]; {{bug|5677}})<br />
* Implement LsaAddAccountRights(), LsaQueryTrustedDomainInfoByName() and LsaRemoveAccountRights(). ([[Eric Kohl]])<br />
* ConvertStringSidToSidW: Stop writing 1 subauthority too much. Fixes a DWORD sized buffer overflow. Should fix bug #5764. ([[Roel Messiant]])<br />
* ConvertStringSidToSidW: Don't leak an allocated SID in case of failure. ([[Roel Messiant]])<br />
* Move file encryption functions from crypt/crypt.c to misc/efs.c. ([[Eric Kohl]])<br />
<br />
==== ATL ====<br />
* Ettl Martin: Make CComCriticalSection destructor virtual. ([[Aleksey Bragin]]; {{bug|4975}})<br />
<br />
==== AUTHZ ====<br />
* Fix AuthzReportSecurityEvent, AuthzInitializeObjectAccessAuditEvent and AuthzInitializeObjectAccessAuditEvent2 prototypes. ([[Amine Khaldi]])<br />
* Missed these. ([[Amine Khaldi]])<br />
* Another dll addition to cmake, another rc file fix. ([[Daniel Reimer]])<br />
<br />
==== AVIFIL32 ====<br />
* Split utf8 resources into theit own file (MSVC compatibility) ([[Timo Kreuzer]])<br />
<br />
==== CFGMGR32 ====<br />
* Add missing functions. ([[Eric Kohl]])<br />
* Add forwarders to functions that are exported by setupapi.dll. ([[Eric Kohl]])<br />
* Mark deprecated functions. ([[Eric Kohl]])<br />
<br />
==== COMCTL32 ====<br />
* Fix bitmap resources. They were not very valid. Windows didn't even load them. Probably created with some linux tool *cough* ([[Timo Kreuzer]])<br />
* Fixes part of the broken icons. Not the pink ones though. ([[Timo Kreuzer]])<br />
* Revert 45676 ([[Johannes Anderwald]])<br />
* It appears that the definitions for IID_IUnknown differ for kernel mode COM and user mode COM ([[Johannes Anderwald]])<br />
<br />
==== DEVMGR ====<br />
* DisplayDevicePropertyText: Use full DWORD value, not just one byte of it (CID 1803). ([[Roel Messiant]])<br />
<br />
==== GDI32 ====<br />
* Don't make the wrong assumption that POINT and POINTL are identical. ([[Timo Kreuzer]])<br />
* remove useless memory reallocation : the buffer size must be dword aligned, we have no way to guarantee the buffer location will be. ([[Jérôme Gardou]])<br />
* pass BITMAPINFO pointer size to NtGdiGetDIBitsInternal ([[Jérôme Gardou]])<br />
* Implement GdiGetDcAttr. Just for convenience / cleaner code. ([[Timo Kreuzer]])<br />
* Move EFLOAT handling in seperate file, its x86 specific ([[Timo Kreuzer]])<br />
* Implement CombineTransform fully in usermode instead of forwarding to NtGdiCombineTransform ([[Timo Kreuzer]])<br />
* Implement MatrixToXForm ([[Timo Kreuzer]])<br />
* Implement GdiTransformPoints ([[Timo Kreuzer]])<br />
* GDI32] ([[Timo Kreuzer]])<br />
* Check paramters in CombineTransform ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf, 2nd try :) ([[Timo Kreuzer]])<br />
<br />
==== IPHLPAPI ====<br />
* Rewrite name server enumeration routines ([[Johannes Anderwald]])<br />
* Check if static dns entries are present before checking for dynamic dns entries ([[Johannes Anderwald]])<br />
* Fixes static dns entries ([[Johannes Anderwald]])<br />
* Remove conditional redefine of DPRINT. Wine debug channels at this point, and we have NDEBUG. ([[Roel Messiant]])<br />
* Use TRACE instead of DbgPrint. Gets rid of the "Status 2" spam when no static nameserver is in the registry. ([[Roel Messiant]])<br />
<br />
==== KERNEL32 ====<br />
* Winnls.h can be included now. ([[Kamil Hornicek]])<br />
* Igor Paliychuk: Fix properly showing genitive names from NLS data by applying a missed Wine sync. ([[Aleksey Bragin]]; {{bug|5556}})<br />
* NtCreateSection should not be called with merely SEC_FILE: this says nothing about what kind of operation should be done (a commit, a reserve, etc?). Use SEC_COMMIT instead to specify correct operation. This works in ReactOS as of now, but would've failed after the NtSection* API rewrite. ([[sir_richard]])<br />
* CreateFileMappingW should also accept/allow SEC_LARGE_PAGES, even if we don't suppport it yet. ([[sir_richard]])<br />
* Revert incorrect changes from 34404 and 40910: RtlSetUserFlagsHeap() doesn't set usual heap flags, it sets special user-settable heap entry flags. With the new heap manager such usage corrupts heap integrity (not to say prototype of this function is incorrect). ([[Aleksey Bragin]])<br />
* RtlReAllocateHeap() is supposed to copy user values and flags so there is no need to set them afterwise again. ([[Aleksey Bragin]])<br />
* Print delphi exception with the Exception code 0xeedfade, we were previously only checking for 0xeedface, maybe an older value. ([[Timo Kreuzer]])<br />
* Remove the old version of WaitNamedPipeW. ([[Eric Kohl]])<br />
* This patch fixes the broken wait pipe code. It was written and tested on r49458 because later revisions do not work for me. ([[Eric Kohl]])<br />
* Added real implementation of SetLastError() (instead of forwarding to NTDLL) ([[Pierre Schweitzer]])<br />
* Implemented BaseSetLastNTError() ([[Pierre Schweitzer]])<br />
* Renamed Basep8BitStringToCachedUnicodeString() to Basep8BitStringToStaticUnicodeString() and sightly changed its implementation ([[Pierre Schweitzer]])<br />
* Fixed implementation of LoadLibraryExA() & DisableThreadLibraryCalls() using those changes ([[Pierre Schweitzer]])<br />
* This is matching w2k3 implementation. This is of course a WIP. ([[Pierre Schweitzer]])<br />
* Revert r49761 on Pierre's request ([[Timo Kreuzer]])<br />
* Fix heap corruptions in MoveFileWithProgress ([[Johannes Anderwald]])<br />
* Fixes kernel32_winetest change crash ([[Johannes Anderwald]])<br />
* Introduced in rev 18073 (25.Sept 2005) ([[Johannes Anderwald]])<br />
* ReadDirectoryChangesW: Treat the OVERLAPPED structure as an IO_STATUS_BLOCK, not one of its fields. ([[Roel Messiant]])<br />
<br />
==== LSASRV ====<br />
* Add ServiceInit() stub and call it from lsass. ([[Eric Kohl]])<br />
* Change the calling convention of all LSA-RPC function to stdcall. ([[Eric Kohl]])<br />
* Export some of the LSA-RPC functions. ([[Eric Kohl]])<br />
<br />
==== MSI ====<br />
* Fix freed memory access and fix freeing of invalid pointer. (from http://www.winehq.org/pipermail/wine-patches/2010-October/094849.html ) ([[Aleksey Bragin]]; {{bug|3755}})<br />
<br />
==== MSVCRT ====<br />
* Don't export _matherr ([[Timo Kreuzer]])<br />
* Apply a hack to msvcrt spec file to avoid duplicate definition of atexit. Mingw-w64 has an identical hack. ([[Timo Kreuzer]])<br />
* No reason for wcsxfrm to be a stub when code is here. ([[Sylvain Petreolle]])<br />
<br />
==== NETCFGX ====<br />
* GetPerAdapterInfo requires IP_PER_ADAPTER_INFO struct ([[Johannes Anderwald]])<br />
* Fix reading static dns entries ([[Johannes Anderwald]])<br />
* Delete static name server key, when changing dns servers to automatic (dhcp) ([[Johannes Anderwald]])<br />
* Don't delete DhcpNameServer key yet, as more interaction is needed with dhcp service when changing from static dns to dynamic dhcp ([[Johannes Anderwald]])<br />
* Should finally fix static dns when dhcp is active ([[Johannes Anderwald]])<br />
* Fix case where there is only one static dns server set ([[Johannes Anderwald]])<br />
<br />
==== OLEACC ====<br />
* Use an actual entrypoint. Needed to record the instance handle, used by various function that access resources of the module. Should fix oleacc:main winetest. ([[Roel Messiant]])<br />
<br />
==== RPCRT4 ====<br />
* Add a missing format type to unmarshall_discriminant(). ([[Eric Kohl]])<br />
<br />
==== SETUPAPI ====<br />
* Implement CM_Get_Device_ID_List_ExW(). ([[Eric Kohl]])<br />
* SetupDiClassNameFromGuidExW: Rewrite to prevent a buffer overflow and pass additional winetests. Should fix bug #5474. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExA: Return the required buffer size in failure cases. ([[Roel Messiant]])<br />
* Bind to the PNP service using the Vista-compatible pipe. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExW: Simplify interaction with registry. ([[Roel Messiant]])<br />
* SetupDiCreateDeviceInfoW: Check for correct error value. ([[Roel Messiant]])<br />
* SetupDiGetClassDescriptionExW: Rewrite to return the correct required size and prevent WCHAR sized buffer overflow. ([[Roel Messiant]])<br />
* SetupDiGetClassDevsExW: Return INVALID_HANDLE_VALUE instead of NULL in failure case. ([[Roel Messiant]])<br />
* Implement CMP_WaitServicesAvailable(). ([[Eric Kohl]])<br />
* CM_Get_First_Log_Conf_Ex(): Create a LOG_CONF_INFO struct only if plcLogConf is not NULL. ([[Eric Kohl]])<br />
* Fix a warning. ([[Eric Kohl]])<br />
* Implement CM_Is_Version_Available and CM_Is_Version_Available_Ex. ([[Eric Kohl]])<br />
* Add resource descriptor function stubs. ([[Eric Kohl]])<br />
<br />
==== SHELL32 ====<br />
* Enable code as we support now IOCTL_DISK_GET_LENGTH_INFO ([[Johannes Anderwald]])<br />
* IOCTL_DISK_GET_LENGTH_INFO implemented in 49369 ([[Johannes Anderwald]])<br />
* Implement copy / paste for files when tree view is present ([[Johannes Anderwald]])<br />
* Don't add shortcuts / executables to recent file list ([[Johannes Anderwald]])<br />
* Add NULL checks in IShellView and IDropTarget implementations. Should fix bug #5780. ([[Roel Messiant]])<br />
<br />
==== SHLWAPI ====<br />
* Explicitly add msvcrt before ntdll to use it's *sprintf functions. Fixes bug 5557 ([[Timo Kreuzer]])<br />
<br />
==== SYSSETUP ====<br />
* SC Manager needs SC_MANAGER_ENUMERATE_SERVICE access right to be able to open a service ([[Jérôme Gardou]])<br />
* Add debug prints to help tracking down the "EnableUserModePnpManager()" issue ([[Jérôme Gardou]])<br />
<br />
==== USER32 ====<br />
* Remove the last reactos-only export from user32 (PrivateCsrssManualGuiCheck) ([[Giannis Adamopoulos]])<br />
* One more leftover to add. Now we test for both Local and Global hooks in user32. This will force any message sent to win32k if there are any Global hookers so we loose in performance. We need to rethink our usage of these Global hookers in our code. ([[James Tabor]])<br />
* Fix an over site and copy the return data back to the kernel. ([[James Tabor]])<br />
* Sync up with wine 1.2 rc6 menu so it will pass the tests from rev 47939. ([[James Tabor]])<br />
* Fixed export for PrintWindow and 5609. ([[James Tabor]]; {{bug|5466}})<br />
* Remove a bunch of uneeded code in GetMessage and PeekMessage that copyied the lparam in a new buffer and did unicode to ansi convertions. It is not needed because they don't receive messages with pointers any more ([[Giannis Adamopoulos]])<br />
* Fix all the user32 wine win test_parent_owner tests. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 30 failures dealing with rect size, Class and Title names. ([[James Tabor]])<br />
* Controls: Set fnids for the user client controls. ([[James Tabor]])<br />
* Start creeping in more Left to Right support, readying up for the next wine User32 controls port and test sync. Code is based on wine, credit them for any breakages. 8^P Our positions are off by 103 x 122 in some test cases, anyone having an idea please chime in. ([[James Tabor]])<br />
* Happy New Year! ([[Aleksey Bragin]])<br />
* Dear ReactOS team, you're the best. ([[Aleksey Bragin]])<br />
* Use new wsprintf library, remove old code (536 lines) ([[Timo Kreuzer]])<br />
* Fixes output of %I64, for example dxdiag ([[Timo Kreuzer]])<br />
* Implement sending EVENT_SYSTEM_DIALOGSTART event. It will be used by rosautotest ([[Giannis Adamopoulos]])<br />
* Fix bug in CreateIconIndirect ([[Timo Kreuzer]])<br />
* implement get_icon_size ([[Timo Kreuzer]])<br />
* use unmodified wine code for STATIC_PaintIconfn ([[Timo Kreuzer]])<br />
* Fix CreateIcon and CreateIconIndirect. Fixes user32_winetest:cursoricon. (Yes we execute less tests, but that is correct! wine probably only passes these tests by chance) ([[Timo Kreuzer]])<br />
<br />
==== WINHTTP ====<br />
<br />
==== WININET ====<br />
* Add a ROS-specific change that was missed during the last winesync to fix winsock error handling ([[Cameron Gutman]])<br />
* Remove the CP_UNIXCP definition ([[Cameron Gutman]])<br />
* Use WSASetLastError instead of errno in inet_ntop.c ([[Cameron Gutman]])<br />
* Thanks to IRC:igorko for pointing out the bug ([[Cameron Gutman]])<br />
<br />
==== WINMM ====<br />
* MCI_Close: Use UINT instead of UINT16 for the device id (CID 1804). ([[Roel Messiant]])<br />
<br />
==== NMIDEBUG ====<br />
<br />
== DRIVERS ==<br />
<br />
=== BASE ===<br />
* Fix and cleanup some code, and enable NMI support on the boot/install CD as well. ([[sir_richard]])<br />
<br />
==== ACPI ====<br />
<br />
=== BUS ===<br />
* Fix ACPI warnings (Love)<br />
* Based on a (Love)<br />
<br />
==== FASTFAT ====<br />
<br />
=== FILESYSTEMS ===<br />
* Fix for a buffer overflow and then a buffer overrun (if ever it fixes something) ([[Pierre Schweitzer]])<br />
* The way filenames are handled for FAT entries should be REALLY simplified. This would prevent such errors. ([[Pierre Schweitzer]])<br />
* Thus, there are more magic values in fastfat driver than everywhere else in ReactOS which makes proper fixing hard (impossible?). ([[Pierre Schweitzer]])<br />
* Finally, the code for that fix is crappy, but I don't care, it fits the rest of the fastfat driver code. ([[Pierre Schweitzer]])<br />
* pissed off* ([[Pierre Schweitzer]])<br />
* Fixes CID #2502 ([[Pierre Schweitzer]])<br />
* MagicValue--; ([[Pierre Schweitzer]])<br />
* ThanksTo(James, Amine); ([[Pierre Schweitzer]])<br />
* EOF */ ([[Pierre Schweitzer]])<br />
* Remove unused vars ~ ([[Pierre Schweitzer]])<br />
<br />
==== FASTFAT_NEW ====<br />
* Substantially improve FatiCreate routine, to handle previously unhandled cases, fix wrong code structure in some places, add a stub for further implementation of a new file creation branch. ([[Aleksey Bragin]])<br />
* Hackskip setting delay-on-close for a file for now (with a debug print reminder!) ([[Aleksey Bragin]])<br />
* Some fixes to the previous commit. ([[Aleksey Bragin]])<br />
* Don't use same name for a local boolean var and global enum. Spotted by Pierre. ([[Aleksey Bragin]])<br />
<br />
==== NPFS ====<br />
* Rename DEVICE_EXTENSION to NPFS_VCB. ([[Eric Kohl]])<br />
* Add a type variable to distinguish FCBs and CCBs for device, directory or pipe. ([[Eric Kohl]])<br />
* Attach an FCB to the VCB that represents the root directory of the file system and implement an open routine for the root directory. ([[Eric Kohl]])<br />
* Make NpfsWaitPipe work when it is called for the root directory. ([[Eric Kohl]])<br />
* Add an FCB that represents the file system (volume/device) and support absolute and relative open, cleanup and close. ([[Eric Kohl]])<br />
* Read and write IRPs must fail if the caller is not a pipe but a directory or a device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a directory or device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a pipe by the client. ([[Eric Kohl]])<br />
* Enable the driver to open a directory using a relative path name. ([[Eric Kohl]])<br />
* Add NpfsDirectoryControl routine in order to enumerate pipes. ([[Eric Kohl]])<br />
* Use NpfsGetFcb and NpfsGetCcb to retrieve the FCB or CCB and use SEH to protect these routines. ([[Eric Kohl]])<br />
* Add support for FileFullDirectoryInformation and FileBothDirectoryInformation. ([[Eric Kohl]])<br />
* Fix an off-by-one bug in the buffer size calculation. ([[Eric Kohl]])<br />
* Zero-initialize the return buffer. ([[Eric Kohl]])<br />
* Initialize only the required parts of the return buffer. This will enable the driver to return information about multiple pipes in a single request. ([[Eric Kohl]])<br />
* Check if the whole pipe name fits into the return buffer. Return STATUS_BUFFER_OVERFLOW if it does not fit and copy only a part of the file name in this case. ([[Eric Kohl]])<br />
* Return multiple file entries in a single request. ([[Eric Kohl]])<br />
<br />
==== I8042PRT ====<br />
<br />
=== INPUT ===<br />
* Fix potential buffer overflow ([[Johannes Anderwald]])<br />
* Calculate packet type according to PS/2++ spec (CID 1810). ([[Roel Messiant]])<br />
* Fix technical detail in comment to match spec. ([[Roel Messiant]])<br />
<br />
==== KS ====<br />
<br />
=== KSFILTER ===<br />
* Simplify KsTopologyPropertyHandler by using KspReadMediaCategory helper ([[Johannes Anderwald]])<br />
* Return correct status code in case of an overflow ([[Johannes Anderwald]])<br />
* Fix PciFindParentPciFdoExtension bug found by sir_richard "Early break would leave the lock held" ([[evb]])<br />
* Fix PciGetHackFlags for setup found by sir_richard "Setup currently doesn't have a correct registry" ([[evb]])<br />
* Fix DriverEntry for setup like PciGetHackFlags ([[evb]])<br />
* Fix DriverEntry PciOpenKey check found by sir_richard "PciOpenKey returns a BOOLEAN, not an NTSTATUS" ([[evb]])<br />
* Stop call PciGetAcpiTable found by sir_richard "PciGetAcpiTable is really broken, can lead to infinite loops, and also corrupts memory. We need to fix stefan's bugs" ([[evb]])<br />
* Implement not root FDO code in PciScanBus and support PCI_HACK_ONE_CHILD ([[evb]])<br />
* Implement multiple FDO exist code in PciAddDevice so PCI Bridge support now ([[evb]])<br />
* Implement PciAreBusNumbersConfigured for PCI Bridge support ([[evb]])<br />
* Hack FDO Start Device by sir_richard "The root FDO does send boot resources if PCIX is installed properly, this code will be needed" ([[evb]])<br />
* Do PCI_BUS_DRIVER_INTERNAL bugcheck by sir_richard "I have hacked KeBugCheckEx to ignore this for now, until PnP is fixed" ([[evb]])<br />
* Implement not root FDO code in PciInitializeArbiters ([[evb]])<br />
* Implement PciCacheLegacyDeviceRouting, PciFindPdoByLocation used by PciAssignSlotResources ([[evb]])<br />
* Make PciTranslateBusAddress do the stub work ([[evb]])<br />
* PciAssignSlotResources disabled because ReactOS not support IoAssignResources ([[evb]])<br />
* Implement PPBridge_ChangeResourceSettings ([[evb]])<br />
* PCIX driver nearly working now. ([[evb]])<br />
* Fix KSPROPERTY_PIN_CATEGORY handler when no category is provided ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_PIN_NAME handler when there is no name provided. Use fallback pin category. If there is no category provided, fail with correct error code ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_TOPOLOGY_NAME handler by checking if there is a node name provided. If not use node type as fallback. ([[Johannes Anderwald]])<br />
* Return correct error code when property request id is out of bounds ([[Johannes Anderwald]])<br />
* Fix property set support handler for topology nodes ([[Johannes Anderwald]])<br />
* Check if the driver supports a basic support handler. In that case return the basic support handler ([[Johannes Anderwald]])<br />
* Replace all ms portcls hacks by one. ([[Johannes Anderwald]])<br />
* MS Portcls is now working in ReactOS (which is nice for testing audio related bugs) ([[Johannes Anderwald]])<br />
* Fix several bugs in KsProbeStreamIrp ([[Johannes Anderwald]])<br />
* If requestor is KernelMode - just save a pointer in Irp->AssociatedIrp.SystemBuffer (currently not used) ([[Johannes Anderwald]])<br />
* If requestor is UserMode mark irp as buffered. Also set Flag IRP_INPUT_OPERATION when the ioctl is IOCTL_KS_READ_STREAM. This is important to propagate modifications to KSSTREAM_HEADERS (in particular DataUsed member) ([[Johannes Anderwald]])<br />
* ReactOS KS can now be used in WinXP in combination with KSStudio. In order to make it fully work, ks needs to implement software bus functions ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Perform irp completion in dedicated function ([[Johannes Anderwald]])<br />
* Move Software Bus function into own file ([[Johannes Anderwald]])<br />
* Remove debugging code which caused crashes ([[Johannes Anderwald]])<br />
* Partly implement IKsProcessingObject interface for filter ([[Johannes Anderwald]])<br />
* Fix check in FindMatchingCreateItem function ([[Johannes Anderwald]])<br />
* Implement software bus enumerator functions ([[Johannes Anderwald]])<br />
* Less spam, more information ([[Johannes Anderwald]])<br />
* Robert Horvath: Always limit destLen to MAX_PATH (modified to an if condition by me). ([[Aleksey Bragin]]; {{bug|5861}})<br />
* Robert Horvath: Modify GetFullPathName to follow Windows behaviour more closely. Reduces kernel32:path winetests by 4, and fixes all GetFullPathName tests. ([[Aleksey Bragin]]; {{bug|5865}})<br />
* Oleg Baikalow: TDI exported function prototypes are documented in WDK 7, so use them in our driver instead of old, probably NT4-aged stubs full of unknown variables. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't use psdk's tdi.h but use a real tdikrnl.h (adding a _TDI_ global define so it's recognized as a tdi driver itself). ([[Aleksey Bragin]])<br />
<br />
==== SWENUM ====<br />
* Implement SwDispatchPower, SwDispatchPower ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
<br />
=== MULTIMEDIA ===<br />
<br />
==== AUDIO ====<br />
* Add i/o completion routine, which delivers the number of bytes written / read ([[Johannes Anderwald]])<br />
* Close event handle, after the overlapped request has been handled. ([[Johannes Anderwald]])<br />
* Audio stack no longer leaks ~ 50 event handles per second ([[Johannes Anderwald]])<br />
<br />
===== SNDBLST.OLD =====<br />
<br />
==== NDIS ====<br />
<br />
=== NETWORK ===<br />
* Disable timer queuing code (hackfix for various network driver failures) ([[Cameron Gutman]])<br />
* Also needs to be merged into 0.3.12 ([[Cameron Gutman]])<br />
* Add a missing spin lock release in a failure case ([[Cameron Gutman]])<br />
* Fix incomplete copying of NDIS 5.1 miniport characteristics ([[Cameron Gutman]])<br />
* Fix sizeof typo ([[Cameron Gutman]])<br />
* CID 10400 ([[Cameron Gutman]])<br />
<br />
==== TDI ====<br />
* Oleg Baikalow: Implement basic event and delayed event support functions for CTE. Structure names are made up, but their contents should be compatible with what Windows 2003 tdi.sys uses. Formatting and coding style fixes by the committer. ([[Aleksey Bragin]])<br />
* Move CTE routines into corresponding events.c and timer.c source code files before further applying Oleg's patches. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Finish CTE timers. CTE implementation is complete now. ([[Aleksey Bragin]])<br />
* Define M_PI_4 too. ([[Aleksey Bragin]])<br />
<br />
===== CDROM =====<br />
<br />
=== STORAGE ===<br />
<br />
==== CLASS ====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Add Windows Server 2003 DDK Cdrom Sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* They both build and run fine, but PCIIDE(x) must be completed/enabled, and atapi must be rewritten to be WDM-compliant. ([[sir_richard]])<br />
* The previous commit message had a typo, these are the Windows XP DDK Samples, not the Server 2003 DDK samples !!! ([[sir_richard]])<br />
<br />
===== CLASS2 =====<br />
* Switch use from DISK_GEOMETRY to DISK_GEOMETRY_EX. It's needed to handle some Windows 2003's kernel routines. ([[Pierre Schweitzer]])<br />
<br />
==== CLASSPNP ====<br />
* Add Windows Server 2003 DDK ClassPNP sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* Convert to spec ([[Timo Kreuzer]])<br />
* basetsd.h] ([[Timo Kreuzer]])<br />
* add POINTER_SIGNED, POINTER_UNSIGNED, SPOINTER_32, UPOINTER_32 ([[Timo Kreuzer]])<br />
* Fix a typo in the spec file ([[Timo Kreuzer]])<br />
* remove debug prints ([[Johannes Anderwald]])<br />
* dedicated to christoph ([[Johannes Anderwald]])<br />
* Use correct type in sizeof expression (CID 1646 and 10401). ([[Roel Messiant]])<br />
* Simplify signature define (CID 3653 and 3654). ([[Roel Messiant]])<br />
* Remove funky 0xFF characters. ([[Roel Messiant]])<br />
<br />
==== IDE ====<br />
<br />
===== UNIATA =====<br />
* Update uniata to 0.40a1. Prepared by Samuel Serapion, edited by me. ([[Aleksey Bragin]]; {{bug|5762}})<br />
* RTL} ([[Timo Kreuzer]])<br />
* Replace RtlMoveMemory x86 asm code with the code from CRT's memmove, which is better. Now we can close bug #1941 ([[Timo Kreuzer]])<br />
* Marco Radossevich <fwdprojects=at=email=dot=it>, a.k.a. forart: ([[Dmitry Gorbachev]])<br />
* Just two important examples that involved my contributions: UniATA & FullFAT." ([[Dmitry Gorbachev]])<br />
* No code changes. ([[Dmitry Gorbachev]])<br />
* See thread <http://www.reactos.org/forum/viewtopic.php?f=14&t=8809> for more details. ([[Dmitry Gorbachev]])<br />
<br />
==== SCSIPORT ====<br />
* Remove some code duplication and fix a bug of copying the same interrupt information twice for a device with 2 interrupts (instead of the info for interrupt 1 then the info for interrupt 2) effectively making initialization fail because the resource allocation code will detect a conflict with itself ([[Cameron Gutman]])<br />
* Add apitests to reactos.dff ([[Timo Kreuzer]])<br />
* Implement support for 2 interrupts ([[Cameron Gutman]])<br />
* Halfplement support for 2 DMA channels ([[Cameron Gutman]])<br />
* Set/Read the CM_RESOURCE_DMA flags ([[Cameron Gutman]])<br />
* Remove a duplicate spin lock initialization ([[Cameron Gutman]])<br />
* Partially tested with 2 interrupts in use but UniATA seems to be broken because it registers both interrupts for each channel even though they are not sharable which causes it to fail when initializing the secondary IDE channel ([[Cameron Gutman]])<br />
* Fix a couple of typos in the DMA code from my last commit ([[Cameron Gutman]])<br />
* ScsiPortConvertPhysicalAddressToUlong takes an ULONG_PTR as input, fix function accordingly and do the "calculation" directly instead of calling RtlConvertUlongToLargeInteger ([[Timo Kreuzer]])<br />
* Spotted by Samuel. ([[Timo Kreuzer]])<br />
* ScsiPortDeviceControl: Slight improvement to buffer length validation. Return failure status on a handful of failure cases. Prevents buffer overruns in user code. ([[Roel Messiant]])<br />
<br />
=== USB ===<br />
<br />
==== NT4COMPAT ====<br />
<br />
===== USBDRIVER =====<br />
* Fix a bug that resulted in us only copying half of the old keyboard data ([[Cameron Gutman]])<br />
* CID 10402 ([[Cameron Gutman]])<br />
<br />
==== DISPLAYS ====<br />
<br />
=== VIDEO ===<br />
<br />
===== VGA_NEW =====<br />
* avoid buffer overrun, CID 11049 ([[Jérôme Gardou]])<br />
* Brought to light by vicmarcal ([[Jérôme Gardou]])<br />
* Use strlen() istead of sizeof() to get the string length from a pointer. CID 10403. ([[Timo Kreuzer]])<br />
<br />
==== MINIPORT ====<br />
<br />
===== VMX_SVGA =====<br />
* Convert a pointer to a WCHAR string to an array of WCHARs to fix sizeof calculation. CID 10404 ([[Timo Kreuzer]])<br />
<br />
==== VIDEOPRT ====<br />
* Add sanity checks ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Implement VideoPortGetCommonBuffer, VideoPortLockPages ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Yugoslavia no longer exists for some time, replaced by Serbia as successor of country code (phone) ([[Matthias Kupfer]])<br />
* Add parameter checks to DeleteEvent and WaitForSingleObject. ([[sir_richard]])<br />
* Fix WaitForSingleObject. It was waiting on the Object paramter itself -- which is the VideoPrt/ENG Event, not a real object, we have to wait on ->pKEvent instead. ([[sir_richard]])<br />
* Fix WaitForSingleObject round two, it was returning the NT_STATUS, while VideoPrt should return VP_STATUS/Win32 error codes. ([[sir_richard]])<br />
<br />
=== WDM ===<br />
<br />
==== AUDIO ====<br />
<br />
===== BACKPLN =====<br />
<br />
====== PORTCLS ======<br />
* Store Miniport object in the device descriptor ([[Johannes Anderwald]])<br />
* Fixes assert in NVidia NForce Audio Driver ([[Johannes Anderwald]])<br />
* Fix check if the pin can be instantiated another time ([[Johannes Anderwald]])<br />
* Remove hack to close old ([[Johannes Anderwald]])<br />
* Add function FreePin to remove its old reference ([[Johannes Anderwald]])<br />
* Fix memory leaks / reference leaks in WavePci pin implementation ([[Johannes Anderwald]])<br />
* Fix memory / reference leaks in WavePci Close implementation ([[Johannes Anderwald]])<br />
* Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM ([[Johannes Anderwald]])<br />
* Remove silence buffer hack ([[Johannes Anderwald]])<br />
* Stub DRM Property Handler ([[Johannes Anderwald]])<br />
* Before stopping the audio pin, fill the dma buffer with silence samples ([[Johannes Anderwald]])<br />
* create a subdevice descriptor for instantiated pins too ([[Johannes Anderwald]])<br />
* Rewrite the topology filter / pin / node property handling ([[Johannes Anderwald]])<br />
* Store property sets of filter / pins / nodes in a common property set array ([[Johannes Anderwald]])<br />
* Write a common dispatch function, which serves as a trampoline for filter / pin / node property requests ([[Johannes Anderwald]])<br />
* Private property handlers of the drivers are now accessible ([[Johannes Anderwald]])<br />
* Fix multiple bugs in round buffer implementation ([[Johannes Anderwald]])<br />
* Should result in less audio glitches, especially when playing audio files with low sample rates. Please report any regressions! ([[Johannes Anderwald]])<br />
* Disable driver specific filter / pin / node property handlers until bug leading to crashes has been found ([[Johannes Anderwald]])<br />
* Fix stupid bug which lead to access an invalid buffer. ([[Johannes Anderwald]])<br />
* dedicated to igorko ([[Johannes Anderwald]])<br />
* Do not leak KSSTREAM_HEADER (48 bytes) for each IOCTL_KS_WRITE_STREAM / IOCTL_KS_READ_STREAM request ([[Johannes Anderwald]])<br />
* Audio stack should now leak less memory ([[Johannes Anderwald]])<br />
* Revert 49356 ([[Johannes Anderwald]])<br />
* This change breaks portcls on WinXP ([[Johannes Anderwald]])<br />
* Add MPU-401 Uart miniport driver from DDK 2003 sample ([[Johannes Anderwald]])<br />
* Add license header ([[Johannes Anderwald]])<br />
* Dear lawyers / worried developers, this is the XP DDK Version. ([[Johannes Anderwald]])<br />
* ASM] ([[Timo Kreuzer]])<br />
* Remove superfluous .code64 ([[Timo Kreuzer]])<br />
* Add some macros for MSVC ([[Timo Kreuzer]])<br />
* Portcls does not need to set the size of the audio buffer for completed irps. This is done in a completion callback in wdmaud. Verified with WinXP portcls ([[Johannes Anderwald]])<br />
* Rewrite internal irp queue handling ([[Johannes Anderwald]])<br />
* It now supports multiple KSSTREAM_HEADERs per Irp, variable sized KSSTREAM_HEADERs per irp. ([[Johannes Anderwald]])<br />
* Store the mapped virtual address not in the KSSTREAM_HEADER, as user programs will receive then invalid addresses ([[Johannes Anderwald]])<br />
* Add checks whether this irp is for an sink pin or source pin ([[Johannes Anderwald]])<br />
* Fix multiple bugs when the pin is looped buffer mode (How did this work before?) ([[Johannes Anderwald]])<br />
* ReactOS portcls + WinXP now properly works with audio recording ([[Johannes Anderwald]])<br />
* Merge from the audio branch ([[Johannes Anderwald]])<br />
* Fix node property handler ([[Johannes Anderwald]])<br />
* Take advantage of IPinCount interface ([[Johannes Anderwald]])<br />
<br />
== HAL ==<br />
* Implement HalStopProfileInterrupt and add required RTC register and flag definitions. ([[Eric Kohl]])<br />
* Check that the interrupt line is not 255 ([[Cameron Gutman]])<br />
* Check that the interrupt pin is not 0 ([[Cameron Gutman]])<br />
* Fixes a failed assertion that Caemyr experienced with an ATI Rage graphics card ([[Cameron Gutman]])<br />
* HalpEnableInterruptHandler: Set the IDT_LATCHED flag if the caller requested a latched interrupt ([[Cameron Gutman]])<br />
* Fix a broken loop that resulted in us registering the resources of multiple COM ports as our KD port ([[Cameron Gutman]])<br />
* Fixes bug #5530 ([[Cameron Gutman]])<br />
* Add INIT_FUNCTION where needed. Will save 860KB later. ([[sir_richard]])<br />
* Disable INIT_FUNCTION to see whether it's responsible for Qemu broken status. Some are complaining of unworking trunk since r49463. ([[Pierre Schweitzer]])<br />
* This will be reverted after tests. ([[Pierre Schweitzer]])<br />
* Make directory/buildfiles for OMAP3-specific HAL. Shared between ZOOM2 and Beagle for now. ([[sir_richard]])<br />
* Convert while (TRUE); to ASSERT(FALSE); on unimplemented pathes. ([[Timo Kreuzer]])<br />
<br />
=== CRT ===<br />
<br />
== INCLUDE ==<br />
* Add powf() wrapper ([[Timo Kreuzer]])<br />
* Remove empty file ([[Gregor Schneider]])<br />
* New implementation of all printf functions. It's stream based (like MS one is) rather than buffer based (like our old is). Floating point is not 100% finished, but current implementation is good enough to boot. It can be enabled by a config switch. ([[Timo Kreuzer]])<br />
* Fix a bug in streamout(), that could cause a buffer overrun and made msvcrt_winetest crash. ([[Timo Kreuzer]])<br />
* In streamout() handle %%, negative fieldwidth and negative precision. ([[Timo Kreuzer]])<br />
* In streamout(): fix a number of formatting bugs, round floats, fix issue with large unsigned values that were treated as signed, simplify some code. ([[Timo Kreuzer]])<br />
* Define JBLEN and JBTYPE for ARM, based on the Windows ARM CRT source code (public). ([[sir_richard]])<br />
* _assert should use DbgRaiseAssertionFailure which is (a) correct and (b) portable, instead of __debugbreak. ([[sir_richard]])<br />
* Fix typos ([[Timo Kreuzer]])<br />
* Fix another typo ([[Timo Kreuzer]])<br />
* Fix bugs in converted asm file. Fixes Firefox color issues. ([[Timo Kreuzer]])<br />
* rename pow_asm.c to powl.c to reflect it's content. ([[Timo Kreuzer]])<br />
* Update "slightly less than all" IDLs to Wine-1.3.9. (Except for shlobj, shobjidl and shtypes.h, and DirectX stuff). ([[Aleksey Bragin]])<br />
* import MSVCRT_I10_OUTPUT from wine ([[Christoph von Wittich]])<br />
* import strtoi64 from wine 1.3.10 ([[Christoph von Wittich]])<br />
* Add missing _A_VOLID definition. ([[Amine Khaldi]])<br />
* Fix bugs in new printf implementation: use buffer size in _snprintf and check for the right failure return value of streamout_char. ([[Timo Kreuzer]])<br />
* Proper fix for r50248 ;-) ([[Colin Finck]])<br />
* Happy New Year from my side as well! ([[Colin Finck]])<br />
* Improve new printf implementation: ([[Timo Kreuzer]])<br />
* remove duplicated code and implement a generic function for all (v)s(w)(n)printf ([[Timo Kreuzer]])<br />
* don't call _flsbuf for string streams, while this works on windows, it doesn't work correctly on reactos (bug!) ([[Timo Kreuzer]])<br />
* Fix return error codes ([[Timo Kreuzer]])<br />
* Fix several bugs in new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a bug in _ecvt that makes msvcrt_winetest::printf crash ([[Timo Kreuzer]])<br />
* Enable new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a number of errors in floating point output. ([[Timo Kreuzer]])<br />
* Set errno when a overflow occurs in strtoull ([[Johannes Anderwald]])<br />
* Fixes 2 wine tests failures in msvcrt:string ([[Johannes Anderwald]])<br />
* Rewrite broken _flsbuf and implement _flswbuf ([[Timo Kreuzer]])<br />
* use _flswbuf in wstreamout ([[Timo Kreuzer]])<br />
* Fixes broken text output in dwnl etc ([[Timo Kreuzer]])<br />
* Fix _flsbuf return value ([[Timo Kreuzer]])<br />
* Improve code readability a bit ([[Timo Kreuzer]])<br />
* Get rid of the old printf code and some unused functions. 3346 lines of code less. ([[Timo Kreuzer]])<br />
* Remove deprecated <if>. ([[Timo Kreuzer]])<br />
* undocuser.h] ([[Giannis Adamopoulos]])<br />
* gather several undocumented definitions for user32 that were defined in several different files, sometimes in the source, sometimes in headers and sometimes defined several times here and there ([[Giannis Adamopoulos]])<br />
* This file should not contain internal user32 definitions but undocumented public definitions ([[Giannis Adamopoulos]])<br />
* Add user32_wsprintf library, with all the wsprintf functions, generated from the same codebase ([[Timo Kreuzer]])<br />
* simplify handling of ll modifier in streamout ([[Timo Kreuzer]])<br />
* Fix miscalculation of number of decimal points to shift for %f format. Should fix shlwapi:string tests and bug 5818. ([[Timo Kreuzer]])<br />
* Fix uninitialized warning ([[Timo Kreuzer]])<br />
* Replace isinf with !_finite and isnan with _isnan ([[Timo Kreuzer]])<br />
* Cleanup math.h from unixism. For now move everything that doesn't belong there into mingw_math.h. ([[Timo Kreuzer]])<br />
* effects dialog doesn't affect the color scheme (commented out until fixed finally) ([[Matthias Kupfer]])<br />
* save the KeyboardCues value correctly ([[Matthias Kupfer]])<br />
<br />
=== DDK ===<br />
* Add missing classpnp.h ([[Amine Khaldi]])<br />
* classpnp.h: Add FUNCTIONAL_DEVICE_EXTENSION, SET_FLAG, CLEAR_FLAG and TEST_FLAG ([[Amine Khaldi]])<br />
* Add some more missing definitions. ([[Amine Khaldi]])<br />
* Fix a typo and introduce some minor formatting changes. ([[Amine Khaldi]])<br />
* Add missing min and max macros. ([[Amine Khaldi]])<br />
* Add misisng MmLockPagableCodeSection. ([[sir_richard]])<br />
* Fix ClassDebugPrint prototype. ([[Amine Khaldi]])<br />
* Fix RtlStringCbPrintf prototypes. ([[Amine Khaldi]])<br />
* Add dmusprop header ([[Johannes Anderwald]])<br />
* Add IMP_PowerNotify macro to portcls.h ([[Johannes Anderwald]])<br />
* Add IID_IMusicTechnology guid to portcls.h ([[Johannes Anderwald]])<br />
* Add GTI_XXX macros to portcls.h ([[Johannes Anderwald]])<br />
* Remove broken definitions of KSPROPSETID_Synth, KSPROPSETID_Synth_Dls. They are defined in dmusprop.h ([[Johannes Anderwald]])<br />
* Add KSDATARANGE_MUSIC to ksmedia.h ([[Johannes Anderwald]])<br />
* Add KSMUSIC_TECHNOLOGY, KSDATAFORMAT_SUBTYPE_MIDI_BUS, KSAUDFNAME_MIDI, KSNODETYPE_SYNTHESIZER to ksmedia.h ([[Johannes Anderwald]])<br />
* FsRtlRemoveBaseMcbEntry() return is VOID ([[Pierre Schweitzer]])<br />
* Oleg Baikalow: Fix NDIS macros. ([[Aleksey Bragin]])<br />
<br />
=== NDK ===<br />
* Add MMVAD_SHORT. ([[sir_richard]])<br />
* Fix definition of ARM PTE/PDE structure. ([[sir_richard]])<br />
* Add IMAGE_FILE_MACHINE_NATIVE ([[Timo Kreuzer]])<br />
* Add RTL_TRACE_BLOCK structure definition. ([[Aleksey Bragin]])<br />
<br />
=== PSDK ===<br />
* Add some missing structures in ioevent.h ([[Amine Khaldi]])<br />
* Add some missing IOCTL_* definitions. ([[Amine Khaldi]])<br />
* Add missing ntddmmc.h definitions. ([[Amine Khaldi]])<br />
* Add CDROM_TOC_SESSION_DATA structure. ([[Amine Khaldi]])<br />
* Add missing header's header. ([[Amine Khaldi]])<br />
* Add missing SEC_XXX definitions for Server 2003 (Vista ones still missing). ([[sir_richard]])<br />
* Add more track popup menu types. ([[James Tabor]])<br />
* Add INET_E_USE_DEFAULT_SETTING definition ([[Cameron Gutman]])<br />
* Add ICONINFOEX* definitions and GetIconInfoEx* declarations from Wine. ([[Aleksey Bragin]])<br />
* Add NOMIRRORBITMAP definition. ([[Aleksey Bragin]])<br />
* Add DecryptFileA/W prototype. ([[Eric Kohl]])<br />
* add TrustedDomainAuthInformationInternal and TrustedDomainFullInformationInternalFix to _TRUSTED_INFORMATION_CLASS. ([[Jérôme Gardou]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* reverts the previous revert, fixed definition of NULL to __null in stddef.h ([[Timo Kreuzer]])<br />
* Don't define __in and __null on c++ build. as long as we keep using host headers, this won't work ([[Timo Kreuzer]])<br />
* Comment out specstrings.h inclusion in windef.h as per Timo's request. ([[Sylvain Petreolle]])<br />
* Add missing DbgRaiseAssertionFailure inline to winnt.h header. ([[sir_richard]])<br />
* Oleg Baikalow: Add missing definitions to ipexport.h. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't call TDIEntityID structure and type with the same name. ([[Aleksey Bragin]])<br />
* Fix for Fox Audio Player. Newest Version and leading to a Setup with libmpg ([[Daniel Reimer]])<br />
* Add missing definitions. ([[Aleksey Bragin]])<br />
<br />
=== REACTOS ===<br />
<br />
==== LIBS ====<br />
<br />
===== PSEH =====<br />
* Allow configuration of native SEH vs PSEH vs dummy PSEH with macro definitions (USE_NATIVE_SEH, USE_DUMMY_PSEH) ([[Timo Kreuzer]])<br />
<br />
===== CSRSS =====<br />
<br />
==== SUBSYS ====<br />
* Should use MEM_COMMIT | MEM_RESERVE, not just MEM_COMMIT when requesting a range of adress space that wasn't already reserved. This works in ReactOS because, well, no reason to explain why, but it wouldn't work on Windows or with a VAD-based kernel. ([[sir_richard]])<br />
* Initialise PPB to zero. (Roel)<br />
* The change from NtAllocateVirtualMemory to RtlAllocateHeap causes the memory to (Roel)<br />
* be not automatically initialised to zero anymore. (Roel)<br />
* Not every field of the PPB (for which the memory is allocated) gets explicitly (Roel)<br />
* initialised, meaning this results in them having bogus values. (Roel)<br />
* One of the now uninitialised fields is DebugFlags, which results in (Roel)<br />
* DbgBreakPoint being called in NtProcessStartup. Simply ensuring the memory is (Roel)<br />
* zeroed makes it all better again. (Roel)<br />
<br />
==== WIN32K ====<br />
* Coding for PrintWindow support for bug 5609. This does not fix the export, which should be a direct call to win32k. ([[James Tabor]])<br />
* Cleanup UserSetCursorPos ([[Giannis Adamopoulos]])<br />
* UserSetCursorPos: set the new position after sending WM_MOUSEMOVE message ([[Giannis Adamopoulos]])<br />
* now we pass all tests for SetCursorPos ([[Giannis Adamopoulos]])<br />
* fix GeoID bug (forgotten \0) ([[Matthias Kupfer]])<br />
* clean up EXLATEOBJ before error path in NtGdiBitBlt ([[Jérôme Gardou]])<br />
* Implement win32k support functions for Get and Set process default layout. ([[James Tabor]])<br />
* Due to changes with wine it will be difficult to sync when RTL support is being added to ComCtl32. ([[James Tabor]])<br />
* Fix future wine sync user32 win test for get process default layout with null parameter. ([[James Tabor]])<br />
* Return the correct complexity, pass all user32 wine test_winregion tests. ([[James Tabor]])<br />
* PSDK ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Edison Henrique Andreassy <ehasis@hotmail.com>: Add FILEMUIINFO definition. ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Fixed ValidateTimerCallback, always returning true and just spinning in the loop. ([[James Tabor]])<br />
* Add one more process information flag with a point type and capturing the hit test in desktop structure. ([[James Tabor]])<br />
* Reduce duplicated code in co_UserCreateWindowEx, co_IntSetParent and co_WinPosSetWindowPos ([[Giannis Adamopoulos]])<br />
* based on wine ([[Giannis Adamopoulos]])<br />
* Don't place new windows with default position at the top left corner of the screen ([[Giannis Adamopoulos]]; {{bug|5484}})<br />
* Send WM_PARENTNOTIFY message when a window is destroyed ([[Giannis Adamopoulos]])<br />
* co_UserDestroyWindow: Send WM_PARENTNOTIFY message in correct order ([[Giannis Adamopoulos]])<br />
* Roel Messiant: Return correct address in the user heap commit routine. Should fix boot with the new heap manager. ([[Aleksey Bragin]])<br />
* Fix an ancient FIXME in PATH_PathToRegion ([[Giannis Adamopoulos]])<br />
* Move checks for active hooks in co_HOOK_CallHooks ([[Giannis Adamopoulos]])<br />
* Remove the FreeLParam 'feature' from win32k. This hack allowed us to post messages that contain pointers. However we don't do it anymore so we can also remove this as well ([[Giannis Adamopoulos]])<br />
* Add keyboard messages to the list with Hardware messages and not in the list with post messages ([[Giannis Adamopoulos]])<br />
* Disable checking if a hook is active. It is safe to disable it for now because it is just an optimization. If we try to call a hook when it is not active, it will fail anyway when it tries to find the hook. Fixes calling low level hooks ([[Giannis Adamopoulos]])<br />
* When we try to call a hook with null hook proc will cause a crash in user32. Add an assertion in win32k in order to catch the problem a bit earlier ([[Giannis Adamopoulos]])<br />
* Clean up co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* Renove some unneccessary casts ([[Timo Kreuzer]])<br />
* Fix an exception when set condition * first always is used then moving the mouse. There seems to be an initialization issue (The Init Bug) and not setting a desktop. ([[James Tabor]])<br />
* Fix typos found by Mephisto on IRC, also add some debug prints in SetWindowsHookEx to see what hooks are installed. ([[James Tabor]])<br />
* Do not override WH_JOURNALPLAYBACK results if zero. ([[James Tabor]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereferences. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Improve the code to enumerate monitors. ([[Timo Kreuzer]])<br />
* Don't use custom MIN / MAX / ABS macros ([[Timo Kreuzer]])<br />
* Calculate distance by r^2 = x^2 + y^2 ([[Timo Kreuzer]])<br />
* Use RECTL_bIntersectRect instead of code duplication ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference ([[Timo Kreuzer]])<br />
* pass bottom-right exclusive rect to IntGetMonitorsFromRect from NtUserMonitorFromPoint ([[Timo Kreuzer]])<br />
* Don't handle MONITOR_DEFAULTTOPRIMARY and MONITOR_DEFAULTTONEAREST twice ([[Timo Kreuzer]])<br />
* Use unsigned variables for unsigned values ([[Timo Kreuzer]])<br />
* Don't check the result of a UINT returning function for < 0 ([[Timo Kreuzer]])<br />
* Improve readability ([[Timo Kreuzer]])<br />
* message.c: ([[Giannis Adamopoulos]])<br />
* Don't use RETURN macro ([[Giannis Adamopoulos]])<br />
* Correctly use SEH. Use _SEH2_YIELD ([[Giannis Adamopoulos]])<br />
* Roel Messiant: ([[Aleksey Bragin]])<br />
* Heap corruption fixes. ([[Aleksey Bragin]])<br />
* remove rtl dependency ([[Johannes Anderwald]])<br />
* thanks to mephisto! ([[Johannes Anderwald]])<br />
* Fix mdl probe access rights ([[Johannes Anderwald]])<br />
* Fix possible use of uninitialized variable. Spotted by Amine. ([[Timo Kreuzer]])<br />
* Remove obsolete code ([[Johannes Anderwald]])<br />
* Thanks to Amine ([[Johannes Anderwald]])<br />
* Fix a bug in InitVideo: when looping through the adapters, reinitialize the cbValue before querying the registry. ([[Timo Kreuzer]])<br />
* Also handle failure. ([[Timo Kreuzer]])<br />
* Lock thread when removing hooks. ([[James Tabor]])<br />
* Track end of life thread when removing hooks. ([[James Tabor]])<br />
* Disable GDI_DEBUG. It's using > 20 MB memory. Too much for some people ;-) ([[Timo Kreuzer]])<br />
* Change all Init functions to be NTAPI instead of FASTCALL, return NTSTATUS, and be an INIT_FUNCTION (saving incredible 2k). Simplify the initialization sequence by using a simple macro. Delete a comment that is not true anymore. ([[Timo Kreuzer]])<br />
* Move some globals to appropriate file. ([[Timo Kreuzer]])<br />
* Make InitVideo return NTSTATUS and properly handle failure ([[Timo Kreuzer]])<br />
* Silence a DPRINT, improve a DPRINT ([[Timo Kreuzer]])<br />
* Turn off debug prints. ([[James Tabor]])<br />
* Fixed WaitForInputIdle, finally!, passed all the wine tests for it. ([[James Tabor]])<br />
* Moved Get/Peek message to the new all in one support routine. ([[James Tabor]])<br />
* Foreground hook hits one out of five, this needs more research. ([[James Tabor]])<br />
* Attempted to workout synchronizing issues with low level and regular hooks. ([[James Tabor]])<br />
* Simplify co_IntPeekMessage even more ([[Giannis Adamopoulos]])<br />
* Rename MsqInsertSystemMessage to MsqInsertMouseMessage ([[Giannis Adamopoulos]])<br />
* Updated the Rapps Versions, too. ([[Daniel Reimer]])<br />
* Fix hooks, do not cleanup hooks when any window from the same thread is destroyed. ([[James Tabor]])<br />
* Tweaks to hook and event timeouts. Increase performance with DOSBox when using mouse and keyboard. ([[James Tabor]])<br />
* Some more cleanup ([[Giannis Adamopoulos]])<br />
* Test for hooks before setting up for a hook call. This eliminates overhead. ([[James Tabor]])<br />
* Fix one of the greatest hacks in message handling: do not wake up every message queue when there is mouse or keyboard input ( wake only the thread that must take input) ([[Giannis Adamopoulos]])<br />
* rewrite co_WinPosWindowFromPoint, co_MsqInsertMouseMessage and co_MsqPeekHardwareMessage ([[Giannis Adamopoulos]])<br />
* port co_IntProcessMouseMessage and MsqSendParentNotify from wine ([[Giannis Adamopoulos]])<br />
* call co_IntProcessHardwareMessage from co_MsqPeekHardwareMessage, and not from co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* move co_IntProcessHardwareMessage, co_IntProcessKeyboardMessage and co_IntProcessMouseMessage to msgqueue.c ([[Giannis Adamopoulos]])<br />
* Apply workaround for POINT / POINTL, like for the others ([[Timo Kreuzer]])<br />
* Restore capturing the hit test in the desktop structure. Move journal record hook before sending the mouse hook. ([[James Tabor]])<br />
* revert r49718 ([[Timo Kreuzer]])<br />
* Remove some unused functions ([[Giannis Adamopoulos]])<br />
* move several user stubs in ntstubs.c ([[Giannis Adamopoulos]])<br />
* More fixes to In Send and Reply message support. ([[James Tabor]])<br />
* More fixes to In Send message support. One more case fixed in looping back. ([[James Tabor]])<br />
* Amend to r41772. Allow PostMessage to handle DDE messages ([[Giannis Adamopoulos]])<br />
* In FNID_SENDMESSAGECALLBACK use SEH before accesing the user-mode buffer ([[Giannis Adamopoulos]])<br />
* Merge r49994 and r49995 from reactx branch ([[Timo Kreuzer]])<br />
* Use the new version of NtUserGetMessage and NtUserPeekMessage written by Jim. It is possible to use them now because GetMessage and PeekMessage don't return messages that contain pointers. As a result they don't need to do any extra work to copy the message to user mode. All messages that contain pointers are sent messages and this means that they don't get into the message loop. Instead they are passed directly to the window proc. ([[Giannis Adamopoulos]])<br />
* DispatchMessage works only if the target window belongs to the current thread. This lets us remove uneeded copies of lparam to user mode. ([[Giannis Adamopoulos]])<br />
* Remove an unneeded debug message ([[Giannis Adamopoulos]])<br />
* remove some more unnecessary debug output ([[Giannis Adamopoulos]])<br />
* Silence 3 DPRINTs ([[Timo Kreuzer]])<br />
* NtGdiGetDIBitsInternal: Copy the requested amount of scanlines into the return buffer, not the whole bitmap. Should fix bug #5766. ([[Roel Messiant]])<br />
* Remove co_IntPostOrSendMessage and use co_IntSendMessageNoWait where possible ([[Giannis Adamopoulos]])<br />
* Improve "not enough memory" check when creating a bitmap ([[Jérôme Gardou]])<br />
* use correct function to set the last error. ([[Jérôme Gardou]])<br />
* Make sure to initialize our page operation mutex. ([[Art Yerkes]])<br />
* Scan the whole range of the MemoryArea for pages to evict. ([[Art Yerkes]])<br />
* This fixes cache section page eviction. ([[Art Yerkes]])<br />
* IntCreateWindow: Fill out MaximumLength field of the window name. Fixes potential buffer overflow in at least NtUserDefSetText. ([[Roel Messiant]])<br />
* Fix EngGetLastError and EngSetLastError ([[Timo Kreuzer]])<br />
* Remove SetLastWin32Error and use EngSetLastError instead ([[Timo Kreuzer]])<br />
* Fixes bug 5792 and Get/PeekMessage tests. I noticed co_IntPostOrSendMessage to co_IntSendMessageNoWait changes when it should have been changed to co_IntSendMessage. Same as co_IntSendMessage to co_IntSendMessageNoWait when it should have not changed.... I'm sorting it out. ATM win test locks up and the system shutdown box is not present only the text message. ([[James Tabor]])<br />
* Use SendNotifyMessage for broadcasting these messages and SendMessageNoWait when not broadcasting. ([[James Tabor]])<br />
* Fix all the user32 wine win test_CreateWindow tests. ([[James Tabor]])<br />
* Fix all the user32 wine win test_enum_thread_windows tests. ([[James Tabor]])<br />
* Update note after 50205. ([[James Tabor]])<br />
* NtUserSetWindowFNID, sets user client side window function Ids, expands to ghost. ([[James Tabor]])<br />
* Allocate/free GRE events directly from pool, instead of using Eng APIs. Use documented tag for GRE Events (Dfsm), found in pooltag.txt ([[sir_richard]])<br />
* Implement EngMapEvent and EngUnmapEvent. ([[sir_richard]])<br />
* Improve LDEVOBJ_bLoadImage, use ExportSectionPointer from the GdiDriverInfo structure instead of calling RtlImageDirectoryEntryToData ([[Timo Kreuzer]])<br />
* Implement NtGdiGetBoundsRect and NtGdiSetBoundsRect. (Samuel)<br />
* Access the DC member directly instead of using IntGdiGetDCOrg ([[Timo Kreuzer]])<br />
* Remove unused IntGdiGetDCOrg, GdiSetDCOrg, GdiGetDCOrgEx ([[Timo Kreuzer]])<br />
* Simplify error checks, by reordering code in NtGdiScaleViewportExtEx ([[Timo Kreuzer]])<br />
* Simplify exception handling, use _SEH2_YIELD ([[Timo Kreuzer]])<br />
* Change function order ([[Timo Kreuzer]])<br />
* Minor code improvements ([[Timo Kreuzer]])<br />
* Fix type of DCLEVEL::prgnClip / prgnMeta (PVOID -> PREGION) ([[Timo Kreuzer]])<br />
* Move NtGdiGetRandomRgn to dcobjs.c ([[Timo Kreuzer]])<br />
* Fix a bug in FLOATOBJ_DivLong ([[Timo Kreuzer]])<br />
* Use if, instead of switch to handle flags in XFORMOBJ_bXformFixPoints ([[Timo Kreuzer]])<br />
* Define XFORMOBJ to EXFORMOBJ, a stack object that links to the matrix ([[Timo Kreuzer]])<br />
* There is no spoon. ([[Timo Kreuzer]])<br />
* Improve NtGdiStretchDIBitsInternal, use _SEH2_YIELT instead of saving an NTSTATUS and handle the fast path in place instead of setting a BOOL variable. Fixes warnings about uninitialized variables. ([[Timo Kreuzer]])<br />
* In BitmapFormat, allow intermediate bpp values, use ULONG as parameter type, instead of WORD and DWORD ([[Timo Kreuzer]])<br />
* In NtGdiCreateBitmap get the real bpp value from the gajBitsPerFormat array ([[Timo Kreuzer]])<br />
* Add back check of too large nWidth (needed to make sure, cjWidthBytes didn't overflow) ([[Timo Kreuzer]])<br />
* Merge all parameter checks ([[Timo Kreuzer]])<br />
* Check cPlanes and cBitsPixel paramters explicitly ([[Timo Kreuzer]])<br />
* Use GreCreateBitmapEx ([[Timo Kreuzer]])<br />
* Remove BITMAP_GetRealBitsPixel ([[Timo Kreuzer]])<br />
* In GreCreateBitmapEx handle allocation failure in the rle hack path and set LastError, when failed to allocate bitmap bits. ([[Timo Kreuzer]])<br />
* Cleanup pooltags a little, use official tags where known and applicable. ([[Timo Kreuzer]])<br />
* Fix use of XFORMOBJ. Should fix gdi32_winetest clipping regression and release breakage. ([[Timo Kreuzer]])<br />
* Win32k implementation of GetCharacterPlacementW, work is dedicated to the late Professor John Collins. ([[James Tabor]])<br />
* Implement NtGdiCreateMetafileDC. ([[James Tabor]])<br />
* Since most of the gdi work I committed is being reverted or if'ed out of existence, this will be the last. ([[James Tabor]])<br />
* Remove debugging code. ([[Timo Kreuzer]])<br />
* Don't trat BI_BITFIELDS as compressed format in DIB_CreateDIBSection. Fixes KSStudio. Why it was introduced by r48359? I don't know. It was broken before. I refrain from making any more comments about that piece of ... code. ([[Timo Kreuzer]]; {{bug|5781}})<br />
* Don't leak the memory for DIB sections. we set BMF_DONT_FREE in SURFACE_bSetBitmapBits, when the caller provides bits. This needs to be reconsidered. ([[Timo Kreuzer]])<br />
* In UserSetCursor, return a pointer to the old cursor, not the handle ([[Timo Kreuzer]]; {{bug|5722}})<br />
* really delete the pointer shape when NULL cursor is set, instead of just hiding it. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Move reference handling completely to NtUserSetCursor ([[Timo Kreuzer]]; {{bug|5722}})<br />
* In UserChangeDisplaySettings, set NULL cursor before change and restore old cursor after change to make sure we have the right color format. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Reset monitor size after mode switch. (rafalh; {{bug|5727}})<br />
* Go back to hiding the cursor with GreMovePointer, instead of setting NULL bitmaps. While MSDN states that psoColor and psoMask can both be NULL in DrvSetPointerShape, it doesn't explicitly say anything about both being NULL at the same time. VBox driver doesn't expect that and will crash, so most likely windows doesn't do this. ([[Timo Kreuzer]])<br />
* Set correct error value on failure in NtUserSetCursor. (Victor)<br />
* Portability bugfixes ([[Thomas Bluemel]])<br />
* Create a security descriptor for the desktops rather than passing the ACLs in as a security descriptor ([[Thomas Bluemel]])<br />
* Fix draw of cursors in static controls ([[Matthias Kupfer]])<br />
* Last part of fix for bug #4874 ([[Matthias Kupfer]])<br />
* Implement GetClassLongPtrA/W ([[Thomas Bluemel]])<br />
* Fix replaced by more flexible code for arbitrary cursor sizes ([[Matthias Kupfer]])<br />
* Fix crash with standalone win test_hind_message test. ([[James Tabor]])<br />
* Fix buggy mechanism of pushing and popping free gdi handle slots. The old mechanism unneccessarily locked the entry and it was prone to the ABA problem as it didn't use a sequence number. ([[Timo Kreuzer]])<br />
* Fix a bug in calculation of the background color for 32bpp -> 1bpp color translations. ([[Timo Kreuzer]])<br />
* Fixes bug 2372 ([[Timo Kreuzer]])<br />
* add missing file ([[Timo Kreuzer]])<br />
* Add GetTransform declaration. (until we have undocgdi.h). ([[Aleksey Bragin]])<br />
* Enable simple FontSmoothing by default. It matters for arwinss, trunk just ignores this value and always smoothes the fonts. ([[Aleksey Bragin]])<br />
* Robert Horvath: LocalUnlock has to be different from GlobalUnlock. The subtle difference between LocalUnlock and GlobalUnlock, is, that the former will return FALSE and set ERROR_NOT_LOCKED on LMEM_FIXED allocations. Fixes 1 kernel32:heap failure. ([[Aleksey Bragin]]; {{bug|5869}})<br />
* Robert Horvath: Add GlobalFlag entry in hivesys_{arch}.inf with the default value 0x0. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Add a missing ORing of the registry-loaded GlobalFlags value in ExpInitializeExecutive. Thanks to Robert Horvath for spotting the issue. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Merge all amd64 related changes from cmake branch ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 1 ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 2 ([[Timo Kreuzer]])<br />
* Edijs: Properly load window size and position. ([[Aleksey Bragin]]; {{bug|5872}})<br />
* Handle BITMAPV4HEADER and BITMAPV5HEADER, when creating a DIB palette. Detect PAL_RGB like done with PAL_BGR in PALETTE_AllocPalette (optimization). ([[Timo Kreuzer]])<br />
* Fixes pink icons. ([[Timo Kreuzer]])<br />
* Remove some artifact from ARM build. ([[Pierre Schweitzer]])<br />
* Fix initialization of XLATEOBJ, when source and dest format are equal. (Thomas; {{bug|5828}})<br />
* Remove gexloTrivial, it was never used ([[Timo Kreuzer]])<br />
* Remove EXLATEOBJ_vInitTrivial and move the code into EXLATEOBJ_vInitialize ([[Timo Kreuzer]])<br />
* Properly set XO_TABLE ([[Timo Kreuzer]])<br />
* Set ppalDstDc in EXLATEOBJ_vInitXlateFromDCs ([[Timo Kreuzer]])<br />
<br />
=== 3RDPARTY ===<br />
<br />
== LIB ==<br />
==== FREETYPE ====<br />
===== INCLUDE =====<br />
====== FREETYPE ======<br />
======= CONFIG =======<br />
* Instead of having 4 template rbuild configuration files that must be kept in-sync, maybe there should be a generic one that they all inherit from? ([[sir_richard]])<br />
* Add new property settings that exist in x86, but not ARM because nobody added them there. For example, nor cc, nor cache were being built on ARM, because NEWCC was undefined (which isn't treated as 0 by rbuild). ([[sir_richard]])<br />
* How I long for CMAKE. ([[sir_richard]])<br />
<br />
======= DATA =======<br />
<br />
======== XML ========<br />
<br />
===== ICU =====<br />
<br />
====== SOURCE ======<br />
<br />
==== ICU4ROS ====<br />
<br />
==== MINGW ====<br />
* Don't compile atonexit.c. atexit is exported from msvcrt. ([[Timo Kreuzer]])<br />
* Revert r50267 ([[Timo Kreuzer]])<br />
<br />
==== SOUND ====<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
* Getting device capabilities requires the unicode version of the structure ([[Johannes Anderwald]])<br />
* Implement MIDM_OPEN, MIDM_CLOSE, MIDM_START, MIDM_STOP ([[Johannes Anderwald]])<br />
* Implement MODM_OPEN, MODM_CLOSE ([[Johannes Anderwald]])<br />
* Refactor MmeOpenWaveDevice into MmeOpenDevice add add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Refactor MmeCloseWaveDeivce into MmeCloseDevice and add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Handle mixers identified by id, not by handle ([[Johannes Anderwald]])<br />
* Fix opening of mixer devices ([[Johannes Anderwald]])<br />
* Waveformat struct is only provided when type is wave device ([[Johannes Anderwald]])<br />
* Implement wave reset routine, fixes audio recording on ReactOS SndRec, AudaCity etc. Also fixes random hang in WinAmp when skipping audio bytes ([[Johannes Anderwald]])<br />
* Implement wave pausing / restarting, should lead to smoother playback ([[Johannes Anderwald]])<br />
<br />
===== MMIXER =====<br />
* Rewrite topology node enumeration algorithm ([[Johannes Anderwald]])<br />
* Old algorithm didnt properly take in account sum/mux nodes, may assign nodes to multiple lines and was not able to detect circuits which may lead to infinite loops ([[Johannes Anderwald]])<br />
* New algorithm properly partitions the nodes and also checks if nodes has already been assigned. As a plus, it is also faster ([[Johannes Anderwald]])<br />
* Algorithm based on msdn http://msdn.microsoft.com/en-us/library/ff538873(v=VS.85).aspx ([[Johannes Anderwald]])<br />
* Tested on VBox 3.28 (AC97) ([[Johannes Anderwald]])<br />
* Please retest supported soundcards for regressions ([[Johannes Anderwald]])<br />
* Implement support routines which get called when a topology node changes its state ([[Johannes Anderwald]])<br />
* Volume changes / mute on/off changes should now be broadcasted again to all listening applications ([[Johannes Anderwald]])<br />
* Add support for topologies where pins directly connect to other pins without nodes in between ([[Johannes Anderwald]])<br />
* Check if the topology contains node. Fixes assert hit in VmWare Player(sound is not working) ([[Johannes Anderwald]])<br />
* Thanks to Caemyr for testing ([[Johannes Anderwald]])<br />
* Disable assert for now ([[Johannes Anderwald]])<br />
* Amendment to rev. 49167 requested by Caemyr. ([[Kamil Hornicek]])<br />
* Apply a hack to filter out pins, which are not part of filter node processing path ([[Johannes Anderwald]])<br />
* The hack filters out all pins which have a physical connection. Ideally the code should check if the pin is part of a different rendering path and in that case remove the pin. ([[Johannes Anderwald]])<br />
* Revert 49167 ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Kernel streaming pins need to transit states from Run -> Pause -> Acquire -> Stop. ([[Johannes Anderwald]])<br />
* Fixes SB Live playback hang on last tone when stopping playback ([[Johannes Anderwald]])<br />
* Enumerate MIDI devices and provide all necessary functions to deal with them ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Tons of fixes to enumeration of mixerlines, controls / etc ([[Johannes Anderwald]])<br />
* Fix mixer event notification callbacks ([[Johannes Anderwald]])<br />
* For more info, read audio-bringup log ([[Johannes Anderwald]])<br />
<br />
=== LSALIB ===<br />
* Fix compiler warnings for AMD64 build. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
* Fix PCI group key ([[Johannes Anderwald]])<br />
<br />
== NTOSKRNL ==<br />
* IoRegisterPlugPlayNotification: Do not fail if no Interface can be found for the given GUID. Just do not call the Callback-Routine in this case. The Interface could be created later. ([[Eric Kohl]])<br />
* disable some locale IDs because they are not supported yet ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 417 Rhaeto-Romanic ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 445 Bengali (India) ([[Matthias Kupfer]]; {{bug|5636}})<br />
* or still unknown ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 48f ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 490 ([[Matthias Kupfer]]; {{bug|5636}})<br />
* this fixes multiple entries () ([[Matthias Kupfer]]; {{bug|5636}})<br />
* Implement NtQueryOpenSubKeys. ([[Eric Kohl]])<br />
* Add amd64 versions of MI_MAKE_PROTOTYPE_PTE and MiProtoPteToPte ([[Timo Kreuzer]])<br />
* Remove outdated external declarations ([[Timo Kreuzer]])<br />
* disable deprecated amd64 code ([[Timo Kreuzer]])<br />
* use MiFillSystemPageDirectory only for 2 paging levels ([[Timo Kreuzer]])<br />
* Alternative workaround for pentium lock errata: Instead of burdening the page fault handler, just mark the IDT page as Write-Through if the bug is present. According to http://www.rcollins.org/Errata/Dec97/F00FBug.html it shall prevent the lock up. Please test. Dedicated to elhoir. ([[Timo Kreuzer]])<br />
* Fix ARC names accordingly ([[Pierre Schweitzer]])<br />
* Don't ignore IopCreateArcNames() return while booting. ([[Pierre Schweitzer]])<br />
* At the moment, it's just returning STATUS_SUCCES but it will be changed later. ([[Pierre Schweitzer]])<br />
* Fixed a FIXME in ARC names by implementing IopStoreSystemPartitionInformation(). This make ReactOS writing boot paths to registry. ([[Pierre Schweitzer]])<br />
* On boot, while loading drivers, make starting Loader Block available to the whole kernel to let drivers calling on-boot functions that may need it. ([[Pierre Schweitzer]])<br />
* One of them will be implemented later. ([[Pierre Schweitzer]])<br />
* Implement SeImpersonateClientEx() and simplify SeImpersonateClient(). ([[Eric Kohl]])<br />
* Replace \" with "" in resource files. This makes CMAKE build way more silent. Needs to be merged. ([[Daniel Reimer]])<br />
* TBD find a way to silent warnings happening due to \n in strings. ([[Daniel Reimer]])<br />
* Implemented FstubAllocateDiskInformation(), FstubDbgGuidToString(), FstubDbgPrintDriveLayoutEx(), FstubDbgPrintPartitionEx(), FstubDetectPartitionStyle(), FstubFreeDiskInformation(), FstubGetDiskGeometry(), FstubReadPartitionTableMBR(), FstubReadSector() ([[Pierre Schweitzer]])<br />
* Stubbed FstubReadPartitionTableEFI() ([[Pierre Schweitzer]])<br />
* This leads to a correct & working implementation of IoReadPartitionTableEx(). As this state, it only handles MBR partition tables as EFI/GPT as been stubbed out. ([[Pierre Schweitzer]])<br />
* EFI/GPT support will come later. ([[Pierre Schweitzer]])<br />
* Implemented IopFetchConfigurationInformation(), IopCreateArcNamesCd(), IopCreateArcNamesDisk(), IopVerifyDiskSignature() ([[Pierre Schweitzer]])<br />
* Removed IopApplyRosCdromArcHack(), IopGetDiskInformation(), IopAssignArcNamesToCdrom() ([[Pierre Schweitzer]])<br />
* Finally, rewritten IopCreateArcNames() ([[Pierre Schweitzer]])<br />
* To make it short, this is the rewrite of ARC names handling in the kernel. ([[Pierre Schweitzer]])<br />
* This brings our kernel to a higher state of existence. Indeed, it's leaving NT4 design for a proper NT5.2 design, with less hacks, less ROS specific stuff and such. ([[Pierre Schweitzer]])<br />
* This code handles the mount manager we don't have yet. ([[Pierre Schweitzer]])<br />
* Implemented FstubAdjustPartitionCount(), FstubConvertExtendedToLayout(), FstubCopyEntryEFI(), FstubCreateDiskMBR(), FstubCreateDiskEFI(), FstubCreateDiskRaw(), FstubDbgPrintSetPartitionEx(), FstubReadHeaderEFI(), FstubReadPartitionTableEFI(), FstubSetPartitionInformationEFI(), FstubVerifyPartitionTableEFI(), FstubWriteBootSectorEFI(), FstubWriteEntryEFI(), FstubWriteHeaderEFI(), FstubWritePartitionTableEFI(), FstubWritePartitionTableMBR(), FstubWriteSector() ([[Pierre Schweitzer]])<br />
* Implemented IoCreateDisk(), IoGetBootDiskInformation(), IoReadDiskSignature(), IoSetPartitionInformationEx(), IoVerifyPartitionTable(), IoWritePartitionTableEx() ([[Pierre Schweitzer]])<br />
* To sum up, this commit finishes FSTUB API implementation in the ReactOS kernel. This means one important thing: now ReactOS kernel knows about a bit about EFI and about GPT. No need to say that it's the first step into EFI support. But a lot more work is needed. Especially since the kernel is the only real entity in ReactOS to handle GPT. All the rest of the OS doesn't know anything about GPT. ([[Pierre Schweitzer]])<br />
* A small note about FstubVerifyPartitionTableEFI(). This function is supposed to check whether a disk formated with GPT is valid, and if it's not, to fix it. First step is implemented. Second step isn't yet supported. ([[Pierre Schweitzer]])<br />
* A general note about all that stuff: on GPT, backup table isn't properly handled for the moment, as ReactOS is experiencing disk geometry issues. That means it's not having the proper disk sectors count and then, can't find the backup table (which is located on last disk sector). ([[Pierre Schweitzer]])<br />
* References: ([[Pierre Schweitzer]])<br />
* http://www.intel.com/technology/efi/ ([[Pierre Schweitzer]])<br />
* http://developer.apple.com/library/mac/#technotes/tn2006/tn2166.html ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.h;hb=HEAD ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.c;hb=HEAD ([[Pierre Schweitzer]])<br />
* Rewrite the resource map code to fix a regression, several failures cases, and a few memory leaks ([[Cameron Gutman]])<br />
* Remove an incorrect definition of IopDetectResourceConflict in pnpreport.c (no idea how this didn't trigger an onslaught of warnings) ([[Cameron Gutman]])<br />
* Partially implement IoAssignResources so that it creates a non-conflicting resource list from the requirements but it doesn't claim the resources for the device in the registry ([[Cameron Gutman]])<br />
* Partially implement IoReportResourceUsage so that it checks the resource list for conflicts but doesn't claim the resources in the registry ([[Cameron Gutman]])<br />
* Please test this revision with a variety of hardware and drivers because it activates several code paths in the PnP manager ([[Cameron Gutman]])<br />
* If this causes problems, look for "Denying an attempt to claim resources currently in use by another device!" in the debug log and report the bug to me ([[Cameron Gutman]])<br />
* Fix a critical bug in the conflict detection code ([[Cameron Gutman]])<br />
* Don't unconditionally skip conflict detection for shared resources, instead it should be done on a descriptor-by-descriptor basis (if both descriptors are shared) ([[Cameron Gutman]])<br />
* This check wasn't removed when I initially wrote this code and added the proper check below ([[Cameron Gutman]])<br />
* Add IoWMIDeviceObjectToProviderId and IoIs32bitProcess stubs for 64bit builds ([[Timo Kreuzer]])<br />
* Comment out some deprecated amd64 code ([[Timo Kreuzer]])<br />
* Add MmProtectToValue ([[Timo Kreuzer]])<br />
* Fix a typo ([[Timo Kreuzer]])<br />
* Fix a bug. ([[Timo Kreuzer]])<br />
* Initialize the Zero variable ([[Timo Kreuzer]])<br />
* Don't corrupt the Color value in case we didn't have any page on MmZeroedPageListHead. ([[Timo Kreuzer]])<br />
* Use appropriated macros ([[Pierre Schweitzer]])<br />
* Simplify code, which should bring some fixing ([[Pierre Schweitzer]])<br />
* Fix potential buffer overflow ([[Pierre Schweitzer]])<br />
* Get back INIT_FUNCTION on lassy's polite request. ([[Pierre Schweitzer]])<br />
* Previously, in ReactOS' stories: ([[Pierre Schweitzer]])<br />
* ReactOS was broken since more a hundred of commits when two devs decided it was enough. One (we will name him Timo) fixed the context switch. The second, with the help of a third dev (Pierre & Hervé) decided to run tests by disabling some stuff (ie INIT_FUNCTION). This magically made testbot going back to life. ([[Pierre Schweitzer]])<br />
* But, some complains came from the ML, so trying to appease world, Pierre decided to revert half of his changes, thinking this would be OK. ([[Pierre Schweitzer]])<br />
* Now, after a night. It appears that half revert was a pretty bad idea. Testbot keeps being broken. ([[Pierre Schweitzer]])<br />
* So, this commit reverts r49665 (which was half reverting r49662). That way, testbot should be back, able to run tests. BUT, due to a NPFS issue, some tests are broken. Eric has been nicely mailed about that issue, with an idea of fix (thanks go here to Aleksey). ([[Pierre Schweitzer]])<br />
* For those who like that, drama to follow on ML. ([[Pierre Schweitzer]])<br />
* I turn into being S/M... ([[Pierre Schweitzer]])<br />
* Add missing PAGED_CODE() where needed ([[Pierre Schweitzer]])<br />
* Removed a wrong ASSERT in FsRtlIsNameInExpressionPrivate() and replace it by the right one ([[Pierre Schweitzer]])<br />
* Mark FsRtlIsDbcsInExpression() as halfplemented ([[Pierre Schweitzer]])<br />
* Renamed MmIsFileAPagingFile() to MmIsFileObjectAPagingFile() its appropriated name ([[Pierre Schweitzer]])<br />
* Added it to internal headers ([[Pierre Schweitzer]])<br />
* Implemented FsRtlIsPagingFile() ([[Pierre Schweitzer]])<br />
* Implemented FsRtlLookupPerStreamContextInternal(), FsRtlInsertPerStreamContext(), FsRtlRemovePerStreamContext(), FsRtlTeardownPerStreamContexts() ([[Pierre Schweitzer]])<br />
* Based on my previous work on pierre-fsd branch. ([[Pierre Schweitzer]])<br />
* Add missing prototype and define ([[Pierre Schweitzer]])<br />
* Implemented FsRtlPTeardownPerFileObjectContexts(), FsRtlLookupPerFileObjectContext(), FsRtlInsertPerFileObjectContext(), FsRtlRemovePerFileObjectContext() ([[Pierre Schweitzer]])<br />
* Stubplemented IoGetFileObjectFilterContext(), IoChangeFileObjectFilterContext() ([[Pierre Schweitzer]])<br />
* Add support of per file object filter context to IopDeleteFile() ([[Pierre Schweitzer]])<br />
* As ReactOS doesn't support file objects extensions, this doesn't work (blame Aleksey) - yet ([[Pierre Schweitzer]])<br />
* Implement MemorySectionName case for NtQueryVirtualMemory. Protect buffer access with SEH. (Samuel; {{bug|5753}})<br />
* revert accidental change from r49499 ([[Timo Kreuzer]])<br />
* Fixed FsRtlIsNameInExpression() according to r50018 tests ([[Pierre Schweitzer]])<br />
* Rewritten FsRtlIsDbcsInExpression() using FsRtlIsNameInExpression() pattern. ([[Pierre Schweitzer]])<br />
* This fixes all failing tests from kmtest.sys and make this function definitely tastier to MS fastfat.sys ([[Pierre Schweitzer]])<br />
* Merge some changes from r50021 to FsRtlIsNameInExpression() to make code easier to read and understand... ([[Pierre Schweitzer]])<br />
* Silent FstubEx* debug prints on popular demand (ie, Timo) ([[Pierre Schweitzer]])<br />
* commit base for new vga display miniport driver, is svn copy of framebuf_new as many codes identical ([[evb]])<br />
* Will than commit and document differences to make into vga driver ([[evb]])<br />
* Add the new vga miniport to build ([[evb]])<br />
* Replace the framebuf_new spec rc rbuild with vga_new spec rc rbuild ([[evb]])<br />
* Delete pointer.c ([[evb]])<br />
* Start make changes, driver.h new fields for VGA, change driver short/long name/tag, add macros and in enable.c remove hw pointer support ([[evb]])<br />
* fix now palette.c for vga, by copy logPalVGA/VGALOGPALETTE from NT4 DDK VGA sample drv and turn off codes for allocate 256 color pallette, instead use fix 16 color logPalVGA ([[evb]])<br />
* fix header of debug.c ([[evb]])<br />
* Finish make enable.c work full on vga, main change force 4BPP (disable other codes), create 4BPP bitmap surfobj, associate and lock ([[evb]])<br />
* Easy part done, now hard part ([[evb]])<br />
* Mode detect look for 4BPP, planar, graphics < 0x800 mode now ([[evb]])<br />
* Add GDIINFO from NT4 VGA DDK sample driver ([[evb]])<br />
* Set 4BPP prefer DIB format ([[evb]])<br />
* No graphics caps set for VGA driver ([[evb]])<br />
* Put static palette/color buffer for when VGA IOCTL send later ([[evb]])<br />
* Convert almost done, bInitSURF is last ([[evb]])<br />
* Fix an assign where a comparison was intended. CID 2626. ([[Amine Khaldi]])<br />
* Actually, code was correct, but ugly (who said "normal, that's a hack). ([[Pierre Schweitzer]])<br />
* So, when that code is called from SetupLDR, KeyHandle is required to be to 1. This what code does. Thing we do in the if condition when it appears we are called from SetupLDR. ([[Pierre Schweitzer]])<br />
* To avoid any further question, or warning, adding more parenthesis to show that we know what we do. ([[Pierre Schweitzer]])<br />
* So, to sum up, there's no comparaison for KeyHandle ([[Pierre Schweitzer]])<br />
* Fix CID 3454 ([[Pierre Schweitzer]])<br />
* Remove all #line 15 "ARM³::BLA" ([[Timo Kreuzer]])<br />
* Reasons: ([[Timo Kreuzer]])<br />
* It doesn't provide any benefits, its only purpose was to "look cool" ([[Timo Kreuzer]])<br />
* It never looked cool, instead a character mess appeared ([[Timo Kreuzer]])<br />
* It makes finding the related file harder, especially when the file is named differently then the description or when multiple files have the same tag ([[Timo Kreuzer]])<br />
* It effectively breaks Coverity scans ([[Timo Kreuzer]])<br />
* Make definitions of ExpChangeRundown, ExpChangePushlock and ExpSetRundown 64 bit safe (have one portable definition and use it accordingly) ([[Timo Kreuzer]])<br />
* Hoover a bit in CC part 1. Should make MM happier. ([[Pierre Schweitzer]])<br />
* But MS fastfat driver not yet ([[Pierre Schweitzer]])<br />
* Plumber work part 1. To prevent leaks ([[Pierre Schweitzer]])<br />
* Hoovering part 2... ([[Pierre Schweitzer]])<br />
* Fix typo ~ ([[Pierre Schweitzer]])<br />
* Remove broken definition of SharedUserdata and use correct SharedUserData instead. Fixes a crash on real Hardware. (Daniel; {{bug|5650}})<br />
* Simplify SepPrivilegeCheck. (Timo)<br />
* Fix comments and reduce code complexity. ([[Timo Kreuzer]])<br />
* MiAddressToPte translates a virtual address to the corresponding PTE, MiAddressToPde to the corresponding PDE. MiPteToAddress is the inverse of MiAddressToPte and translates from a PTE to the virtual address. MiPdeToAddress broke this scheme and didn't calculate the corresponding virtual adress, but the adress of the page table. Fix this inconsistency by renaming the macro to MiPdeToPte and adding a fixed MiPdeToAddress. All references fixed accordingly. ([[Timo Kreuzer]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Remove useless checks ([[Pierre Schweitzer]])<br />
* Move redundant sum before loop, so it's done only once ([[Pierre Schweitzer]])<br />
* Fix handling of * wildcard ([[Pierre Schweitzer]])<br />
* This fixes failing kmtest tests added in r50614 ([[Pierre Schweitzer]])<br />
* Fix a bug where a spinlock was acquired on not initialized local variable ([[Johannes Anderwald]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Get back "useless checks" (tests show they weren't that useless) ([[Pierre Schweitzer]])<br />
* Prevent code redundancy ([[Pierre Schweitzer]])<br />
* This fixes 4 failing kmtest tests added in r50679 ([[Pierre Schweitzer]])<br />
* Improved * WC handling for both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression ([[Pierre Schweitzer]])<br />
* This fixes all failing tests in kmtest ([[Pierre Schweitzer]])<br />
<br />
=== IO ===<br />
<br />
==== PNPMGR ====<br />
* Check that we got a valid vector back from HAL when translating an interrupt resource ([[Cameron Gutman]])<br />
* Add some debugging messages for failure paths in device resource handling code ([[Cameron Gutman]])<br />
<br />
=== CSR ===<br />
<br />
==== CSRSRV ====<br />
<br />
== SUBSYSTEMS ==<br />
* CSRSS was started with a free address space, and was able to map 0xA0000 into it by luck, because the ReactOS Mm allocator picks address ranges randomly, and it somehow managed to avoid the low 1MB addresses. Were this algorithm to change, or perhaps, were we to implement VADs for VM allocations, the 0xA0000 region might already be allocated (by an early-process-initialization allocation, such as the heap). This is what the flag referenced above was designed for, but it was not used. Using this flag, on the other hand, now makes CSRSS fail, because it attempts to map the RAM into 0xA0000, which fails since you can map a section on top of reserved memory. To work around this Brobdingnagian annoyance, CSRSS simply releases the first MB of memory that SMSS has nicely reserved for it, and then proceeds with the mapping. This fixes the issue of getting 0xA0000 by luck and now guarantees it can be mapped. ([[sir_richard]])<br />
<br />
=== WIN32 ===<br />
<br />
==== CSRSS ====<br />
<br />
===== WIN32CSR =====<br />
* Move PrivateCsrssManualGuiCheck from user32 to win32csr ([[Giannis Adamopoulos]])<br />
<br />
== TOOLS ==<br />
<br />
=== RBUILD ===<br />
* Fix "format not a string literal and no format arguments" build warnings. ([[Eric Kohl]])<br />
<br />
== Uncategorized ==<br />
<br />
=== 0 ===<br />
* Use the full name we get from SearchForExecutable when building the command line for CreateProcess so we get proper name in argv later. ([[Kamil Hornicek]])<br />
<br />
=== ADVAPI32_LSASRV ===<br />
* Prepare LsapValidateDbHandle for access checks. ([[Eric Kohl]])<br />
* Move the functionality of LsaQueryInformationPolicy (advapi32.dll) into the new function LsarQueryInformationPolicy (lsasrv.dll). ([[Eric Kohl]])<br />
* Remove dead code from advapi32.dll. ([[Eric Kohl]])<br />
<br />
=== APPS ===<br />
* Damir Aliev: Properly convert encoding in cmdline tools. ([[Aleksey Bragin]]; {{bug|3487}})<br />
<br />
=== ARMDDK ===<br />
* Define some spinlock functions. ([[sir_richard]])<br />
<br />
=== ASM ===<br />
* Merge asm related changes from cmake branch. ([[Timo Kreuzer]])<br />
* revert r49824 ([[Timo Kreuzer]])<br />
* Add include guards to asm.inc and comment out broken ljmp macro ([[Timo Kreuzer]])<br />
* Add syscalls.inc, containing assembler macros to generate syscall stubs (all supported architectures) ([[Timo Kreuzer]])<br />
* Change the macros to prefix the labels with Nt or Zw depending on whether we build usermode or kernel mode stubs ([[Timo Kreuzer]])<br />
* Create zw.S using the macros ([[Timo Kreuzer]])<br />
<br />
=== CLASSPNP_CDROM_NEW ===<br />
* Remove useless files. ([[sir_richard]])<br />
<br />
=== EXPLORER_NEW ===<br />
* Provide the ability to query version info (needed for task (DavidErceg; {{bug|4386}})<br />
* grouping). (DavidErceg; {{bug|4386}})<br />
* Open a context menu, when a task is right clicked. (greenie; {{bug|4671}})<br />
* Implement resizing the work area. (greenie; {{bug|5846}})<br />
<br />
=== FREELDR_NTFS ===<br />
* Some fixes and addings to the NTFS header. ([[Pierre Schweitzer]])<br />
* To be used later in order to fix NTFS driver in FreeLdr ([[Pierre Schweitzer]])<br />
<br />
=== HEAP ===<br />
* Move on to using a real HEAP_LOCK structure for a heap lock. ([[Aleksey Bragin]])<br />
* Implement kernel-mode counterparts of this lock too. Right now these don't introduce much of a difference, but they are going to be properly used by the new heap manager code. ([[Aleksey Bragin]])<br />
* Fix allocated/free memory fillers to match those Windows uses (winetests) ([[Aleksey Bragin]])<br />
* Add missing coalesce-on-free flag check in RtlCreateHeap ([[Aleksey Bragin]])<br />
* Turn on tail check/pattern filling in RtlAllocateHeap. ([[Aleksey Bragin]])<br />
* Add extra stuff storage support in RtlAllocateHeap and its helpers. ([[Aleksey Bragin]])<br />
* Set win32 statuses where necessary. ([[Aleksey Bragin]])<br />
* Return success in RtlValidateHeap to reduce spam when running winetest. ([[Aleksey Bragin]])<br />
* Roel Messiant: Remove old-style Peb->ProcessHeaps assignment from RTL, it's already done by MM. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix a typo (missing else) between two if branches, which fixes commit routine support. ([[Aleksey Bragin]])<br />
* Properly save requested size if 0 was given (1 should be allocated, but 0 saved as a requested amount). Fixes winetests. ([[Aleksey Bragin]])<br />
* Remove unnecessary dprints. ([[Aleksey Bragin]])<br />
* Set proper heap flags (tail and free checking) in case heap validation is enabled. Fixes another bunch of winetests. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix infinite loop in RtlDestroyHeap if heap contained big blocks. ([[Aleksey Bragin]])<br />
* Implement setting/getting heap user values and flags (very easy provided heap design is now proper). Amount of winetest failures is down to 12 (but 3 crashes in child processes). ([[Aleksey Bragin]])<br />
* Move (and cleanup) private heap definitions and structure to a standalone header file heap.h. It's explicitly included in heap_rewrite.c and heapdbg.c to prevent conflicts with the existing heap manager in heap.c. ([[Aleksey Bragin]])<br />
* Add 64 bit compatibility. ([[Aleksey Bragin]])<br />
* Properly set HEAP_GROWABLE flag if dwMaximumSize is 0 in HeapCreate. Also check for dwMaximumSize validity. Fixes out-of-memory problems when running "heavy" applications like Office 2003 setup with a new heap manager (which actually respects HEAP_GROWABLE flag). ([[Aleksey Bragin]])<br />
* More resource fixes making warnings vanish when built with cmake. ([[Daniel Reimer]])<br />
* RC file fixes for inconsistences shown up by the recent dll work in r49105. ([[Daniel Reimer]])<br />
* Fix RtlQuery/SetHeapInformation prototypes, move them to an appropriate place. ([[Aleksey Bragin]])<br />
* Implement RtlQuery/SetHeapInformation. ([[Aleksey Bragin]])<br />
* Implement in-place block growing. ([[Aleksey Bragin]])<br />
* Amount of winetest heap failures is down to 6 (3 exceptions still happen). ([[Aleksey Bragin]])<br />
* Fix DWORD -> ULONG in function definitions too. ([[Aleksey Bragin]])<br />
* Implement heap validation support. ([[Aleksey Bragin]])<br />
* Add ability to dynamically allocate UCR descriptors when preallocated amount is exhausted. ([[Aleksey Bragin]])<br />
* Fix a few bugs in RtlpFindAndCommitPages and in deactivated RtlpDecommitFreeBlock. ([[Aleksey Bragin]])<br />
* Enable free blocks decommitting. ([[Aleksey Bragin]])<br />
* New heap manager would now be ready to replace the old one. ([[Aleksey Bragin]])<br />
* Add special debug heap function declarations and stubs. ([[Aleksey Bragin]])<br />
* Add a useful inline for detecting whether a special or normal heap is going to be used. ([[Aleksey Bragin]])<br />
* Implement parameters validation ("DebugHeap") in all used RTL heap APIs. Winetests failures down to 4. ([[Aleksey Bragin]])<br />
* Hackfixed build by stubbing RtlpValidateHeapHeaders(), RtlpValidateHeapEntry() and hackplementing RtlpValidateHeap(). ([[Pierre Schweitzer]])<br />
* To be properly fixed. ([[Pierre Schweitzer]])<br />
* Fix a typo which lead to incorrect flags being forced. Fixes last remaining major winetest failures (only 1 GlobalAlloc/Free implementation related one is left to be fixed). ([[Aleksey Bragin]])<br />
* Time has come to get rid of a slightly modified implementation of WINE's heap, which is a hack based on Windows 95's heap implementation, itself a hack of DOS memory management. It supported 3 out of the 18 possible NT Heap Flags, did not support custom allocation/deallocation routines, and was about 50-80x slower with fragmentation rates up to 500x higher when compared to NT's LFH (WINE is lucky because the advanced NT Heap features are used in kernel-mode usually, not in user-mode, and they are crossing their fingers for this being the same). Several high-end SQL/Database applications would significantly benefit from custom heap features provided by NT. Not to say about removing crappy support for a custom Commit routine and crappy support for User-defined flags and the User-defined value. ([[Aleksey Bragin]])<br />
* So, the glorious moment for a new heap manager, which is (to remind you) a totally new heap manager, resembling real NT heap manager, based on data structures similar to Windows 2003 and Vista+'s heap structures, supporting advanced heap flags (e.g. useful for debugging), having substantially lower fragmentation rates (and thus speed and reliability), having native support for user-defined flags and user-defined values, also native support for a custom commit routine, which is very important for trunk's win32 subsystem. It also reserves, commits, decommits and frees memory on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary. Not to say about support for per process heaps, with a proper lock, and a further support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* Yeah, I'm not a fun person :D ([[Aleksey Bragin]])<br />
* Fix a typo (assignment) in the ASSERT, spotted by Johannes Anderwald. ([[Aleksey Bragin]])<br />
* Peer review rocks. ([[Aleksey Bragin]])<br />
* RtlpInsertFreeBlockHelper: Don't validate the Previous Size of the next Heap Entry when inserting a free Heap Entry into a free list. Should solve bug #5843 and may affect bug #5857. ([[Roel Messiant]])<br />
* All callers of this function already perform this check, except for RtlpInsertFreeBlock, a function used during Heap Segment creation/expansion. ([[Roel Messiant]])<br />
* RtlpInsertFreeBlock creates multiple free Heap Entries (using the helper function) if the free space is too big to be contained in a single Heap Entry. ([[Roel Messiant]])<br />
* In such a case however, it creates a Heap Entry and calls the helper before creating the next Heap Entry, which triggers this assert. ([[Roel Messiant]])<br />
* FontSmoothing" system parameter registry key should be REG_SZ (as it is in Windows, and as other SPIs are). ([[Aleksey Bragin]])<br />
<br />
=== INTRIN ===<br />
* Implement _mm_sfence, _mm_lfence, __faststorefence (for amd64) ([[Timo Kreuzer]])<br />
* Don't use __sync_synchronize() for _ReadWriteBarrier, as it issues an mfence instruction and this is not what we want ([[Timo Kreuzer]])<br />
* Remove "BUGBUG" comment, because the fact that _ReadBarrier and _WriteBarrier are full (compiler) barriers isn't critical. ([[Timo Kreuzer]])<br />
<br />
=== NCI ===<br />
* Ue macros for the other nci generated files, too and delete nci-tool. ([[Timo Kreuzer]])<br />
<br />
=== NPFS_KERNEL32 ===<br />
* Switch back to the old pipe wait code but keep the new code in place (disabled). ([[Eric Kohl]])<br />
<br />
=== NTOS ===<br />
* Lookup the special labels from above when initializing the System DLL. Only lookup INT2E vs SYSENTER on x86, other architectures don't need a stub. ([[sir_richard]])<br />
* Bitmap resources start at index 1, not 0. Also make sure we don't go past the maximum IDB_ resource index for no reason, and check the size of the resource instead of assuming it's going to be one page. ([[sir_richard]])<br />
* Stop using MiInsertInListTail and MiRemoveHeadList in the deprecated ReactOS page functions. Those two functions do not adequately support the semantis needed for page insertion/removal and should've never been used. MmAllocPage now uses MiRemoveAny/ZeroPage, and MmDereferencePage uses MiInsertPageInFreeList. Should help with some corruptions. More is coming. ([[sir_richard]])<br />
* Don't use dangerous MiRemoveHeadList in MDL page allocation, use MiRemoveAnyPage instead. ([[sir_richard]])<br />
* Don't repurpose pages from the zero/free page list without actually unlinking the page first! This should fix even more corruptions. ([[sir_richard]])<br />
* Adding colored page lists means we need to start using the OriginalPte field as a forward/back link. This is shared with AweReferenceCount, which ReactOS uses as the RMAP list head. However, RMAPped pages shoudl never be free/zero, and non-free-zero pages will never have a color backlink in OriginalPte, so it should theoretically be safe to do this. However, it's possible for the RMAP "get" function to be called on a free/zero page (which would normally return NULL), but with color chaining enabled, the "get" function would misinterpret the backlink as an RMAP entry. Therefore, we overload the ParityError bit to signify "there is an RMAP". The get/set functions now handle this, and the color linkage will ASSERT this later. This way, a colorlink with ParityError == FALSE is not treated as an rmap list head. ([[sir_richard]])<br />
* Remove MiZeroPage, use MiZeroPhysicalPage instead. They work pretty much the same except the needless raise to DISPATCH_LEVEL. ([[sir_richard]])<br />
* Get rid of the messed up MiMapPageToZeroInHyperSpace which was hacking into MiMapPagesToZeroInHyperSpace. Now MiMapPagesToZeroInHyperSpace is properly implemented to use chained PFNs, and the MmZeroPageThread code has been modified to correctly use the new mechanism. ([[sir_richard]])<br />
* Zero page mapping now happens at PASSIVE trough MiMapPAgesToZeroInHyperSpace, not DISPATCH anymore. ([[sir_richard]])<br />
* More fixes are coming to remove the remaining MiRemoveHeadList and rewrite the zero page loop. Should fix more possible corruptions. ([[sir_richard]])<br />
* One last fix to the zero page thread before we move to ARM3: use MiRemoveAnyPage instead of dangerous MiRemoveHeadList. The code works on the assumption (validated by Windows through a bug check) that MiRemoveAnyPage always returns the first free page, and we also manually grab the first free page, and compare this is true. Nice way to detect PFN database corruption. ([[sir_richard]])<br />
* Fix MiInsertZeroAtBack to increment the MmAvailablePage count, since MiRemoveAnyPage decrements it (MiRemoveHeadList did not). ([[sir_richard]])<br />
* Zeroed pages should go at the front, not the back of the zero list. Going to the back is a special boot-only case on MP, which isn't supported. Implement zero-only version of MiInsertPageInList, remove MiInsertZeroPageAtBack. ([[sir_richard]])<br />
* Remove many other deprecated functions. Physical memory consistency should now be higher than in the past. ([[sir_richard]])<br />
* The RMAP entry only has a valid process if the address is in user-space, otherwise process is NULL. Only attempt to acquire the process rundown lock if a process actually exists. Fixes crashes caused by 48905. ([[sir_richard]])<br />
* Switch to using an ARM3, much more correct MmZeroPageThread. Stub support for discarding sections and listening to the Power Manager Idle Timer. ([[sir_richard]])<br />
* Use a synchronization (auto-reset) instead of notification event for the zero page thread, this way we don't have to reset it manually and query its state. Instead, a boolean MmZeroingPageThreadActive is checked instead. ([[sir_richard]])<br />
* Once we switch to colored lists, major improvements can be done for speed. ([[sir_richard]])<br />
* Write missing color code in certain PFN functions, and fix existing code where needed. Add some debugging. For now, turned off until testing succeeds. ([[sir_richard]])<br />
* Redocument which MMPFN fields are violated by ReactOS-internal values. This has gotten much better than before. ([[sir_richard]])<br />
* Fix straggling bugs in color table algorithms. ([[sir_richard]])<br />
* Enable color tables! Right now pages are merely entering and exiting the tables, the tables themselves are never used for allocations. This will change with further commits. ([[sir_richard]])<br />
* Add MiRemoveZeroPageSafe helper function, when a zero page is required, but the inline zeroing of MiRemoveZeroPage is not. This function will only try grabbing a zero page if one exists, otherwise a free page will be grabbed and zeroed with custom code of the caller's choosing. ([[sir_richard]])<br />
* Add concept of process color and system color. Compute correct color to use whenever requesting a page. ([[sir_richard]])<br />
* Uncondtionally enable the color code when inserting/removing pages. ([[sir_richard]])<br />
* For now, when requesting a page, colors are still ignored, and the global PFN lists are scanned instead. If there are no regressions, we are one patch away from that. ([[sir_richard]])<br />
* Fix a bug in MiRemoveAnyPage: it was always checking the colored zero page list, instead of checking the colored free page list the second time around. ([[sir_richard]])<br />
* Add definition for size of a page directory, and size of all page directories required per process (some architectures have more than one page directory per process/address space). ([[sir_richard]])<br />
* MiSetConsumer no longer achieves anything. Remove it. ([[sir_richard]])<br />
* Use SYSTEM_PD_SIZE instead of assuming that this is PAGE_SIZE, since this is not the case on (future) ARM and (current) AMD64 ports. ([[sir_richard]])<br />
* Remove some magic numbers in the pool code, using PTE_COUNT, MiAddressToPde, when needed. Also, the expansion code uses PDEs, not PTEs, so differentiate this, because on some systems (ARM), there are different structures for both. ([[sir_richard]])<br />
* Use MI_WRITE_INVALID_PTE. ([[sir_richard]])<br />
* ARM3 paged pool now works, the expansion bug has been fixed (and the code is more portable). Expect to see it gradually enabled soon. ([[sir_richard]])<br />
* He's climbing in yo PFN database, he snatching yo pages up, tryin to page em so y'all need to hide your pool hide your cache, and hide your working set cuz they grabbin' all the pages out there. We gonna page you, we gonna page you, so you can run and fault on that, run and fault on that, home boy, homeboy, home homeboy. ([[sir_richard]])<br />
* Enable ARM3 Paged Pool and remove all related deprecated code. Install tested on several VMs, it might cause new regressions. Let's fix them before 0.3.13 instead of reverting. ([[sir_richard]])<br />
* This is why you shouldn't let Antoine Dodson commit code. ([[sir_richard]])<br />
* Move all the Nt*Section API interfaces into ARM3 and rewrite most of the code to perform the same parameter validation and input checks as Windows does. Support all protection masks. Use correct section object access mask. Use appropriate SEH where needed. Pass 0-initialized local instead of NULL when needed. Don't assume certain parameters are OPTIONAL when they are not. Don't return SEH failures at the end of the system call, the kernel usually returns the result of the system call proper. Call DbgkMapViewOfSection in scenarios where it would not have gotten called before. Protect against certain kinds of kernel-mode access from user-mode. ([[sir_richard]])<br />
* Move unimplemented Mm*Section APIs into ARM3 as well. ([[sir_richard]])<br />
* Go ahead and now fill out the OriginalPte field for PFNs initialized with MiInitializePfn(ForOtherProcess). They should only belong to ARM3 so they'll never have SwapEntry/RMAP associated with them. This functionality is important for future Prototype PTE support, among other things, as it lets us get the original PTE value written for a given PFN entry. ([[sir_richard]])<br />
* Define MI_MAKE_PROTOTYPE_PTE macro to make a real prototype PTE from a PTE. Define counter-part MiProtoPteToPte to recover the true PTE from a given Prototype PTE. ([[sir_richard]])<br />
* Define MI_PTE_LOOKUP_NEEDED instead of using 0xFFFF. The name was found in checked build assertion strings. ([[sir_richard]])<br />
* Add MM_VIEW (used for System-mapped Section Views) and MM_SESSSION (used to define the system/session view mappings) structure definitions. ([[sir_richard]])<br />
* Initialize system views by calling MiInitializeSystemSpaceMap. This sets up the lock, bitmap, and hash table. ([[sir_richard]])<br />
* Implement/fixup the code paths during page faults that are needed to succesfuly resolve a demand page associated with a pagefile backed ARM3 section (which uses Prototype PTEs). A lot of the code was already there but assumed we were using Prototype PTEs only for the shared user data page. By combining that code with the typical demand-zero fault code, we obtain the needed paths. For now, only tested with ARM3 sections that are page-filed backed (not image or data-file backed) mapped into system view space (MmMapViewOfSectionInSystemSpace), not user-mode addresses (which need VADs). The code to actually create/map these doesn't exist in trunk yet, the purpose of this checkin is to test the new fault changes to make sure they don't cause negative effects to already-working faults. ([[sir_richard]])<br />
* Implement MmCreateArm3Section, which creates ARM3-backed sections, but only for pagefile-backed memory at the moment. It uses MiCreatePagingFileMap and creates the expected Segment, Subsection, ControlArea and Section objects described in Windows kernel internals literrature. It's surprisingly easy and only takes 200 lines of code. ([[sir_richard]])<br />
* Implement MiMapViewInSystemSpace, all it took was another 250 lines and we can now map ARM3 sections into memory. Accessing them causes a fault, which we correctly handle with the prototype PTE fault code. ([[sir_richard]])<br />
* Added a bogus allocation flag that can be used with Nt/MmCreateSection and MmMapViewInSystemSpace to take the ARM3 path instead. Only for internal testing at the moment. ([[sir_richard]])<br />
* Now we need to look at how to allow mapping these into user-space as well... ([[sir_richard]])<br />
* Nobody reads/checks for MEMORY_AREA_CACHE_SEGMENT. Might as well just call this zero (no logical change). ([[sir_richard]])<br />
* We don't support SEC_BASED for ARM3 sectios either, ASSERT that. ([[sir_richard]])<br />
* Nobody actually writes TRUE for WriteCopyView in the MEMORY_AREA data structure, so this field is useless (always false). Remove all instances of its use. ([[sir_richard]])<br />
* Nobody uses MEMORY_AREA_SYSTEM anymore, call these MEMORY_AREA_OWNED_BY_ARM3 for now. We'll have to sync this code with x86 later anyway. ([[sir_richard]])<br />
* Use the Spare flag in the VAD as a ReactOS/MemoryArea specific flag to signify that this VAD is associated with a MEMORY_AREA and should be unlinked at process exit, but not freed. This is because MemoryAreas themselves are cleaned up later, and in the future their associated VADs (not yet in Trunk) will also be parsed. In the process death scenario, those VADs will be freed, but not unlinked (since it would already have been unlinked). ([[sir_richard]])<br />
* Add a _64K macro definition so we can stop typing out 65536 all the time. ([[sir_richard]])<br />
* Delete deprecated handling of MEMORY_AREA_IO_MAPPING. Delete all MEMORY_AREA definitions except the ones for SEGMENT_VIEW and VIRTUAL_MEMORY. All other memory is now owned by ARM3! ([[sir_richard]])<br />
* Delete WriteCopyView flag from MEMORY_AREA (unused, and was taking up 4 bytes due to alignment), and add a Vad pointer (takes up 4 bytes -- no actual size change). ([[sir_richard]])<br />
* For VM and Section MEMORY_AREAs mapped in user-mode, build a "fake" VAD and insert it into the VAD Root of the Process. This means there is now a consistent view between ARM3 and RosMm in terms of user-mode address space layout, which will come in handy later. ([[sir_richard]])<br />
* Destroy the MEMORY_AREA's VAD when the MEMORY_AREA itself is deleted. Watch out for the scenario explained in a previous check-in, where the VAD was caught by the MmCleanProcessAddressSpace vad-cleanup-loop. ([[sir_richard]])<br />
* Implement MiInsertVad to restore the old functionality of MiInsertNode when the current parent and insertion result is not yet known. It obtains the information and calls MiInsertNode. ([[sir_richard]])<br />
* Add the tiny little bit of code required to correctly handle user-mode faults on ARM3 mapped sections in certain limited scenarios. ([[sir_richard]])<br />
* Implement ARM3 version of MmMapViewOfSection, only for ARM3 pagefile-backed sections, and without any special flag support. Tested and works great, with the new pagefault code correctly finding the Prototype PTE for the VAD. ([[sir_richard]])<br />
* Make every VAD insert also create a MEMORY_AREA. Now the two address space views should be completely synchronized and we can try removing the hack that was done for PEB/TEB support (which will remove the 200 thread regression). ([[sir_richard]])<br />
* Implement MiGetNextNode and MiFindEmptyAddressRangeInTree. ([[sir_richard]])<br />
* When shutting down, call Cc to flush the dirty cached pages, otherwise these might've gotten lost (and lead to lost/corrupted data on disk). ([[sir_richard]])<br />
* Don't assume that CcFlushDirtyPages will run with APCs disabled. Go ahead and actually enter/leave a critical region (Acquire/ReleaseForLazyWrite depend on this). The guarded mutex does disable APCs, but it's released when the actual flush happens. ([[sir_richard]])<br />
* Delete a bunch of junk, 5 less files in Mm now (also moved some functions around). Delete unused functions where found. ([[sir_richard]])<br />
* The modified page writer should run at a high priority such as 27, not in idle mode at priority 1 -- otherwise dirty pages never get flushed out. ([[sir_richard]])<br />
* Reimplement MmGetFileNameForAddress, MmGetFileNameForSection, MmGetFileObjectForSection to also support ARM3 sections. Shouldn't affect anything other than the user-mode debugging support. ([[sir_richard]])<br />
* High-level interface fixes to NtAllocateVirtualMemory/NtFreeVirtualMemory: ([[sir_richard]])<br />
* Validate MEM_LARGE_PAGES, MEM_PHYSICAL flags. Check for permission to use MEM_LARGE_PAGES. ([[sir_richard]])<br />
* Validate protection mask. ([[sir_richard]])<br />
* Validate MEM_RELEASE and MEM_DECOMMIT. ([[sir_richard]])<br />
* Perform correct SEH in NtFreeVirtualMemory. ([[sir_richard]])<br />
* Protect against overflows past VAD/User address ranegs. ([[sir_richard]])<br />
* Only reference the process by handle if this isn't already the current process. ([[sir_richard]])<br />
* If this isn't the current process, attach to it during the duration of the VM operation. ([[sir_richard]])<br />
* Temporary debugging. ([[sir_richard]])<br />
* Implement monitor bitmap support for the display dialog (Carlo; {{bug|3158}})<br />
* Fix incorrect codepage values (Carlo; {{bug|3158}})<br />
* Look for applets in windows dir as well as system dir (Carlo; {{bug|3158}})<br />
* Fix bugs in the VAD algorithms, we should be rounding up, not down. ([[sir_richard]])<br />
* My attempt at making bugchecks a thing of the past has failed, someone has caught the typo. Bugchecks will now happen in ReactOS again instead of being ignored. Maybe you can "forget" to merge this one with the release branch? ;-) ([[sir_richard]])<br />
* Add support for user-mode VAD faults on page tables (just a couple lines of extra code). ([[sir_richard]])<br />
* Add support for user-mode VAD demand zero faults. ([[sir_richard]])<br />
* Remove broken ASSERT. ([[sir_richard]])<br />
* Hackfix a hack. Should get rid of the recent VAD assert in user32/bpp changes. ([[sir_richard]])<br />
* Fix copy/paste error. ([[sir_richard]])<br />
* Add MmProtectToValue array to convert MM/PTE protection values to Win32 protection flags. ([[sir_richard]])<br />
* Handle faults on non-demand-zero PTEs (and/or demand-zero PTEs that are not READWRITE (such as EXECUTE_READWRITE)). ([[sir_richard]])<br />
* Use MI_SET_PFN_DELETED where we missed it. ([[sir_richard]])<br />
* Implement support for deleting user-mode pageable VM addresses. Now when cleaning up the process address space, MiDeleteVirtualAddresses is called for the VADs, so this will now actually free the PEB/TEB pages that were previously getting leaked for each thread/process (a known regression I introduced when moving to VADs for PEB/TEB). ([[sir_richard]])<br />
* Fix brainfart (an interesting bug we would've never hit, but a bug nevertheless). ([[sir_richard]])<br />
* Complete the VAD-to-MAREA Synchronization hack by removing fake MAREAs that were added when inserting real VADs. To do this, we have to track the fake MAREA associated with a VAD, so we overload the FirstProtoTypePte field in the VAD, if this is NOT a section VAD (which we don't use yet). We'll figure something out for section VADs later. ([[sir_richard]])<br />
* Now that VAD and MAREA views are synchronized, remove the VAD limit and let VADs be created at any address. Also do not create an arbitrary 16MB VAD memory area anymore. This basically now allows for as many PEB/TEBs as can fit in the address space, fixing the recent known regression that limited the number of threads a process could have. ([[sir_richard]])<br />
* Store the protection mask in the Fake VADs as well, we can read/convert this from the MAREA protection value. ([[sir_richard]])<br />
* Reimplement NtQueryVirtualMemory to use VAD information instead. Even though Alloc/Free are still MAREA-based, the fake VADs we build ought to be enough to make the query API work for certain limited scenarios. Only some paths are implemented and it's lacking SEH, but it's good enough for the install/boot requirements. If there are any regressions, please file bugs. ([[sir_richard]])<br />
* Remove the Bavarian hack, I no longer think it is needed. ([[sir_richard]])<br />
* Remove the "35314 sginsberg /* REACTOS Mm Hack of Doom */". Apocalypse averted? ([[sir_richard]])<br />
* Clean up Mm initialization, there is now no-more RosMM stuff done in Phase 0 of MmInit, only ARM3 runs. The kernel address space and memory areas are only initialized in Phase 1, because that's where sections are started up, and they're the only thing other than VM which still use memory-areas. ([[sir_richard]])<br />
* Implement MiDecrementReferenceCount and rewrite large parts of the ProbeAndLock/Unlock MDL API to fully use ARM3 APIs, dropping MmReference/DereferencePage behind. ([[sir_richard]])<br />
* Fix many MDL API bugs: correctly check for I/O pages, use LIST_HEAD instead of -1, track system-wide locked pages, use the process working set lock instead of the address space lock, add check for cross-ring MDL mappings, and make some small optimizations. ([[sir_richard]])<br />
* Make some more fixes in MmAllocatePagesForMdl, MmFreeMdlPages to make the PFN entries more "correct". ([[sir_richard]])<br />
* Had a little breakthrough: instead of complicating our lives and hiding certain ReactOS-Mm fields inside legitimate ARM3/MMPFN fields, differentiate between "legacy" (RosMm) and ARM3 pages. The legacy allocator (MmAllocPage/MmRequestPageMemoryConsumer) will use the non-paged pool to allocate a MMROSPFN add-on (8 bytes), in which the RMAP list head and SWAPENTRY are stored. When a legacy "free" is done, this data is deleted. Additionally, we can now tell apart between ARM3 and RosMm pages, so appropriate ASSERTs have been added to make sure the two never cross paths (which should safely let us use all the PFN fields now and implement working sets, etc...). I don't know why I didn't think of this sooner. ([[sir_richard]])<br />
* Get rid of MC_NPPOOL and MC_PPOOL memory consumers since those are not managed by RosMm anymore. Use MC_SYSTEM for the page table stuff that RosMm still handles, and keep MC_USER and MC_CACHE for the current Section/VirtualMemory/Cache RosMm code. ([[sir_richard]])<br />
* Implement the MAREA<->VAD hack for section VADs as well. ([[sir_richard]])<br />
* Use allocation attribute 0x1 instead of 0xC0000000 to let RosMm know this is an ARM3 section. 0xC0000000 is actually a valid combination of SEC_ flags, 0x1 is illegal and thus recognized. ([[sir_richard]])<br />
* Add support for unmapping ARM3 sections, destroying segments and control areas, and clearing out subsection PTEs. ([[sir_richard]])<br />
* Add support to MiDeletePte/MiDeleteVirtualAddresses to handle Section VADs. ([[sir_richard]])<br />
* Add support to MiDeletePte to handle valid, prototype PTEs. ([[sir_richard]])<br />
* Add MEM_TOP_DOWN support to ARM3 section code. ([[sir_richard]])<br />
* Add support for unmapping currently mapped ARM3 section views at process termination. ([[sir_richard]])<br />
* Use the new ARM3 section code for mapping the NLS section in the system (tests the system-view mapping code) and in each new process (tests the data-mapping code). Section is correctly unmapped at process termination time! ([[sir_richard]])<br />
* C Pointer Math will bite even the most experienced programmer in the ass. Fix wrong calculation which led to ASSERTs and memory corruption (since the last revision). ([[sir_richard]])<br />
* Fix multiple math/logic bugs in the PrototypePTE paths. Caught while trying to switch the Win32k GDI Handle Table to ARM3 sections. ([[sir_richard]])<br />
* Go back to using RosMm for the NLS section since supposedly this causes issues on some systems. This is the only actual change in r206/208/209, so if Caemyr's data is correct, this fill fix it. ([[sir_richard]])<br />
* Protect Arty's changes with #ifdef NEWCC, otherwise this code ASSERTs and crashes as soon as a pageout operation is required. Since your advanced test/regression systems boot into configurations with 1GB+ RAM, you never even test these paths and one could put an ASSERT(FALSE) and you wouldn't even notice it (as proven). ([[sir_richard]])<br />
* Remove merge artifact from newcc. ([[sir_richard]])<br />
* Make sure we don't get a user-pointer back from MmMapInSystemSpace. ([[sir_richard]])<br />
* Sanity checks when dealing with creating/cleaning process address space. ([[sir_richard]])<br />
* Set the VmDeleted flag when the process address space is being nuked. ([[sir_richard]])<br />
* Fix typos. ([[sir_richard]])<br />
* Assert nobody tries to touch the sharecount of a non-ARM3 page. ([[sir_richard]])<br />
* ASSERT nobody tries to put ARM3 pages into the MC_USER LRU. ([[sir_richard]])<br />
* You can't just set MDL_LOCKED_PAGES without actually... locking the page. Add a MmReferencePage when doing so, so when that a paging read/write IRP gets completed (and MmUnlockPages is called), the page gets handled correctly. Can now boot with 64MB RAM without ASSERTs. ([[sir_richard]])<br />
* Fix one of the MDL code paths that isn't getting called frequently. ([[sir_richard]])<br />
* Fix a bug in MmFindGapBottomUp which could make it return an address lower than what the caller said should be the lowest address. ([[sir_richard]])<br />
* Fix a bug in the MDL Code which would dereference a completely bogus page frame index. ([[sir_richard]])<br />
* Misc typo and cleanup fixes. ([[sir_richard]])<br />
* CR3 should be PDE_BASE, not PTE_BASE! ([[sir_richard]])<br />
* Define DemandZeroPte. ([[sir_richard]])<br />
* Define an array of MI_USAGE integers to track what a PFN is used for. ([[sir_richard]])<br />
* Extend the MMPFN structure for ReactOS-specific PFN tracing mechanism. ([[sir_richard]])<br />
* Add macros to track page usage and process/extra-data (not yet used). ([[sir_richard]])<br />
* Add page-tracking macro calls wherever needed. MI_TRACE_PFNS is still off, though, so this code won't be called. ([[sir_richard]])<br />
* Mark all initialization functions INIT_FUNCTION. ([[sir_richard]])<br />
* This will save ~280KB of RAM once we dump INIT from RAM in a future patch. ([[sir_richard]])<br />
* Display current free RAM at certain checkpoints. ([[sir_richard]])<br />
* Implement the idle loop in C. ([[sir_richard]])<br />
* Make idle loop portable. Can be moved out of /i386 now. ([[sir_richard]])<br />
* Context switch in C instead of ASM. Can be made more portable, but it's a good start. Unless Timo rewrites it. ([[sir_richard]])<br />
* KiDispatchInterrupt (the DPC handler) in C, instead of ASM. ([[sir_richard]])<br />
* Optimize new context switching code to avoid wasted cycles. ([[sir_richard]])<br />
* Assign a working set to the system process and correctly initialize its address space. ([[sir_richard]])<br />
* Assign the working set list address, system-wide, but per-process (in hyperspace). ([[sir_richard]])<br />
* Give every process its working set page, and store it. Build a bogus working set list (MMWSL). ([[sir_richard]])<br />
* Use the process working set list (MMWSL) to track page table references during faults, just as Windows does. ([[sir_richard]])<br />
* Correctly initialize the colored page list heads and assert their validity. ([[sir_richard]])<br />
* Fix bugs in MiAllocateContiguousPages. Fixes an ASSERT Caemyr was seeting a lot (the cont-able ASSERT). ([[sir_richard]])<br />
* Part 1 of fixes: For some reason beyond me, I had abbreviated ([[Art Yerkes]])<br />
* MiCowSectionPage to always assume CoW rather than always not ([[Art Yerkes]])<br />
* CoW for cache sections. ([[Art Yerkes]])<br />
* Make sure we're looking for cache type sections rather than ([[Art Yerkes]])<br />
* as we were in the branch) data file sections. More needed. ([[Art Yerkes]])<br />
* Fix another bug in the continuous memory allocation code, which would go off-by-one while looping the PFN entries for the allocation, and corrupt the PteFrame/PteAddress of an unrelated PFN entry. If this PFN was in the active lists, it would cause page table leaks and faults, if the page was on a free list, it would override the colored list backlink and corrupt the list, later causing unlinked pages to remain linked to the list. ([[sir_richard]])<br />
* Fix a bug in MiRemovePageByColor which caused corruption of the page list and could lead to crashes, re-use of freed memory, assuming active memory was free, etc. ([[sir_richard]])<br />
* Use MI_PFN_ELEMENT in this code, as the extra checks done by MiGetPfnEntry are irrelevant and slow things down. ([[sir_richard]])<br />
* Remove some old ReactOS hacks before we had MMROSPFNDATA. ([[sir_richard]])<br />
* Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the way page allocations are given out and creates a less uniform physical memory layout. The fact this now works means that the PFN lists are finally now sane. ([[sir_richard]])<br />
* Bugfixes for the I/O Controller Object. ([[sir_richard]])<br />
* Define portable MI_MAKE_ACCESSED_PAGE macro. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to account ARM, where the PDE and PTE formats are different. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to use portable PTE macros instead of hard-coding x86-only fields. ([[sir_richard]])<br />
* Don't put boot.s in "arch" anymore, it's part of "boot" now. ([[sir_richard]])<br />
* Erm, why is it that the ARM compiler detects this obvious bug, but x86 does not? Fix missing ShareCount zeroing when unlocking an MDL. ([[sir_richard]])<br />
* Errr... wow! Another one caught by ARM GCC. I can swear x86 GCC used to catch these. Did someone change warning settings? Anyhow, fix a *f++ which increments the pointer, not the value INSIDE the pointer (*f)++. Fixes MiDeleteSystemPageableVm. ([[sir_richard]])<br />
* Fix incorrect assumptions that a PDE == PTE which have crept up throughout new ARM3 code. ([[sir_richard]])<br />
* Fix a couple more unportable directly "Hard" PTE field accesses, instead of using portable MI macros. ([[sir_richard]])<br />
* Cleanup some of the pool code that had really messed up PDE vs PTE. ([[sir_richard]])<br />
* Define the number of page directoty levels for ARM. ([[sir_richard]])<br />
* Comment out some ARM3 code that won't be needed now that most of the x86 code is in C. ([[sir_richard]])<br />
* Add MiGetPteOffset for ARM. All of the kernel compiles, but does not link yet. ([[sir_richard]])<br />
* Fix up ARM code to match recent ARM3 changes. ([[sir_richard]])<br />
* Do not use initguid inside every single file to zillionplicate the GUIDs! Why doesn't the x86 linker catch this?!!? ([[sir_richard]])<br />
* Some more ARM build and linker fixes, moving some of the new x86 C code into ARM. This should really be shared later. ([[sir_richard]])<br />
* Totally broke thread context switching on ARM for now. It's a Good Thing. ([[sir_richard]])<br />
* Fix 16-bit interlocked operations on ARM (GCC doesn't provide built-ins). ARM should build now. ([[sir_richard]])<br />
* STATUS_SUCCESS is not the only succesful return code. ([[sir_richard]])<br />
* Seems like cpsr_c doesn't work in this case? Need to investigate. Put an infinite loop in the entrypoint on ARM. ([[sir_richard]])<br />
* Roel Messiant: Fix NtQueryObject to return the required buffer size if the buffer provided was too small. Unimplemented paths behaviour is preserved. ([[Aleksey Bragin]])<br />
* Check that MaximumSize is valid value if the section is being backed by paging file. ([[Michael Martin]])<br />
* Always initialize TrapFrame segment selectors in KiEnterTrap, because further C code relies on at least TrapFrame->SegFs being correct. Running Arwinss on VirtualBox exposed this bug. ([[Aleksey Bragin]])<br />
* I wouldn't find solution for this bug without Timo's great help! ([[Aleksey Bragin]])<br />
* Remove IMAGE_FILE_MACHINE_NATIVE and IMAGE_FILE_MACHINE_ARCHITECTURE definitions, use only the former ([[Timo Kreuzer]])<br />
* Fix incompatibility with newer KiEnterTrap implementation. Should fix spontaneous issues I possibly introduced with my previous commit, and finally fixes that VirtualBox issue. ([[Aleksey Bragin]])<br />
* Fix memory region size calculation in MemoryBasicInformation in certain cases. Spotted by Michael Martin. ([[Aleksey Bragin]])<br />
* Fix a typo in region size calculation of special memory areas, which unbreaks OllyDbg & co. Thanks Michael Martin for the hint. ([[Aleksey Bragin]]; {{bug|5692}})<br />
* Do the required flush when the last reference to a cache stripe is released. ([[Art Yerkes]])<br />
* The installer now completes given enough ram in NEWCC=1, and writes an ([[Art Yerkes]])<br />
* understandable FS. There's at least one more problem preventing the ([[Art Yerkes]])<br />
* resulting installation from booting however. ([[Art Yerkes]])<br />
* Fix a bug in rmap where we were checking the next (unfortunately named ([[Art Yerkes]])<br />
* current) rmap for a segment membership. ([[Art Yerkes]])<br />
* Fix a mistake in cache trim. ([[Art Yerkes]])<br />
* ifdef detection of DirectMapping in section in NEWCC mode in page out. ([[Art Yerkes]])<br />
* Fix copypasta, thanks Victor! ([[Aleksey Bragin]])<br />
* Greatly simplify and fix the incorrect and overcomplicated if condition in IoIsOperationSynchronous(), based on MSDN description. Bug spotted, fix tested by Pierre. ([[Aleksey Bragin]])<br />
* Temporary bring back the old boot image until I or sir_richard commit a proper fix. ([[Aleksey Bragin]])<br />
* Reduce PDE/PTE confusion a little more. ([[Roel Messiant]]; {{bug|5791}})<br />
* MiQueryMemoryBasicInformation: Fall back on MEMORY_AREA data in sections until the MM rewrite also covers these. for more info. ([[Roel Messiant]]; {{bug|5791}})<br />
* Complete rewrite reserving and releasing of System PTEs. ([[Roel Messiant]])<br />
* The previous algorithm, in a nutshell, worked as follows: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by their base address. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping). ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Problems with the previous algorithm: ([[Roel Messiant]])<br />
* While the idea is that all PTEs in clusters are zeroed, which requesters rely on, cluster bookkeeping isn't zeroed on merges. ([[Roel Messiant]])<br />
* The side effect of this was that PTEs that weren't really zeroed were randomly delivered to requesters. ([[Roel Messiant]])<br />
* 99% of the time, allocations are serviced using the first cluster in the list, which is virtually always the first suitable cluster. ([[Roel Messiant]])<br />
* This is so because the ordering is based on the base address of the clusters, and allocations are serviced using the cluster tail. ([[Roel Messiant]])<br />
* Because the first cluster starts out as the whole pool, and the pool is quite sizable, it can deal with virtually allocations.. for a while. ([[Roel Messiant]])<br />
* A corollary of the previous point is *massive fragmentation* because: as long as an allocation isn't released back into the pool, ([[Roel Messiant]])<br />
* the space of previous allocations that have been released isn't reused because the first cluster can't suck them up, and enough allocations remain in use. ([[Roel Messiant]])<br />
* The combined effect of the previous two points: a first cluster that effectively shrinks mostly, with small clusters forming behind it. ([[Roel Messiant]])<br />
* Once the first cluster has shrunk far enough (which of course takes a long time), 90% of the space may still be free, scattered in mostly small clusters. ([[Roel Messiant]])<br />
* This would make decent sized allocations fail because of the heavy fragmentation. ([[Roel Messiant]])<br />
* An implementation detail that caused the head of the list to be treated as a genuine cluster when the first cluster in the list was too small. ([[Roel Messiant]])<br />
* The algorithm (as explained above) made this case quite unlikely until your system has been running for a while, after which it could happily ([[Roel Messiant]])<br />
* corrupt list heads of other pools, depending on where the list head is with respect to its own pool. ([[Roel Messiant]])<br />
* Empirically obtained data revealed that after just *booting to the desktop*, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained roughly 70 (unusable) clusters, blocking 15 to 20% of the pool. These figures increased to roughly 100 ([[Roel Messiant]])<br />
* clusters and 30 to 35% after opening a foxy browser and using it to visit a mathematically inspired search engine. ([[Roel Messiant]])<br />
* The same data also showed that over 95% of allocations requested just a single PTE, and a noticable allocation spike ([[Roel Messiant]])<br />
* also occured in the range of 65-128 PTEs. It should be clear optimizing for small allocations is a good idea, ([[Roel Messiant]])<br />
* and preferably encourage reuse the same PTEs for such allocations. ([[Roel Messiant]])<br />
* And the new algorithm was born: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by increasing cluster size. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping) .. really this time! ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Both in the reservation and release actions, insertions into the list preserve the increasing cluster size order. ([[Roel Messiant]])<br />
* Empirically obtained data now revealed that after just booting to the desktop, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained exactly 2 clusters. This increased to 10 clusters after some minor internet browsing and watching a 5 minute video using a media player. ([[Roel Messiant]])<br />
* Fix a typo in the page fault handler that caused PDEs to be fixed up when they were in fact valid. ([[Roel Messiant]])<br />
* Only update the System Page Directory when expanding the paged pool. Fixes the PointerPde asserts. ([[Roel Messiant]])<br />
* On paged pool expansion, the system page directory and the process page directory of the calling process were updated. ([[Roel Messiant]])<br />
* When updating the process page directory, an assert made sure the PDE that got written was invalid. ([[Roel Messiant]])<br />
* In case of the System process, both page directories are located on the same physical page. ([[Roel Messiant]])<br />
* So when this process expanded the paged pool, the system page directory update automagically ([[Roel Messiant]])<br />
* updated the process page directory too. The assert therefore triggered. ([[Roel Messiant]])<br />
* Not explicitly updating the process page directory will result in a page fault later on, which is ([[Roel Messiant]])<br />
* handled by copying the required PDE from the system page directory to the process page directory. ([[Roel Messiant]])<br />
* Rumour has it this fix is incorrect because "something's wrong with the System PDE stuff". The lack ([[Roel Messiant]])<br />
* of any further info however leads to this change and explanation. ([[Roel Messiant]])<br />
* Remove undocumented defines from winuser.h and include undocuser.h when _WINE is defined. ([[Aleksey Bragin]])<br />
* crt header compatibility update: ([[Timo Kreuzer]])<br />
* define _USE_MATH_DEFINES for dsound, gdiplus, jscript and some win32k files ([[Timo Kreuzer]])<br />
* don't define HAVE_LRINT(F) in libsamplerate ([[Timo Kreuzer]])<br />
* Remove M_PI constants from win32k ([[Timo Kreuzer]])<br />
* Try to fix a winetst crash. ([[Timo Kreuzer]])<br />
<br />
=== NTOS_MM ===<br />
* N ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Initialize Found to FALSE in NtQueryVirtualMemory. I wonder how GCC missed uninitialized var usage? ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Implement case when NtQueryVirtualMemory is called with non-existing virtual address. ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Handle various special cases in NtQueryVirtualMemory (e.g. querying illegal virtual addresses, shared memory area, etc). Example of an app doing this - OllyDbg. ([[Aleksey Bragin]])<br />
* Don't lie about page protection in MiQueryAddressState. Fixes PDFCreator-alike bugs. ([[Aleksey Bragin]]; {{bug|5627}})<br />
* Don't access pfn database directly, there is a function for this. Thanks sir_richard. ([[Aleksey Bragin]])<br />
<br />
=== NTOSKRNL_MM ===<br />
* Acquire rundown protection on process to make sure it is not being terminated and before attempting to do anything with the process. Fixed a rare case of PspDeleteProcess being called twice for a process, resulting in bugcheck. ([[Michael Martin]])<br />
* Fix the use of an uninitialized variable. ([[Amine Khaldi]])<br />
<br />
=== NTOSKRNL_NEWCC ===<br />
* Init Dummy var even if just used for debug to suppress warning ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PPC ===<br />
* Fix index out of bounds ([[Pierre Schweitzer]])<br />
* Fix sizeof() wrong usage ([[Pierre Schweitzer]])<br />
* Fix the fix, spotted by "ThFabba" on IRC ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* PspCreateThread: If thread creation fails, dereference the Process object also to account for the reference taken at the beginning of the function. ([[Michael Martin]])<br />
* Remove mistakenly committed ASSERTs that were used during my tests. ([[Michael Martin]])<br />
* Revert r48857. The Process object is dereferenced when the Thread object is destroyed, so dont dereference it here. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* add a comment so that noone will stumble upon this atrocity a second time. ([[Timo Kreuzer]])<br />
<br />
=== PSDK_DDK ===<br />
* Add more missing definitions. Fix classpnp.h. ([[sir_richard]])<br />
* Last couple of fixes to headers. Classpnp can compile (and link) now. ([[sir_richard]])<br />
<br />
=== PSDK_NDK ===<br />
* Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. ([[sir_richard]])<br />
<br />
=== RTL_DPH ===<br />
* Add core DPH (Debug Page Heap) structures based on Windows 2003/Vista. ([[Aleksey Bragin]])<br />
* Add misc generic support routines. ([[Aleksey Bragin]])<br />
* Implement DPH version of RtlCreateHeap(). ([[Aleksey Bragin]])<br />
* Debug prints match those printed by Windows 2003. ([[Aleksey Bragin]])<br />
* Implement adding a new pool and allocating a new node. ([[Aleksey Bragin]])<br />
* Add a bunch of stubs. ([[Aleksey Bragin]])<br />
* Implement list manipulation routines: pool list, virtual list, unused list. ([[Aleksey Bragin]])<br />
* Implement node removal from an available list. ([[Aleksey Bragin]])<br />
* Implement more support functions: coalescing a node into the list of available nodes, finding a best fitting node for a given size, growing available virtual memory amount. ([[Aleksey Bragin]])<br />
* Implement other support locking/unlocking, handle-related routines. ([[Aleksey Bragin]])<br />
* Fix RtlpDphFreeVm definition. ([[Aleksey Bragin]])<br />
* Node lists related improvements: Add a function for removing a node from a free list, implement coalescing free nodes into an available list. ([[Aleksey Bragin]])<br />
* Implement a non-implemented case in RtlpDphAllocateNode when there is a need to allocate more virtual memory, and fix incorrect size calculation too. ([[Aleksey Bragin]])<br />
* Implement a function for validating the page heap block. ([[Aleksey Bragin]])<br />
* Implement RtlpPageHeapDestroy. Now we have two exported APIs ready: heap create and heap destroy. ([[Aleksey Bragin]])<br />
* Branch for the 0.3.13 release ([[Colin Finck]])<br />
<br />
=== RTL_HEAP ===<br />
* First commit of a heap manager rewrite. It introduces a totally new heap manager, with the following features: ([[Aleksey Bragin]])<br />
* Actually resembles real NT's heap manager; ([[Aleksey Bragin]])<br />
* Based on data structures similar to Windows 2003 and Vista+'s heap structures; ([[Aleksey Bragin]])<br />
* Supporting advanced heap flags (e.g. useful for debugging); ([[Aleksey Bragin]])<br />
* Substantially lower fragmentation rates (and thus speed and reliability) than the existing Wine's implementation. It's going to be further enhanced by adding a frontend allocator (for example, as lookaside lists, or as a Low Fragmentation Heap alike frontend in Vista+ systems); ([[Aleksey Bragin]])<br />
* Real support for user-defined flags and native support for user-defined values; ([[Aleksey Bragin]])<br />
* Native support for a custom commit routine, which is very important for trunk's win32 subsystem; ([[Aleksey Bragin]])<br />
* Reserving, committing, decommitting and freeing on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary; ([[Aleksey Bragin]])<br />
* Support for per process heaps, with a proper lock; ([[Aleksey Bragin]])<br />
* Reserved support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* The committed code is a result of a month of work, and is a heavy work-in-progress one. It already implements the bare minimum required to boot to 3rd stage and run FireFox 3, however many rare codepaths are not implemented yet and there is some maintenance work to do (e.g. move structures and defines to a standalone header file). A list of used references is stated in the header of a source file for now. ([[Aleksey Bragin]])<br />
* Implement missing parts of a virtual block allocations support. ([[Aleksey Bragin]])<br />
* Minor fixes to handling extra stuff in heap blocks. ([[Aleksey Bragin]])<br />
* Wine's heap regression tests now run through the end without crashing and show 277 failures. ([[Aleksey Bragin]])<br />
<br />
=== SPRINTF ===<br />
* Don't compile the new sprintf by default. Requested by Timo. ([[Amine Khaldi]])<br />
<br />
=== USB_USBEHCI ===<br />
* Reorganization code to put hardware related structures and routines in own source files. ([[Michael Martin]])<br />
* Modify ResetPort to correctly reset the port instead of the controller. ([[Michael Martin]])<br />
* Implement allocating chunks of memory from the Common Buffer for use with the rest of source code. ([[Michael Martin]])<br />
* Implement creating and deleting Queue Heads and Transfer Descriptors from common buffer. ([[Michael Martin]])<br />
* Implement linking/unlinking QueueHeads to create a linked list for Asynchronous Schedule traversal. ([[Michael Martin]])<br />
* Implement BuildSetupPacketFromURB for creating a setup packet from a URB. ([[Michael Martin]])<br />
* Implement SubmitControlTransfer. ([[Michael Martin]])<br />
* Remove all hardware related structs from usbehci.h as they are now in hardware.h. ([[Michael Martin]])<br />
* Add debugging routines for usb descriptors, queue heads and transfer descriptors. ([[Michael Martin]])<br />
* This will break building usbehci, but not a problem as it is not included in the default build. Will be fixed with later commit. ([[Michael Martin]])<br />
* Remove all hardware related routines from fdo.c as they are now in hardware.c ([[Michael Martin]])<br />
* Replace ExecuteControlRequest with new SubmitControlTransfer. ([[Michael Martin]])<br />
* For internal control requests (originating from ehci driver) use an event to signal request completion. ([[Michael Martin]])<br />
* When submitting non internal control request save the Irp in the software part of the QueueHead. ([[Michael Martin]])<br />
* For these requests check for errors and complete the Irp with the appropriate URB Status when the QueueHead is complete. ([[Michael Martin]])<br />
* Misc code cleanup and dead code removal. ([[Michael Martin]])<br />
* UsbEhci now works as before and should be ready for some forward progress. ([[Michael Martin]])<br />
* Fix bug in InitializeUsbDevice that caused endpoints to be duplicated in internal config structure. ([[Michael Martin]])<br />
* Fix implementation of UsbRemoveDevice. ([[Michael Martin]])<br />
* Implement SetDeviceHandleData and RestoreUsbDevice. ([[Michael Martin]])<br />
* SubmitControlTransfer: Not all control request need data, in which case dont create a MDL and a PID_CODE_IN_TOKEN TD Descriptor. ([[Michael Martin]])<br />
* Fix bug in ReleaseMemory that caused memory not to be marked as free. ([[Michael Martin]])<br />
* Fix incorrect memory header size that resulted in memory corruption. ([[Michael Martin]])<br />
* Implement URB_FUNCTION_SELECT_INTERFACE. ([[Michael Martin]])<br />
* Add missing IoMarkIrpPending before calling SubmitControlRequest. ([[Michael Martin]])<br />
* Now use BuildSetupPacketFromURB for creating the CtrlSetup data structure. ([[Michael Martin]])<br />
* When selecting configuration, make the ConfigurationHandle from the related UsbDevice instead of always the RootHub device. ([[Michael Martin]])<br />
* Fix typo that caused all pipes to be marked as interrupt type. ([[Michael Martin]])<br />
* Change CompletePendingURBRequest to only complete one SCE request Irp. ([[Michael Martin]])<br />
* EhciDefferedRoutine: Only free Mdl if one was created when the request was added to the queue. ([[Michael Martin]])<br />
* Dont assume that three transfer descriptors need to be freed, use a while moving to each linked and free instead. ([[Michael Martin]])<br />
* Yabba Dabba Doo added to increase size of message. :) ([[Michael Martin]])<br />
<br />
=== VBEMP ===<br />
* Fix rounding error when calculating display size (neoman; {{bug|5790}})<br />
* Loosely based on (neoman; {{bug|5790}})<br />
* Fixes gdi32_winetest:mapping (neoman; {{bug|5790}})<br />
<br />
=== VIDEOPRT_WIN32K ===<br />
* Synchronize and share PEVENT/ENG_EVENT/VIDEO_PORT_EVENT implementation, as these objects are actually the same (and VideoPrt Event* APIs can be used on GRE Event Objects). Use ENG_EVENT structure from ntddvdeo.h instead of re-creating our own. Drivers using these interfaces will no longer explode. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Implement registering event routine which gets called when a topology node (volume / mute node) changes ([[Johannes Anderwald]])<br />
* Implement fetching event changes ([[Johannes Anderwald]])<br />
* Unlock locked pages before freeing the mdl ([[Johannes Anderwald]])<br />
* Fixes assertion hit 'Assertion 'OldRefCount < 2500' failed at ARM³::MDLSUP line 1008' ([[Johannes Anderwald]])<br />
* Fixes playback / recording of longer audio files ([[Johannes Anderwald]])<br />
* Implement support functions which call the provided functions of mmixer library ([[Johannes Anderwald]])<br />
* Fix a bug in device interface request ioctl handler ([[Johannes Anderwald]])<br />
* Midi devices should now be visible, capabilities be retrieved and opened / close ([[Johannes Anderwald]])<br />
* Writing data is not yet supported ([[Johannes Anderwald]])<br />
* Free allocated mdls in the io completion routine. Also free the associated stream header. ([[Johannes Anderwald]])<br />
* Don't free associated stream header anymore ([[Johannes Anderwald]])<br />
* Tested with VBox 3.2.10 + VmWare Player 3.1.2 + WinXP ([[Johannes Anderwald]])<br />
* Update to new mmixer library interface ([[Johannes Anderwald]])<br />
<br />
=== WIN32KSYS ===<br />
* replace nci-generated stubs with a stub file using macros ([[Timo Kreuzer]])<br />
<br />
=== WIN32K|USER32 ===<br />
* Implement NtUserGetMenuIndex, . ([[James Tabor]]; {{bug|5528}})<br />
* Move to the new window structure. Window Object served us well. ([[James Tabor]])<br />
* Rewrite the Event and Hook procedures. ([[James Tabor]]; {{bug|5670}})<br />
* Add fix for KsStudio for Olaf Siejka and debug prints for WH_KEYBOARD_LL. ([[James Tabor]]; {{bug|5670}})<br />
* Fix for DosBOX. Added more data copies in user32 hook.c. ([[James Tabor]]; {{bug|5670}})<br />
* This hook commit fixes the ros regression testing startup, but consider this a hax fix until more research in Global hooks has completed. More pointed Global hook tests are needed. Misc changes, removed unused storage pointers and reordering. For DosBOX, the mouse low level is now working and the keyboard low level should not be so intermittent as before, now sending messages from system desktop not from thread desktop, ([[James Tabor]]; {{bug|5670}})<br />
* Cleanup and added debug prints. ([[James Tabor]])<br />
* Fixed SendNotifyMessage, thanks to Michael Martin callback changes. Fixed DispatchMessage when dealing with thread errors. Fixed all but one of the Get/PeekMessage wine tests. Fixed attaching threads to process information. Plus other fixes. ([[James Tabor]])<br />
* Implemented support for QS bits, ReplyMessage (not fully correct), and others. ([[James Tabor]])<br />
* Tested everything here, please post regressions so I can add more applications to the test list. This patch is synced with 49720 and 49772. After that there are graphic issues. ([[James Tabor]])<br />
* Credits goes to wine for helping with diagnosing issues in the ReactOS message system. ([[James Tabor]])<br />
* Remove the old send message API and use NtUserMessageCall. ([[James Tabor]])<br />
* Send messages do not pass the Ansi bit. This was evident during the hook changes. User32 knows the caller is Ansi and with a Unicode window user32 can make the apropate switch. Win32k on the other hand, assumes, based on the Unicode window the caller is Unicode. Hook tests enabled in send message, forces the call to win32k, and the Ansi product is Unicode data. Using NtUserMessageCall this bit can be passed forward to allow win32k to make the correct switch going to callback. ([[James Tabor]])<br />
* Finish 50030 (work by Giannis), Now PostMessage passes all the correct data based on Get/PeekMessage. Example: Post A, Get/Peek A, Translate A, Dispatch A, should be that simple. FYI: DDE memory handling should be in win32k not user32 and why,,,,, ~see next point~ ([[James Tabor]])<br />
* Patch up problems (at a minimum) going into the SendMessage/Timeout A2U U2A support in win32k and fixed SMTO callback if local. ([[James Tabor]])<br />
* Fix all the user32 wine win test_SetParent tests. ([[James Tabor]])<br />
* Fix mdi class window function Id, now msi message tests do not assert. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 6 failures dealing with rect size. Start A2U and U2A support. ([[James Tabor]])<br />
* Fix copy paste error, which means this code is not used, should have pop up during testing. ([[James Tabor]])<br />
* Add hack to mark desktop window as a desktop window and notes for creating a desktop with tips in win32k. Move user position code from window to winpos. ([[James Tabor]])<br />
<br />
=== WINE32K|USER32 ===<br />
* Implement client thread information for the beginning of QS flag support and signaling synchronization of messages. ([[James Tabor]])<br />
* Set and clear idle event when setting clearing masks. This fixed the idle foreground hook call from user mode. ([[James Tabor]])<br />
* Fixed wine ListBox and ReactOS ComboBox tests. Critical note: SendMessageA/W, when IsThreadHooked is used and any global hooks are affirmed, all messages are sent to Win32k and the result is, A to W and W to A mismatch via UMToKM. Fixing Global hook support exposed a critical bug in ReactOS message system. Enable the appropriate hooks will temporarily remedy this bug. ([[James Tabor]])<br />
* All patches are from a checked out revision from 49475. Upping ntuser.h, win32k and user32 to sync. ([[James Tabor]])<br />
<br />
=== YAROTOWS ===<br />
* Reintegrate the branch. For a brighter future. ([[Timo Kreuzer]])<br />
* Main features: ([[Timo Kreuzer]])<br />
* Implement LDEVOBJ api. Responsible for loading dlls (display drivers, font drivers, keyboard layout, etc), replacing code in different locations. ([[Timo Kreuzer]])<br />
* Implement PDEVOBJ api. A PDEVOBJ represents a physical device and is the core component for handling multiple display devices. ([[Timo Kreuzer]])<br />
* Rewrite device locking. The new method was neccessary to allow dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement support for enumerating display devices and settings. ([[Timo Kreuzer]])<br />
* Implement dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement a number of Eng mapping functions. ([[Timo Kreuzer]])<br />
* Rewrite Eng level surface handling for cleaner code and better compatability. ([[Timo Kreuzer]])<br />
* Rewrite parts of the DIB handling code. ([[Timo Kreuzer]])<br />
* Rewrite DC creation and deletion. Deletion and cleanup is now completely callback based. Now we don't leak the DC objects when terminating a process, like we did before. ([[Timo Kreuzer]])<br />
* Improve the XLATE and BRUSH code, removing several old hacks. ([[Timo Kreuzer]])<br />
* Improve icon code. ([[Timo Kreuzer]])<br />
* Thanks to Jerome Gardou, Kamil Hornicek and everyone helping. ([[Timo Kreuzer]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.13&diff=29271
ChangeLog-0.3.13
2011-02-22T22:04:10Z
<p>CycleGeek: rm build fix and msvc compilation related comments</p>
<hr />
<div>This is the changelog for ReactOS™ [[0.3.13|version 0.3.13]] (released XXXXXXX), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.12|version 0.3.12]] (released 20 October 2010).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core developers ===<br />
* Giannis Adamopoulos<br />
* Johannes Anderwald<br />
* Aleksey Bragin<br />
* Dmitry Chapyshev<br />
* Benedikt Freisen<br />
* Jerome Gardou<br />
* Cameron Gutman<br />
* Kamil Hornicek<br />
* Amine Khaldi<br />
* Eric Kohl<br />
* Timo Kreuzer<br />
* Matthias Kupfer<br />
* Michael Martin<br />
* Ged Murphy<br />
* Sylvain Petreolle<br />
* ReactOS Portable Systems Group<br />
* Daniel Reimer<br />
* Gregor Schneider<br />
* Pierre Schweitzer<br />
* James Tabor<br />
* Christoph von Wittich<br />
* Art Yerkes<br />
<br />
=== Patch submitters ===<br />
* Damir Aliev<br />
* Oleg Baikalow<br />
* Carlo Bramini<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Adam Kachwalla<br />
* Radek Liška<br />
* Roel Messiant<br />
* Love Nystrom<br />
* Igor Paliychuk<br />
* Samuel Serapion<br />
* Víctor Martínez<br />
<br />
=== Localization ===<br />
* spb-ivan92 ({{Bug|5685}})<br />
* wojtekkozlo664 AT op DOT pl ({{Bug|5740}})<br />
* Mario Kacmar<br />
* Andres Traks<br />
<br />
=== Support staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.13 changes ==<br />
=== Applications ===<br />
* Paint: Generalize changes related to mirroring rectangular selections to free form selections, solve problem regarding selection contents update<br />
* Winmine: Synced and forked from Wine 1.3.5 winemine.<br />
<br />
=== Control Panel Applets ===<br />
=== Installer ===<br />
=== Services ===<br />
== Tests ==<br />
== Translations ==<br />
<br />
== Wine syncs ==<br />
Libraries synced<br />
* atl<br />
* d3d8<br />
* d3d9<br />
* ddraw<br />
* fusion<br />
* gdiplus<br />
* hlink<br />
* iexplore<br />
* mprapi<br />
* msi<br />
* msiexec<br />
* reg<br />
* shdocvw<br />
* urlmon<br />
* wer.dll<br />
* widl<br />
* wined3d<br />
* winemine<br />
* winhlp32<br />
* winhttp<br />
* wininet<br />
* wordpad<br />
* write<br />
* wtsapi32<br />
* xcopy<br />
<br />
== Third party libraries ==<br />
* DejaVu Fonts Documentation updated to 2.31<br />
* RedHat Liberation Fonts updated to 1.06<br />
* Tahoma Fonts undated to Wine HEAD<br />
* bzip2 updated to 2.06<br />
<br />
== BASE ==<br />
<br />
=== APPLICATIONS ===<br />
<br />
==== CALC ====<br />
* Initialize next field. Fixes CID 11063 ([[Timo Kreuzer]])<br />
<br />
===== DOSKEY =====<br />
<br />
==== CMDUTILS ====<br />
* Fix compilation with msvc by GetProcAddress'ing undocumented functions, TCHAR -> WCHAR in the process ([[Jérôme Gardou]])<br />
<br />
===== XCOPY =====<br />
* Spanish translation by JasonGenie at gmail dot com ([[Amine Khaldi]]; {{bug|5889}})<br />
* Add stubs for all page heap API functions. ([[Aleksey Bragin]])<br />
* Enable call to RtlpPageHeapDestroy() when necessary. ([[Aleksey Bragin]])<br />
* Reset Parameters==-1 hack after unsuccessful call to RtlpPageHeapCreate(), would be necessary when page heap is implemented.. ([[Aleksey Bragin]])<br />
<br />
==== FINDSTR ====<br />
* Port findstr (incomplete, as author of this patch states, it may satisfy RosBE, .c .h and .rc files) from FreeDOS project. Needed for RosBE-on-ReactOS support. ([[Aleksey Bragin]]; {{bug|5724}})<br />
<br />
===== SOLITAIRE =====<br />
<br />
==== GAMES ====<br />
* do not include already included file in rc files ([[Jérôme Gardou]])<br />
* add missing close for handle ([[Matthias Kupfer]])<br />
* one more fix (on request of Pierre S.) ([[Matthias Kupfer]])<br />
<br />
===== NSLOOKUP =====<br />
<br />
==== NETWORK ====<br />
* Use memcpy with sizeof instead of strncpy with strlen to make sure the destination string will be zero terminated. ([[Timo Kreuzer]])<br />
* CID 1649 ([[Timo Kreuzer]])<br />
<br />
===== PING =====<br />
* Add localization support to ping. (; {{bug|5500}})<br />
* Implement small helper MyLoadString, using FindResource, LoadResource, LockResource and replacing LoadString, so we don't need to link to user32 anymore. ([[Timo Kreuzer]])<br />
* Add German translation. ([[Timo Kreuzer]])<br />
* Polish translation of ping. (Olaf)<br />
* Italian translation of ping. (Vincenzo)<br />
* French translation patch from myself aka Pierre Schweitzer, with deepest love, and so on... ([[Pierre Schweitzer]])<br />
* Fix typos ;) ([[Johannes Anderwald]])<br />
* Fix MyLoadString. (menone7)<br />
<br />
==== REGEDIT ====<br />
* Katayama Hirofumi: Unicodify regedit, add support for import/export of v5 reg files. Based on Wine regedit. ([[Aleksey Bragin]])<br />
* Katayama Hirofumi: Don't leak open handles to keys. ([[Aleksey Bragin]]; {{bug|5547}})<br />
* Fix a bug causing registry entries with names containing a backslash to be displayed incorrectly ([[Cameron Gutman]])<br />
* Adam Kachwalla <geekdundee@gmail.com> ([[Aleksey Bragin]]; {{bug|5711}})<br />
** Load Hive..." and "Unload Hive..." menu items implemented<br />
** Make address bar case-insensitive ([[Aleksey Bragin]]; {{bug|5711}})<br />
** Remove trailing slashes in address bar when at root keys (e.g. "HKEY_LOCAL_MACHINE\" or "HKEY_CURRENT_USER\")<br />
** Address "go" button added<br />
** Removed ~8px slack from bottom of the app (not needed and looks better)<br />
** Factored out error displaying functions into error.c file.<br />
<br />
==== TASKMGR ====<br />
* Fix Russian translation, by spb-ivan92. ([[Aleksey Bragin]]; {{bug|5685}})<br />
* Rafal Harabien: Add support for DELETE key to processes and applications list in taskmgr. ([[Aleksey Bragin]]; {{bug|5646}})<br />
<br />
=== SERVICES ===<br />
* Remove the reference counter from the common handle type as a handle is never shared or duplicated. ([[Eric Kohl]])<br />
* Remove the access right from the service handle as it is not used. ([[Eric Kohl]])<br />
* Dereference service manager handles and service handles in two separate functions that SEH-protect the initial access to the handle and signature check. This will protect SCM from bogus handles. ([[Eric Kohl]])<br />
* Use new handle check functions in RCloseServiceHandle(). ([[Eric Kohl]])<br />
* RControlService: Check if a control request is acceptable for a user mode service before sending it to the service. ([[Eric Kohl]])<br />
* RControlService: Check the current state before sending a control request. ([[Eric Kohl]])<br />
* Merge ScmControlService() and ScmSendStartCommand() into ScmSendServiceCommand(). ([[Eric Kohl]])<br />
* Revert r49366. ([[Eric Kohl]])<br />
* Fix a typo (|| instead of |). Found by clang. ([[Timo Kreuzer]])<br />
<br />
==== EVENTLOG ====<br />
* Rename the EVENTSOURCE struct to LOGHANDLE because it is currently used like a handle object. The EVENTSOURCE struct will be added again in one of the next commits. ([[Eric Kohl]])<br />
<br />
==== UMPNPMGR ====<br />
* Start using XP- and Vista-compatible pipe names for the RPC endpoint. Kick out the ROS-specific \pipe\umpnpmgr one. ([[Roel Messiant]])<br />
* Use only the Vista pipe name for now, using the XP one makes device installation fail.. ([[Roel Messiant]])<br />
* Use the correct PNP interface UUID ([[Roel Messiant]])<br />
<br />
==== USETUP ====<br />
<br />
=== SETUP ===<br />
* Update Ukrainian translation by Igor Paliychuk. ([[Amine Khaldi]]; {{bug|5536}})<br />
* 5540 5604 5614 5617 for more details. ([[Amine Khaldi]]; {{bug|5536}})<br />
* Update Estonian translation by anthrax11. ([[Amine Khaldi]]; {{bug|5625}})<br />
* Fix a really mean bug: wcslen() returns the size in characters whereas MaximumLength has to be in bytes. ([[Pierre Schweitzer]])<br />
* Now, this sets MaximumLength to its appropriate size and prevents some memory issues (and buffers having odd size, which is weird for an unicode string...). ([[Pierre Schweitzer]])<br />
<br />
==== CMD ====<br />
<br />
=== SHELL ===<br />
* Carlo Bramix: MultiByteToWideChar() has just 6 and not 8 parameters, probably it's a forgetten copy/past from WideCharToMultiByte(). ([[Aleksey Bragin]]; {{bug|5678}})<br />
* Carlo Bramix: ConvertULargeInteger() should have its parameter 'Len' declared as UINT rather than 'INT'. This fixes a signed/unsigned mismatch warning. ([[Aleksey Bragin]]; {{bug|5678}})<br />
<br />
==== EXPLORER ====<br />
* Track the only Global Hook ReactOS has. ([[James Tabor]])<br />
* Revert last change. ([[James Tabor]])<br />
<br />
==== EXPLORER-NEW ====<br />
* Fix another "sizeof" usage mistake ([[Cameron Gutman]])<br />
* CID 1631 ([[Cameron Gutman]])<br />
<br />
=== SYSTEM ===<br />
<br />
==== SMSS ====<br />
* Remove the ROS_DOESNT_SUCK hack, and correctly started subsystem processes with the first MB reserved. ([[sir_richard]])<br />
<br />
==== WINLOGON ====<br />
* Add msg constants (by smiley) ([[Johannes Anderwald]])<br />
<br />
== BOOT ==<br />
<br />
=== ARMLLB ===<br />
* Make DbgPrint compatible so we can use debug.h. ([[sir_richard]])<br />
* Add support for ATAG_REVISION. ([[sir_richard]])<br />
* Fix support of ATAG_MEM: there can be multiple tags, one per DRAM bank. ([[sir_richard]])<br />
* Fix the default case not to "return": it should "Break" instead. ([[sir_richard]])<br />
* Only apply the RAMDisk hack on Beagle for now. ([[sir_richard]])<br />
* Add uImage header which uBoot expects on the images it can load nicely (using "go" will not give us ATAGs, "bootm" requires this header). It's a static header instead of requiring the mkImage tool, since we can disable data checksums in uBoot. We basically fake being a Linux kernel and the LLB handles the ATAGs. ([[sir_richard]])<br />
* Add boot stack for Zoom2. ([[sir_richard]])<br />
* Initialize hardware before parsing environment variables. This makes more sense, and also allows debug output from the environment scanning code. ([[sir_richard]])<br />
* Add the MACHINE_TYPE code for the ZOOM2, based on the standard machtype definitions maintained by the various boot loader communities. ([[sir_richard]])<br />
* Forgot to commit this earlier: define the ATAG_REVISION header. ([[sir_richard]])<br />
* Include FreeLoader's keycode mappings (which don't seem standard) in ARMLLB, so we can do correct keypad to keycode translation. ([[sir_richard]])<br />
* Include ReactOS's standard debug.h, which lets us un-redefine DbgPrint, and also gives us goodies like ASSERT and DPRINT1. ([[sir_richard]])<br />
* We made certain assumptions in the "generic" files that are actually board-specific. For example, Versatile does indeed return a strange ULONG as the RTC time (seconds since 1970, I think), but TWL4030 on the ZOOM2 is normal and returns BCD RTC values just like the PC CMOS. Therefore, most of the "Generic" time.c code should move to versatile later. For now, use an IFDEF. ([[sir_richard]])<br />
* Likewise, not all platforms have a PS/2 controller like the Versatile. ZOOM2 for example has a keypad, so the generic "input" file shouldn't assume keyboard-only. As such, most of the code there should also be made specific, but for now, use an ifdef. ([[sir_richard]])<br />
* Although the soothing BSOD blue color is nice for LLB debugging, we'd really prefer to have black so it looks more natural on the eyes when booting to FreeLoader. As such, make the default backcolor black, but keep the old blue color for early testing, if enabled with a define. ([[sir_richard]])<br />
* Split up support between OMAP3 Beagle and ZOOM2. ([[sir_richard]])<br />
* Implement ZOOM2 ARMLLB board support package. TWL4030 read/write implemented (through basic I2C on the HS interface), RTC and Keypad Matrix implemented (through TWL4030), NEC WVGA Panel Initialization (through basic SPI interface on the MBPSI), basic clock setup and GPIO access for DSS/DISPC, setup DSS/DISPC for output on the NEC panel. UART implemented through Quad-UART NS16550 compatible chip (using CPORTlib). ([[sir_richard]])<br />
* Requires having been booted through x-loader+uboot as a kernel image. Will work on directly booting from NAND later. ([[sir_richard]])<br />
* Delete deprecated folder ([[sir_richard]])<br />
* Add missing UART functionality for ZOOM2. Leverages existing CPORT library. ([[sir_richard]])<br />
<br />
=== FREELDR ===<br />
* Fix CDs checksum computation ([[Pierre Schweitzer]])<br />
* Convert most of the trap and blue screen code from asm to C, use KTRAP_FRAME and KSPECIAL_REGISTERS on the stack, instead of using a bunch of global variables. Convert multiply used asm code chunks into macros. Use intel syntax for remaining asm. ([[Timo Kreuzer]])<br />
* 135 lines of C + 178 lines of asm, instead of 942 lines of asm ([[Timo Kreuzer]])<br />
* On ARM, don't turn on maximum, hyper, ultra-slow debugging and analysis features for the heap. This, for example, reduces FreeLoader's size by 32KB+ and speeds up boot by entire seconds, as the entire heap isn't zeroed out on startup. ([[sir_richard]])<br />
* May I humbly suggest you do the same on x86?! ([[sir_richard]])<br />
* Add startup file for ARM builds as well, so that _start can be the first function in the file. ([[sir_richard]])<br />
* Set load address for ZOOM2, and differentiate Beagle vs ZOOM2. ([[sir_richard]])<br />
* Add linker script for ARM as well. We drop the relocation section as it shouldn't be needed. ([[sir_richard]])<br />
* Add more keycodes. ([[sir_richard]])<br />
* Put ARM boot code in .init section to guarantee it goes first in the file, as per the linker script. ([[sir_richard]])<br />
* Define FreeLoader module for ARM. Differences with x86 are mostly due to the fact "bootloader" was unfortunately made an x86-specific module type, so we have to use "kernel" to get around that, which thankfully has remained portable. ([[sir_richard]])<br />
* VaToPa/PaToVa are assuming all architectures have VA at PA | KSEG0_BASE. This is not the case. On ZOOM2, DDR RAM starts at 0x80000000 for example, so KSEG0 == VA == PA. Use an ifdef do handle this. ([[sir_richard]])<br />
* Headless/EMS support is an x86-specific feature (at least for now, until the code is made portable). ([[sir_richard]])<br />
* Use PaToVa to set the Hive and NLS data pointers, instead of assuming that KSEG0_BASE | Pa is the correct answer for all architectures. ([[sir_richard]])<br />
* Cleanup firmware table setup and add support for being booted from a ZOOM2 ARMLLB, and set the correct file system buffer address for that board. ([[sir_richard]])<br />
* For *every single heap allocation*, there was code to request an entire *heap statistic run*! This is ridiculous and slows heap allocations tremendously. Additionally, it also assumes bstats was linked in, which it might not be if the flag wasn't set in bheap.c. Only enable this code if a special MM_DBG define is set. ([[sir_richard]])<br />
* Done originally for ARM, but I think x86 will appreciate the benefit too (and x86 can now go ahead and disable all those ridiculous debug settings that are turned on by default in bheap.c). ([[sir_richard]])<br />
* Fix RAM layout assumptions in ARM code. ([[sir_richard]])<br />
* poor little printf causes boot break, nuff said. ([[Sylvain Petreolle]])<br />
* Conditionally enable heap-related debugging and validation checks by an MM_DBG define for all architectures. Inspired by 49744. ([[Aleksey Bragin]])<br />
* Delete a duplicate line. ([[Dmitry Gorbachev]])<br />
* compile headless support only for x86 ([[Timo Kreuzer]])<br />
* merge most spec file changes from cmake branch ([[Timo Kreuzer]])<br />
* add stub files to build ([[Timo Kreuzer]])<br />
* Add missing stubs.h ([[Timo Kreuzer]])<br />
<br />
==== FREELDR ====<br />
<br />
===== ARCH =====<br />
<br />
====== AMD64 ======<br />
* Add ksamd64.inc ([[Timo Kreuzer]])<br />
<br />
====== ARM ======<br />
* Our new target is the ZOOM2 OMAP3, instead of Beagle (but we'll keep testing both). ([[sir_richard]])<br />
* The text section is called ".text", not "text". This caused any ARM assembly to create a new section in the PE and waste 4KB. ([[sir_richard]])<br />
<br />
===== CACHE =====<br />
* The cache manager rewrite I started years ago has finally appeared in ([[Art Yerkes]])<br />
* ReactOS' trunk and although at this point it's not quite perfectly ([[Art Yerkes]])<br />
* integrated, it's enough to boot up the bootcd or livecd. To check out ([[Art Yerkes]])<br />
* the more mature original, check out arty-newcc-reactos, branch ([[Art Yerkes]])<br />
* arty-newcc on bitbucket.org . Amine Khaldi encouraged me quite a bit ([[Art Yerkes]])<br />
* to not give up on it, and was able to reach out and be an advocate ([[Art Yerkes]])<br />
* when i really wasn't able to. Others agree that the time has come to ([[Art Yerkes]])<br />
* begin removing the old cache manager. I expect the remaining problems ([[Art Yerkes]])<br />
* in the version going to trunk will be taken care of relatively ([[Art Yerkes]])<br />
* quickly. ([[Art Yerkes]])<br />
* The motivation for this effort lies in the particularly hairy ([[Art Yerkes]])<br />
* relationship between ReactOS' cache manager and data sections. This ([[Art Yerkes]])<br />
* code completely removes page sharing between cache manager and section ([[Art Yerkes]])<br />
* and reimagines cache manager as being a facility layered on the memory ([[Art Yerkes]])<br />
* manager, not really caring about individual pages, but simply managing ([[Art Yerkes]])<br />
* data section objects where caching might occur. ([[Art Yerkes]])<br />
* It took me about 2 years to do the first pass of this rewrite and most ([[Art Yerkes]])<br />
* of this year to fix some lingering issues, properly implement demand ([[Art Yerkes]])<br />
* paging in ReactOS (code which didn't come with this patch in a ([[Art Yerkes]])<br />
* recognizable form), and finish getting the PrivateCacheMap and ([[Art Yerkes]])<br />
* SharedCacheMap relationship correct. ([[Art Yerkes]])<br />
* Currently, the new ntoskrnl/cache directory contains an own ([[Art Yerkes]])<br />
* implementation of data file sections. After things have settled down, ([[Art Yerkes]])<br />
* we can begin to deprecate and remove the parts of ReactOS' section ([[Art Yerkes]])<br />
* implementation that depend on a close relationship with cache ([[Art Yerkes]])<br />
* manager. Eventually, I think that the extra code added to ([[Art Yerkes]])<br />
* ntoskrnl/cache/section will be removed and ReactOS' own sections will ([[Art Yerkes]])<br />
* replace the use of the special MM_CACHE_SECTION_SEGMENT in the cache ([[Art Yerkes]])<br />
* path. ([[Art Yerkes]])<br />
* Note also, that this makes all cache manager (and new section parts) ([[Art Yerkes]])<br />
* use wide file offsets. If my section code were to take over other ([[Art Yerkes]])<br />
* parts of the ReactOS memory manager, they would also benefit from ([[Art Yerkes]])<br />
* these improvements. ([[Art Yerkes]])<br />
* I invite anyone who wants to to peek at this code and fix whatever ([[Art Yerkes]])<br />
* bugs can be found. ([[Art Yerkes]])<br />
* KSUSER, KS, SYSAUDIO] ([[Johannes Anderwald]])<br />
* Make pin / node / allocator create requests compatible to ms by removing obsolete slash before object class ([[Johannes Anderwald]])<br />
* Return correct error code in ksuser's KsCreatePin ([[Johannes Anderwald]])<br />
* ReactOS KS is now able to create audio pins in Windows XP, though playback is not yet working ([[Johannes Anderwald]])<br />
* All changes except ksuser change has been verified to work with VBox 3.2.10 ([[Johannes Anderwald]])<br />
* KS user changes not tested yet as KSStudio not working in trunk ([[Johannes Anderwald]])<br />
<br />
===== DISK =====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Also added support for IOCTL_DISK_GET_DRIVE_GEOMETRY_EX. ([[Pierre Schweitzer]])<br />
* Hackplemented support for IOCTL_DISK_GET_PARTITION_INFO_EX. It will work fine for MBR partitions but will fake returns for GPT partitions. ([[Pierre Schweitzer]])<br />
* Implemented support for IOCTL_DISK_GET_LENGTH_INFO ([[Pierre Schweitzer]])<br />
<br />
===== RTL =====<br />
* Fixed a really stupid (and old) bug in RtlComputeCrc32(): ([[Pierre Schweitzer]])<br />
* First parameter is initial CRC32 checksum. And it's complete and not partial, thus it needs to be an ULONG and not an USHORT. ([[Pierre Schweitzer]])<br />
* This fixes CRC32 checksum computation with initial checksum (tested again Windows 2003 & Seven). ([[Pierre Schweitzer]])<br />
* Fix heap code to actually use the new lock instead of using RTL_CRITICAL_SECTION. ([[Aleksey Bragin]])<br />
* Fix a ROUND_UP and ROUND_DOWN macros: it is a *rule* to wrap every argument in braces in a macro, otherwise shit happens. A couple of days were lost fighting a strange bug in the new heap manager code where it was doing ROUND_UP(Heap + 1, PAGE_SIZE)... ([[Aleksey Bragin]])<br />
* Change RtlLockBootStatusData prototype according to http://cookp.com/%2F/thread/1111206/how%20can%20i%20detect%20last%20boot%20success ([[Eric Kohl]])<br />
* Carlo Bramini <carlo DOT bramix AT libero DOT it> ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix for render status bar after changing line wrap and flicker issue. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* for details. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix RtlSetUserFlagsHeap declaration and definition. ([[Aleksey Bragin]])<br />
* Fix a bug introduced Mon Dec 6 00:25:14 1999 UTC (10 years, 10 months ago) in revision 828. NtFreeVirtualMemory takes a pointer to the address to free, not the address instead. For the last 11 years, freeing the process parameter block resulted in freeing whatever the first value in the structure is, which is MaximumLength and initialized to 0x1000. ReactOS would then free whatever random address was in that area. In real Windows, it is illegal to free an allocation in the middle of the base address, and this call failed with the new VAD code. ReactOS either leaked the memory or freed random data, who knows. ([[sir_richard]])<br />
* Make the PPB live in the Heap instead of having its own virtual allocation, fixing the issue above. Stop rounding it to a PAGE_SIZE, and just use the space required. ([[sir_richard]])<br />
* Roel Messiant: Specify proper byte length of a unicode string. Fixes out of bounds access in actctx.c support code. No more half-cut active context stuff in debug logs. ([[Aleksey Bragin]])<br />
* Minor code changes to RTL (one would call them "optimisation"). Added some missing paged code. ([[Pierre Schweitzer]])<br />
* Plus added useful asserts (used to catch r50615 bug!) ([[Pierre Schweitzer]])<br />
* Merge changes to rtl from cmake branch. Mostly use portable interlocked functions ([[Timo Kreuzer]])<br />
* Move page heap related code to heappage.c. ([[Aleksey Bragin]])<br />
<br />
===== SRC =====<br />
<br />
====== DRIVERS ======<br />
<br />
==== MESA32 ====<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Add missing breaks. (Samuel)<br />
<br />
=== CPL ===<br />
<br />
==== TIMEDATE ====<br />
* Fix French translation. ([[Sylvain Petreolle]])<br />
<br />
==== DDRAW ====<br />
<br />
=== DIRECTX ===<br />
* Jerome Gardou: Almost all of the ddraw->refcount winetests pass. One remains, due to the fact that IdirectDrawSurface::SetPalette is unimplemented. IDirectDraw::Createpalette is implemented too, but needs testing. There are no parameter checks. ([[Aleksey Bragin]]; {{bug|4909}})<br />
* Comments from me: The patch is not build-tested, however I did my best to merge it to existing ddraw and I prefer the actual code to be in the repository rather than hanging in bugzilla for years (last comment to the patch is dated 29.10.2009). ([[Aleksey Bragin]]; {{bug|4909}})<br />
<br />
===== D3D =====<br />
* Preparations for update to widl 1.3.4. ([[Eric Kohl]])<br />
<br />
==== WINE ====<br />
* Add iscntrlW() definition ([[Cameron Gutman]])<br />
* Fix non-x86 versions of Wine's push/pop exception frame macro. ([[sir_richard]])<br />
<br />
===== WINED3D =====<br />
* Update wined3d, ddraw, d3d8 and d3d9 to Wine 1.3.4. ([[Kamil Hornicek]])<br />
* Our CRT causes duplicate definitions, when trying to use it as fallback for missing msvcrt imports. Work around this limitation by adding powf and sqrtf wrappers for amd64 builds ([[Timo Kreuzer]])<br />
<br />
=== NTDLL ===<br />
* Use LOCK instead of lock for SList assembly functions, this is a conditional such that on UP, "lock" instruction won't be generated. ([[sir_richard]])<br />
* Apply the special begin/fault/resume lablels to the user-mode SList functions. Access faults can happen there due to a bug in the Windows algorithm, and Mm will need to handle that. ([[sir_richard]])<br />
* Fix loading of GlobalFlags in Image File Execution Options. I really wonder who had that brilliant idea that bitwise flags would be stored as a string in the registry. ([[Aleksey Bragin]])<br />
* If there is a GlobalFlags value specified in the registr for that specific image, it means that value should overwrite NtGlobalFlags. Fix that too (previously it was ORing which made no sense). ([[Aleksey Bragin]])<br />
* Respectively fix incorrect data type for GlobalFlags in ReactOS registry. ([[Aleksey Bragin]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* LoadImageFileExecutionOptions() improvements: ([[Aleksey Bragin]])<br />
* Apply certain heap flags if the process is being debugged (only if NtGlobalFlags is not overridden). ([[Aleksey Bragin]])<br />
* Implement enabling page heap and reading image-specific configuration values. ([[Aleksey Bragin]])<br />
* Add page heap configuration values to the Heap Manager. ([[Aleksey Bragin]])<br />
* Fix a typo which always set page heap enabled to true. ([[Aleksey Bragin]])<br />
* Load image execution options before creating process heap (so that GlobalFlag overrides can be taken into account). ([[Aleksey Bragin]])<br />
* Make LdrQueryImageFileExecutionOptions avoid heap usage when possible (and when it's not possible, fail with out of memory status). ([[Aleksey Bragin]])<br />
* Fixes a dramatic count of ~100 failures in "kernel32_winetest heap". ([[Aleksey Bragin]])<br />
* Don't access unitialized memory. Caught thanks to a new heap manager, and this fixes all weird actctx exceptions in kernel32_winetest heap. ([[Aleksey Bragin]])<br />
* Fix LdrVerifyImageMatchesChecksum() prototype. ([[Aleksey Bragin]])<br />
* Move RtlPcToFileHeader to rtl/libsupp.c ([[Timo Kreuzer]])<br />
* Raise harderror and terminate process when the image is of a foreign architecture. ([[Timo Kreuzer]])<br />
* Fix harderror status on machine type mismatch and pass file name. ([[Timo Kreuzer]])<br />
<br />
==== ADVAPI32 ====<br />
<br />
=== WIN32 ===<br />
* Roel Messiant: Properly handle STATUS_BUFFER_TOO_SMALL in RegEnumValueW implementation. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Katayama Hirofumi: Use DataLength field in RegEnumValueW instead of DataOffset. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Roel Messiant: Test behaviour in Vista and apply same fix to RegEnumValueA. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Implement LsaCreateAccount(), LsaOpenAccount() and LsaSetInformationPolicy(). ([[Eric Kohl]])<br />
* Implement LsaAddPrivilegesToAccount(), LsaCreateTrustedDomain(), LsaDeleteTrustedDomain() and LsaOpenTrustedDomainByName(). ([[Eric Kohl]])<br />
* Move the Encrypted File System (EFS) functions into their own file. ([[Eric Kohl]])<br />
* Roel Messiant: Fix short-circuit evaluation. ([[Aleksey Bragin]]; {{bug|5677}})<br />
* Implement LsaAddAccountRights(), LsaQueryTrustedDomainInfoByName() and LsaRemoveAccountRights(). ([[Eric Kohl]])<br />
* ConvertStringSidToSidW: Stop writing 1 subauthority too much. Fixes a DWORD sized buffer overflow. Should fix bug #5764. ([[Roel Messiant]])<br />
* ConvertStringSidToSidW: Don't leak an allocated SID in case of failure. ([[Roel Messiant]])<br />
* Move file encryption functions from crypt/crypt.c to misc/efs.c. ([[Eric Kohl]])<br />
<br />
==== ATL ====<br />
* Ettl Martin: Make CComCriticalSection destructor virtual. ([[Aleksey Bragin]]; {{bug|4975}})<br />
<br />
==== AUTHZ ====<br />
* Fix AuthzReportSecurityEvent, AuthzInitializeObjectAccessAuditEvent and AuthzInitializeObjectAccessAuditEvent2 prototypes. ([[Amine Khaldi]])<br />
* Missed these. ([[Amine Khaldi]])<br />
* Another dll addition to cmake, another rc file fix. ([[Daniel Reimer]])<br />
<br />
==== AVIFIL32 ====<br />
* Split utf8 resources into theit own file (MSVC compatibility) ([[Timo Kreuzer]])<br />
<br />
==== CFGMGR32 ====<br />
* Add missing functions. ([[Eric Kohl]])<br />
* Add forwarders to functions that are exported by setupapi.dll. ([[Eric Kohl]])<br />
* Mark deprecated functions. ([[Eric Kohl]])<br />
<br />
==== COMCTL32 ====<br />
* Fix bitmap resources. They were not very valid. Windows didn't even load them. Probably created with some linux tool *cough* ([[Timo Kreuzer]])<br />
* Fixes part of the broken icons. Not the pink ones though. ([[Timo Kreuzer]])<br />
* Revert 45676 ([[Johannes Anderwald]])<br />
* It appears that the definitions for IID_IUnknown differ for kernel mode COM and user mode COM ([[Johannes Anderwald]])<br />
<br />
==== DEVMGR ====<br />
* DisplayDevicePropertyText: Use full DWORD value, not just one byte of it (CID 1803). ([[Roel Messiant]])<br />
<br />
==== GDI32 ====<br />
* Don't make the wrong assumption that POINT and POINTL are identical. ([[Timo Kreuzer]])<br />
* remove useless memory reallocation : the buffer size must be dword aligned, we have no way to guarantee the buffer location will be. ([[Jérôme Gardou]])<br />
* pass BITMAPINFO pointer size to NtGdiGetDIBitsInternal ([[Jérôme Gardou]])<br />
* Implement GdiGetDcAttr. Just for convenience / cleaner code. ([[Timo Kreuzer]])<br />
* Move EFLOAT handling in seperate file, its x86 specific ([[Timo Kreuzer]])<br />
* Implement CombineTransform fully in usermode instead of forwarding to NtGdiCombineTransform ([[Timo Kreuzer]])<br />
* Implement MatrixToXForm ([[Timo Kreuzer]])<br />
* Implement GdiTransformPoints ([[Timo Kreuzer]])<br />
* GDI32] ([[Timo Kreuzer]])<br />
* Check paramters in CombineTransform ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf, 2nd try :) ([[Timo Kreuzer]])<br />
<br />
==== IPHLPAPI ====<br />
* Rewrite name server enumeration routines ([[Johannes Anderwald]])<br />
* Check if static dns entries are present before checking for dynamic dns entries ([[Johannes Anderwald]])<br />
* Fixes static dns entries ([[Johannes Anderwald]])<br />
* Remove conditional redefine of DPRINT. Wine debug channels at this point, and we have NDEBUG. ([[Roel Messiant]])<br />
* Use TRACE instead of DbgPrint. Gets rid of the "Status 2" spam when no static nameserver is in the registry. ([[Roel Messiant]])<br />
<br />
==== KERNEL32 ====<br />
* Winnls.h can be included now. ([[Kamil Hornicek]])<br />
* Igor Paliychuk: Fix properly showing genitive names from NLS data by applying a missed Wine sync. ([[Aleksey Bragin]]; {{bug|5556}})<br />
* NtCreateSection should not be called with merely SEC_FILE: this says nothing about what kind of operation should be done (a commit, a reserve, etc?). Use SEC_COMMIT instead to specify correct operation. This works in ReactOS as of now, but would've failed after the NtSection* API rewrite. ([[sir_richard]])<br />
* CreateFileMappingW should also accept/allow SEC_LARGE_PAGES, even if we don't suppport it yet. ([[sir_richard]])<br />
* Revert incorrect changes from 34404 and 40910: RtlSetUserFlagsHeap() doesn't set usual heap flags, it sets special user-settable heap entry flags. With the new heap manager such usage corrupts heap integrity (not to say prototype of this function is incorrect). ([[Aleksey Bragin]])<br />
* RtlReAllocateHeap() is supposed to copy user values and flags so there is no need to set them afterwise again. ([[Aleksey Bragin]])<br />
* Print delphi exception with the Exception code 0xeedfade, we were previously only checking for 0xeedface, maybe an older value. ([[Timo Kreuzer]])<br />
* Remove the old version of WaitNamedPipeW. ([[Eric Kohl]])<br />
* This patch fixes the broken wait pipe code. It was written and tested on r49458 because later revisions do not work for me. ([[Eric Kohl]])<br />
* Added real implementation of SetLastError() (instead of forwarding to NTDLL) ([[Pierre Schweitzer]])<br />
* Implemented BaseSetLastNTError() ([[Pierre Schweitzer]])<br />
* Renamed Basep8BitStringToCachedUnicodeString() to Basep8BitStringToStaticUnicodeString() and sightly changed its implementation ([[Pierre Schweitzer]])<br />
* Fixed implementation of LoadLibraryExA() & DisableThreadLibraryCalls() using those changes ([[Pierre Schweitzer]])<br />
* This is matching w2k3 implementation. This is of course a WIP. ([[Pierre Schweitzer]])<br />
* Revert r49761 on Pierre's request ([[Timo Kreuzer]])<br />
* Fix heap corruptions in MoveFileWithProgress ([[Johannes Anderwald]])<br />
* Fixes kernel32_winetest change crash ([[Johannes Anderwald]])<br />
* Introduced in rev 18073 (25.Sept 2005) ([[Johannes Anderwald]])<br />
* ReadDirectoryChangesW: Treat the OVERLAPPED structure as an IO_STATUS_BLOCK, not one of its fields. ([[Roel Messiant]])<br />
<br />
==== LSASRV ====<br />
* Add ServiceInit() stub and call it from lsass. ([[Eric Kohl]])<br />
* Change the calling convention of all LSA-RPC function to stdcall. ([[Eric Kohl]])<br />
* Export some of the LSA-RPC functions. ([[Eric Kohl]])<br />
<br />
==== MSI ====<br />
* Fix freed memory access and fix freeing of invalid pointer. (from http://www.winehq.org/pipermail/wine-patches/2010-October/094849.html ) ([[Aleksey Bragin]]; {{bug|3755}})<br />
<br />
==== MSVCRT ====<br />
* Don't export _matherr ([[Timo Kreuzer]])<br />
* Apply a hack to msvcrt spec file to avoid duplicate definition of atexit. Mingw-w64 has an identical hack. ([[Timo Kreuzer]])<br />
* No reason for wcsxfrm to be a stub when code is here. ([[Sylvain Petreolle]])<br />
<br />
==== NETCFGX ====<br />
* GetPerAdapterInfo requires IP_PER_ADAPTER_INFO struct ([[Johannes Anderwald]])<br />
* Fix reading static dns entries ([[Johannes Anderwald]])<br />
* Delete static name server key, when changing dns servers to automatic (dhcp) ([[Johannes Anderwald]])<br />
* Don't delete DhcpNameServer key yet, as more interaction is needed with dhcp service when changing from static dns to dynamic dhcp ([[Johannes Anderwald]])<br />
* Should finally fix static dns when dhcp is active ([[Johannes Anderwald]])<br />
* Fix case where there is only one static dns server set ([[Johannes Anderwald]])<br />
<br />
==== OLEACC ====<br />
* Use an actual entrypoint. Needed to record the instance handle, used by various function that access resources of the module. Should fix oleacc:main winetest. ([[Roel Messiant]])<br />
<br />
==== RPCRT4 ====<br />
* Add a missing format type to unmarshall_discriminant(). ([[Eric Kohl]])<br />
<br />
==== SETUPAPI ====<br />
* Implement CM_Get_Device_ID_List_ExW(). ([[Eric Kohl]])<br />
* SetupDiClassNameFromGuidExW: Rewrite to prevent a buffer overflow and pass additional winetests. Should fix bug #5474. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExA: Return the required buffer size in failure cases. ([[Roel Messiant]])<br />
* Bind to the PNP service using the Vista-compatible pipe. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExW: Simplify interaction with registry. ([[Roel Messiant]])<br />
* SetupDiCreateDeviceInfoW: Check for correct error value. ([[Roel Messiant]])<br />
* SetupDiGetClassDescriptionExW: Rewrite to return the correct required size and prevent WCHAR sized buffer overflow. ([[Roel Messiant]])<br />
* SetupDiGetClassDevsExW: Return INVALID_HANDLE_VALUE instead of NULL in failure case. ([[Roel Messiant]])<br />
* Implement CMP_WaitServicesAvailable(). ([[Eric Kohl]])<br />
* CM_Get_First_Log_Conf_Ex(): Create a LOG_CONF_INFO struct only if plcLogConf is not NULL. ([[Eric Kohl]])<br />
* Fix a warning. ([[Eric Kohl]])<br />
* Implement CM_Is_Version_Available and CM_Is_Version_Available_Ex. ([[Eric Kohl]])<br />
* Add resource descriptor function stubs. ([[Eric Kohl]])<br />
<br />
==== SHELL32 ====<br />
* Enable code as we support now IOCTL_DISK_GET_LENGTH_INFO ([[Johannes Anderwald]])<br />
* IOCTL_DISK_GET_LENGTH_INFO implemented in 49369 ([[Johannes Anderwald]])<br />
* Implement copy / paste for files when tree view is present ([[Johannes Anderwald]])<br />
* Don't add shortcuts / executables to recent file list ([[Johannes Anderwald]])<br />
* Add NULL checks in IShellView and IDropTarget implementations. Should fix bug #5780. ([[Roel Messiant]])<br />
<br />
==== SHLWAPI ====<br />
* Explicitly add msvcrt before ntdll to use it's *sprintf functions. Fixes bug 5557 ([[Timo Kreuzer]])<br />
<br />
==== SYSSETUP ====<br />
* SC Manager needs SC_MANAGER_ENUMERATE_SERVICE access right to be able to open a service ([[Jérôme Gardou]])<br />
* Add debug prints to help tracking down the "EnableUserModePnpManager()" issue ([[Jérôme Gardou]])<br />
<br />
==== USER32 ====<br />
* Remove the last reactos-only export from user32 (PrivateCsrssManualGuiCheck) ([[Giannis Adamopoulos]])<br />
* One more leftover to add. Now we test for both Local and Global hooks in user32. This will force any message sent to win32k if there are any Global hookers so we loose in performance. We need to rethink our usage of these Global hookers in our code. ([[James Tabor]])<br />
* Fix an over site and copy the return data back to the kernel. ([[James Tabor]])<br />
* Sync up with wine 1.2 rc6 menu so it will pass the tests from rev 47939. ([[James Tabor]])<br />
* Fixed export for PrintWindow and 5609. ([[James Tabor]]; {{bug|5466}})<br />
* Remove a bunch of uneeded code in GetMessage and PeekMessage that copyied the lparam in a new buffer and did unicode to ansi convertions. It is not needed because they don't receive messages with pointers any more ([[Giannis Adamopoulos]])<br />
* Fix all the user32 wine win test_parent_owner tests. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 30 failures dealing with rect size, Class and Title names. ([[James Tabor]])<br />
* Controls: Set fnids for the user client controls. ([[James Tabor]])<br />
* Start creeping in more Left to Right support, readying up for the next wine User32 controls port and test sync. Code is based on wine, credit them for any breakages. 8^P Our positions are off by 103 x 122 in some test cases, anyone having an idea please chime in. ([[James Tabor]])<br />
* Happy New Year! ([[Aleksey Bragin]])<br />
* Dear ReactOS team, you're the best. ([[Aleksey Bragin]])<br />
* Use new wsprintf library, remove old code (536 lines) ([[Timo Kreuzer]])<br />
* Fixes output of %I64, for example dxdiag ([[Timo Kreuzer]])<br />
* Implement sending EVENT_SYSTEM_DIALOGSTART event. It will be used by rosautotest ([[Giannis Adamopoulos]])<br />
* Fix bug in CreateIconIndirect ([[Timo Kreuzer]])<br />
* implement get_icon_size ([[Timo Kreuzer]])<br />
* use unmodified wine code for STATIC_PaintIconfn ([[Timo Kreuzer]])<br />
* Fix CreateIcon and CreateIconIndirect. Fixes user32_winetest:cursoricon. (Yes we execute less tests, but that is correct! wine probably only passes these tests by chance) ([[Timo Kreuzer]])<br />
* TRANSLATION: fix typo in shutdown. ([[Sylvain Petreolle]])<br />
<br />
==== WINHTTP ====<br />
<br />
==== WININET ====<br />
* Add a ROS-specific change that was missed during the last winesync to fix winsock error handling ([[Cameron Gutman]])<br />
* Remove the CP_UNIXCP definition ([[Cameron Gutman]])<br />
* Use WSASetLastError instead of errno in inet_ntop.c ([[Cameron Gutman]])<br />
* Thanks to IRC:igorko for pointing out the bug ([[Cameron Gutman]])<br />
<br />
==== WINMM ====<br />
* MCI_Close: Use UINT instead of UINT16 for the device id (CID 1804). ([[Roel Messiant]])<br />
<br />
==== NMIDEBUG ====<br />
<br />
== DRIVERS ==<br />
<br />
=== BASE ===<br />
* Fix and cleanup some code, and enable NMI support on the boot/install CD as well. ([[sir_richard]])<br />
<br />
==== ACPI ====<br />
<br />
=== BUS ===<br />
* Fix ACPI warnings (Love)<br />
* Based on a (Love)<br />
<br />
==== FASTFAT ====<br />
<br />
=== FILESYSTEMS ===<br />
* Fix for a buffer overflow and then a buffer overrun (if ever it fixes something) ([[Pierre Schweitzer]])<br />
* The way filenames are handled for FAT entries should be REALLY simplified. This would prevent such errors. ([[Pierre Schweitzer]])<br />
* Thus, there are more magic values in fastfat driver than everywhere else in ReactOS which makes proper fixing hard (impossible?). ([[Pierre Schweitzer]])<br />
* Finally, the code for that fix is crappy, but I don't care, it fits the rest of the fastfat driver code. ([[Pierre Schweitzer]])<br />
* pissed off* ([[Pierre Schweitzer]])<br />
* Fixes CID #2502 ([[Pierre Schweitzer]])<br />
* MagicValue--; ([[Pierre Schweitzer]])<br />
* ThanksTo(James, Amine); ([[Pierre Schweitzer]])<br />
* EOF */ ([[Pierre Schweitzer]])<br />
* Remove unused vars ~ ([[Pierre Schweitzer]])<br />
<br />
==== FASTFAT_NEW ====<br />
* Substantially improve FatiCreate routine, to handle previously unhandled cases, fix wrong code structure in some places, add a stub for further implementation of a new file creation branch. ([[Aleksey Bragin]])<br />
* Hackskip setting delay-on-close for a file for now (with a debug print reminder!) ([[Aleksey Bragin]])<br />
* Some fixes to the previous commit. ([[Aleksey Bragin]])<br />
* Don't use same name for a local boolean var and global enum. Spotted by Pierre. ([[Aleksey Bragin]])<br />
<br />
==== NPFS ====<br />
* Rename DEVICE_EXTENSION to NPFS_VCB. ([[Eric Kohl]])<br />
* Add a type variable to distinguish FCBs and CCBs for device, directory or pipe. ([[Eric Kohl]])<br />
* Attach an FCB to the VCB that represents the root directory of the file system and implement an open routine for the root directory. ([[Eric Kohl]])<br />
* Make NpfsWaitPipe work when it is called for the root directory. ([[Eric Kohl]])<br />
* Add an FCB that represents the file system (volume/device) and support absolute and relative open, cleanup and close. ([[Eric Kohl]])<br />
* Read and write IRPs must fail if the caller is not a pipe but a directory or a device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a directory or device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a pipe by the client. ([[Eric Kohl]])<br />
* Enable the driver to open a directory using a relative path name. ([[Eric Kohl]])<br />
* Add NpfsDirectoryControl routine in order to enumerate pipes. ([[Eric Kohl]])<br />
* Use NpfsGetFcb and NpfsGetCcb to retrieve the FCB or CCB and use SEH to protect these routines. ([[Eric Kohl]])<br />
* Add support for FileFullDirectoryInformation and FileBothDirectoryInformation. ([[Eric Kohl]])<br />
* Fix an off-by-one bug in the buffer size calculation. ([[Eric Kohl]])<br />
* Zero-initialize the return buffer. ([[Eric Kohl]])<br />
* Initialize only the required parts of the return buffer. This will enable the driver to return information about multiple pipes in a single request. ([[Eric Kohl]])<br />
* Check if the whole pipe name fits into the return buffer. Return STATUS_BUFFER_OVERFLOW if it does not fit and copy only a part of the file name in this case. ([[Eric Kohl]])<br />
* Return multiple file entries in a single request. ([[Eric Kohl]])<br />
<br />
==== I8042PRT ====<br />
<br />
=== INPUT ===<br />
* Fix potential buffer overflow ([[Johannes Anderwald]])<br />
* Calculate packet type according to PS/2++ spec (CID 1810). ([[Roel Messiant]])<br />
* Fix technical detail in comment to match spec. ([[Roel Messiant]])<br />
<br />
==== KS ====<br />
<br />
=== KSFILTER ===<br />
* Simplify KsTopologyPropertyHandler by using KspReadMediaCategory helper ([[Johannes Anderwald]])<br />
* Return correct status code in case of an overflow ([[Johannes Anderwald]])<br />
* Fix PciFindParentPciFdoExtension bug found by sir_richard "Early break would leave the lock held" ([[evb]])<br />
* Fix PciGetHackFlags for setup found by sir_richard "Setup currently doesn't have a correct registry" ([[evb]])<br />
* Fix DriverEntry for setup like PciGetHackFlags ([[evb]])<br />
* Fix DriverEntry PciOpenKey check found by sir_richard "PciOpenKey returns a BOOLEAN, not an NTSTATUS" ([[evb]])<br />
* Stop call PciGetAcpiTable found by sir_richard "PciGetAcpiTable is really broken, can lead to infinite loops, and also corrupts memory. We need to fix stefan's bugs" ([[evb]])<br />
* Implement not root FDO code in PciScanBus and support PCI_HACK_ONE_CHILD ([[evb]])<br />
* Implement multiple FDO exist code in PciAddDevice so PCI Bridge support now ([[evb]])<br />
* Implement PciAreBusNumbersConfigured for PCI Bridge support ([[evb]])<br />
* Hack FDO Start Device by sir_richard "The root FDO does send boot resources if PCIX is installed properly, this code will be needed" ([[evb]])<br />
* Do PCI_BUS_DRIVER_INTERNAL bugcheck by sir_richard "I have hacked KeBugCheckEx to ignore this for now, until PnP is fixed" ([[evb]])<br />
* Implement not root FDO code in PciInitializeArbiters ([[evb]])<br />
* Implement PciCacheLegacyDeviceRouting, PciFindPdoByLocation used by PciAssignSlotResources ([[evb]])<br />
* Make PciTranslateBusAddress do the stub work ([[evb]])<br />
* PciAssignSlotResources disabled because ReactOS not support IoAssignResources ([[evb]])<br />
* Implement PPBridge_ChangeResourceSettings ([[evb]])<br />
* PCIX driver nearly working now. ([[evb]])<br />
* Fix KSPROPERTY_PIN_CATEGORY handler when no category is provided ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_PIN_NAME handler when there is no name provided. Use fallback pin category. If there is no category provided, fail with correct error code ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_TOPOLOGY_NAME handler by checking if there is a node name provided. If not use node type as fallback. ([[Johannes Anderwald]])<br />
* Return correct error code when property request id is out of bounds ([[Johannes Anderwald]])<br />
* Fix property set support handler for topology nodes ([[Johannes Anderwald]])<br />
* Check if the driver supports a basic support handler. In that case return the basic support handler ([[Johannes Anderwald]])<br />
* Replace all ms portcls hacks by one. ([[Johannes Anderwald]])<br />
* MS Portcls is now working in ReactOS (which is nice for testing audio related bugs) ([[Johannes Anderwald]])<br />
* Fix several bugs in KsProbeStreamIrp ([[Johannes Anderwald]])<br />
* If requestor is KernelMode - just save a pointer in Irp->AssociatedIrp.SystemBuffer (currently not used) ([[Johannes Anderwald]])<br />
* If requestor is UserMode mark irp as buffered. Also set Flag IRP_INPUT_OPERATION when the ioctl is IOCTL_KS_READ_STREAM. This is important to propagate modifications to KSSTREAM_HEADERS (in particular DataUsed member) ([[Johannes Anderwald]])<br />
* ReactOS KS can now be used in WinXP in combination with KSStudio. In order to make it fully work, ks needs to implement software bus functions ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Perform irp completion in dedicated function ([[Johannes Anderwald]])<br />
* Move Software Bus function into own file ([[Johannes Anderwald]])<br />
* Remove debugging code which caused crashes ([[Johannes Anderwald]])<br />
* Partly implement IKsProcessingObject interface for filter ([[Johannes Anderwald]])<br />
* Fix check in FindMatchingCreateItem function ([[Johannes Anderwald]])<br />
* Implement software bus enumerator functions ([[Johannes Anderwald]])<br />
* Less spam, more information ([[Johannes Anderwald]])<br />
* Robert Horvath: Always limit destLen to MAX_PATH (modified to an if condition by me). ([[Aleksey Bragin]]; {{bug|5861}})<br />
* Robert Horvath: Modify GetFullPathName to follow Windows behaviour more closely. Reduces kernel32:path winetests by 4, and fixes all GetFullPathName tests. ([[Aleksey Bragin]]; {{bug|5865}})<br />
* Oleg Baikalow: TDI exported function prototypes are documented in WDK 7, so use them in our driver instead of old, probably NT4-aged stubs full of unknown variables. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't use psdk's tdi.h but use a real tdikrnl.h (adding a _TDI_ global define so it's recognized as a tdi driver itself). ([[Aleksey Bragin]])<br />
<br />
==== SWENUM ====<br />
* Implement SwDispatchPower, SwDispatchPower ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
<br />
=== MULTIMEDIA ===<br />
<br />
==== AUDIO ====<br />
* Add i/o completion routine, which delivers the number of bytes written / read ([[Johannes Anderwald]])<br />
* Close event handle, after the overlapped request has been handled. ([[Johannes Anderwald]])<br />
* Audio stack no longer leaks ~ 50 event handles per second ([[Johannes Anderwald]])<br />
<br />
===== SNDBLST.OLD =====<br />
<br />
==== NDIS ====<br />
<br />
=== NETWORK ===<br />
* Disable timer queuing code (hackfix for various network driver failures) ([[Cameron Gutman]])<br />
* Also needs to be merged into 0.3.12 ([[Cameron Gutman]])<br />
* Add a missing spin lock release in a failure case ([[Cameron Gutman]])<br />
* Fix incomplete copying of NDIS 5.1 miniport characteristics ([[Cameron Gutman]])<br />
* Fix sizeof typo ([[Cameron Gutman]])<br />
* CID 10400 ([[Cameron Gutman]])<br />
<br />
==== TDI ====<br />
* Oleg Baikalow: Implement basic event and delayed event support functions for CTE. Structure names are made up, but their contents should be compatible with what Windows 2003 tdi.sys uses. Formatting and coding style fixes by the committer. ([[Aleksey Bragin]])<br />
* Move CTE routines into corresponding events.c and timer.c source code files before further applying Oleg's patches. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Finish CTE timers. CTE implementation is complete now. ([[Aleksey Bragin]])<br />
* Define M_PI_4 too. ([[Aleksey Bragin]])<br />
<br />
===== CDROM =====<br />
<br />
=== STORAGE ===<br />
<br />
==== CLASS ====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Add Windows Server 2003 DDK Cdrom Sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* They both build and run fine, but PCIIDE(x) must be completed/enabled, and atapi must be rewritten to be WDM-compliant. ([[sir_richard]])<br />
* The previous commit message had a typo, these are the Windows XP DDK Samples, not the Server 2003 DDK samples !!! ([[sir_richard]])<br />
<br />
===== CLASS2 =====<br />
* Switch use from DISK_GEOMETRY to DISK_GEOMETRY_EX. It's needed to handle some Windows 2003's kernel routines. ([[Pierre Schweitzer]])<br />
<br />
==== CLASSPNP ====<br />
* Add Windows Server 2003 DDK ClassPNP sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* Convert to spec ([[Timo Kreuzer]])<br />
* basetsd.h] ([[Timo Kreuzer]])<br />
* add POINTER_SIGNED, POINTER_UNSIGNED, SPOINTER_32, UPOINTER_32 ([[Timo Kreuzer]])<br />
* Fix a typo in the spec file ([[Timo Kreuzer]])<br />
* remove debug prints ([[Johannes Anderwald]])<br />
* dedicated to christoph ([[Johannes Anderwald]])<br />
* Use correct type in sizeof expression (CID 1646 and 10401). ([[Roel Messiant]])<br />
* Simplify signature define (CID 3653 and 3654). ([[Roel Messiant]])<br />
* Remove funky 0xFF characters. ([[Roel Messiant]])<br />
<br />
==== IDE ====<br />
<br />
===== UNIATA =====<br />
* Update uniata to 0.40a1. Prepared by Samuel Serapion, edited by me. ([[Aleksey Bragin]]; {{bug|5762}})<br />
* RTL} ([[Timo Kreuzer]])<br />
* Replace RtlMoveMemory x86 asm code with the code from CRT's memmove, which is better. Now we can close bug #1941 ([[Timo Kreuzer]])<br />
* Marco Radossevich <fwdprojects=at=email=dot=it>, a.k.a. forart: ([[Dmitry Gorbachev]])<br />
* Just two important examples that involved my contributions: UniATA & FullFAT." ([[Dmitry Gorbachev]])<br />
* No code changes. ([[Dmitry Gorbachev]])<br />
* See thread <http://www.reactos.org/forum/viewtopic.php?f=14&t=8809> for more details. ([[Dmitry Gorbachev]])<br />
<br />
==== SCSIPORT ====<br />
* Remove some code duplication and fix a bug of copying the same interrupt information twice for a device with 2 interrupts (instead of the info for interrupt 1 then the info for interrupt 2) effectively making initialization fail because the resource allocation code will detect a conflict with itself ([[Cameron Gutman]])<br />
* Add apitests to reactos.dff ([[Timo Kreuzer]])<br />
* Implement support for 2 interrupts ([[Cameron Gutman]])<br />
* Halfplement support for 2 DMA channels ([[Cameron Gutman]])<br />
* Set/Read the CM_RESOURCE_DMA flags ([[Cameron Gutman]])<br />
* Remove a duplicate spin lock initialization ([[Cameron Gutman]])<br />
* Partially tested with 2 interrupts in use but UniATA seems to be broken because it registers both interrupts for each channel even though they are not sharable which causes it to fail when initializing the secondary IDE channel ([[Cameron Gutman]])<br />
* Fix a couple of typos in the DMA code from my last commit ([[Cameron Gutman]])<br />
* ScsiPortConvertPhysicalAddressToUlong takes an ULONG_PTR as input, fix function accordingly and do the "calculation" directly instead of calling RtlConvertUlongToLargeInteger ([[Timo Kreuzer]])<br />
* Spotted by Samuel. ([[Timo Kreuzer]])<br />
* ScsiPortDeviceControl: Slight improvement to buffer length validation. Return failure status on a handful of failure cases. Prevents buffer overruns in user code. ([[Roel Messiant]])<br />
<br />
=== USB ===<br />
<br />
==== NT4COMPAT ====<br />
<br />
===== USBDRIVER =====<br />
* Fix a bug that resulted in us only copying half of the old keyboard data ([[Cameron Gutman]])<br />
* CID 10402 ([[Cameron Gutman]])<br />
<br />
==== DISPLAYS ====<br />
<br />
=== VIDEO ===<br />
<br />
===== VGA_NEW =====<br />
* avoid buffer overrun, CID 11049 ([[Jérôme Gardou]])<br />
* Brought to light by vicmarcal ([[Jérôme Gardou]])<br />
* Use strlen() istead of sizeof() to get the string length from a pointer. CID 10403. ([[Timo Kreuzer]])<br />
<br />
==== MINIPORT ====<br />
<br />
===== VMX_SVGA =====<br />
* Convert a pointer to a WCHAR string to an array of WCHARs to fix sizeof calculation. CID 10404 ([[Timo Kreuzer]])<br />
<br />
==== VIDEOPRT ====<br />
* Add sanity checks ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Implement VideoPortGetCommonBuffer, VideoPortLockPages ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Yugoslavia no longer exists for some time, replaced by Serbia as successor of country code (phone) ([[Matthias Kupfer]])<br />
* Add parameter checks to DeleteEvent and WaitForSingleObject. ([[sir_richard]])<br />
* Fix WaitForSingleObject. It was waiting on the Object paramter itself -- which is the VideoPrt/ENG Event, not a real object, we have to wait on ->pKEvent instead. ([[sir_richard]])<br />
* Fix WaitForSingleObject round two, it was returning the NT_STATUS, while VideoPrt should return VP_STATUS/Win32 error codes. ([[sir_richard]])<br />
<br />
=== WDM ===<br />
<br />
==== AUDIO ====<br />
<br />
===== BACKPLN =====<br />
<br />
====== PORTCLS ======<br />
* Store Miniport object in the device descriptor ([[Johannes Anderwald]])<br />
* Fixes assert in NVidia NForce Audio Driver ([[Johannes Anderwald]])<br />
* Fix check if the pin can be instantiated another time ([[Johannes Anderwald]])<br />
* Remove hack to close old ([[Johannes Anderwald]])<br />
* Add function FreePin to remove its old reference ([[Johannes Anderwald]])<br />
* Fix memory leaks / reference leaks in WavePci pin implementation ([[Johannes Anderwald]])<br />
* Fix memory / reference leaks in WavePci Close implementation ([[Johannes Anderwald]])<br />
* Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM ([[Johannes Anderwald]])<br />
* Remove silence buffer hack ([[Johannes Anderwald]])<br />
* Stub DRM Property Handler ([[Johannes Anderwald]])<br />
* Before stopping the audio pin, fill the dma buffer with silence samples ([[Johannes Anderwald]])<br />
* create a subdevice descriptor for instantiated pins too ([[Johannes Anderwald]])<br />
* Rewrite the topology filter / pin / node property handling ([[Johannes Anderwald]])<br />
* Store property sets of filter / pins / nodes in a common property set array ([[Johannes Anderwald]])<br />
* Write a common dispatch function, which serves as a trampoline for filter / pin / node property requests ([[Johannes Anderwald]])<br />
* Private property handlers of the drivers are now accessible ([[Johannes Anderwald]])<br />
* Fix multiple bugs in round buffer implementation ([[Johannes Anderwald]])<br />
* Should result in less audio glitches, especially when playing audio files with low sample rates. Please report any regressions! ([[Johannes Anderwald]])<br />
* Disable driver specific filter / pin / node property handlers until bug leading to crashes has been found ([[Johannes Anderwald]])<br />
* Fix stupid bug which lead to access an invalid buffer. ([[Johannes Anderwald]])<br />
* dedicated to igorko ([[Johannes Anderwald]])<br />
* Do not leak KSSTREAM_HEADER (48 bytes) for each IOCTL_KS_WRITE_STREAM / IOCTL_KS_READ_STREAM request ([[Johannes Anderwald]])<br />
* Audio stack should now leak less memory ([[Johannes Anderwald]])<br />
* Revert 49356 ([[Johannes Anderwald]])<br />
* This change breaks portcls on WinXP ([[Johannes Anderwald]])<br />
* Add MPU-401 Uart miniport driver from DDK 2003 sample ([[Johannes Anderwald]])<br />
* Add license header ([[Johannes Anderwald]])<br />
* Dear lawyers / worried developers, this is the XP DDK Version. ([[Johannes Anderwald]])<br />
* ASM] ([[Timo Kreuzer]])<br />
* Remove superfluous .code64 ([[Timo Kreuzer]])<br />
* Add some macros for MSVC ([[Timo Kreuzer]])<br />
* Portcls does not need to set the size of the audio buffer for completed irps. This is done in a completion callback in wdmaud. Verified with WinXP portcls ([[Johannes Anderwald]])<br />
* Rewrite internal irp queue handling ([[Johannes Anderwald]])<br />
* It now supports multiple KSSTREAM_HEADERs per Irp, variable sized KSSTREAM_HEADERs per irp. ([[Johannes Anderwald]])<br />
* Store the mapped virtual address not in the KSSTREAM_HEADER, as user programs will receive then invalid addresses ([[Johannes Anderwald]])<br />
* Add checks whether this irp is for an sink pin or source pin ([[Johannes Anderwald]])<br />
* Fix multiple bugs when the pin is looped buffer mode (How did this work before?) ([[Johannes Anderwald]])<br />
* ReactOS portcls + WinXP now properly works with audio recording ([[Johannes Anderwald]])<br />
* Merge from the audio branch ([[Johannes Anderwald]])<br />
* Fix node property handler ([[Johannes Anderwald]])<br />
* Take advantage of IPinCount interface ([[Johannes Anderwald]])<br />
<br />
== HAL ==<br />
* Implement HalStopProfileInterrupt and add required RTC register and flag definitions. ([[Eric Kohl]])<br />
* Check that the interrupt line is not 255 ([[Cameron Gutman]])<br />
* Check that the interrupt pin is not 0 ([[Cameron Gutman]])<br />
* Fixes a failed assertion that Caemyr experienced with an ATI Rage graphics card ([[Cameron Gutman]])<br />
* HalpEnableInterruptHandler: Set the IDT_LATCHED flag if the caller requested a latched interrupt ([[Cameron Gutman]])<br />
* Fix a broken loop that resulted in us registering the resources of multiple COM ports as our KD port ([[Cameron Gutman]])<br />
* Fixes bug #5530 ([[Cameron Gutman]])<br />
* Add INIT_FUNCTION where needed. Will save 860KB later. ([[sir_richard]])<br />
* Disable INIT_FUNCTION to see whether it's responsible for Qemu broken status. Some are complaining of unworking trunk since r49463. ([[Pierre Schweitzer]])<br />
* This will be reverted after tests. ([[Pierre Schweitzer]])<br />
* Make directory/buildfiles for OMAP3-specific HAL. Shared between ZOOM2 and Beagle for now. ([[sir_richard]])<br />
* Convert while (TRUE); to ASSERT(FALSE); on unimplemented pathes. ([[Timo Kreuzer]])<br />
<br />
=== CRT ===<br />
<br />
== INCLUDE ==<br />
* Add powf() wrapper ([[Timo Kreuzer]])<br />
* Remove empty file ([[Gregor Schneider]])<br />
* New implementation of all printf functions. It's stream based (like MS one is) rather than buffer based (like our old is). Floating point is not 100% finished, but current implementation is good enough to boot. It can be enabled by a config switch. ([[Timo Kreuzer]])<br />
* Fix a bug in streamout(), that could cause a buffer overrun and made msvcrt_winetest crash. ([[Timo Kreuzer]])<br />
* In streamout() handle %%, negative fieldwidth and negative precision. ([[Timo Kreuzer]])<br />
* In streamout(): fix a number of formatting bugs, round floats, fix issue with large unsigned values that were treated as signed, simplify some code. ([[Timo Kreuzer]])<br />
* Define JBLEN and JBTYPE for ARM, based on the Windows ARM CRT source code (public). ([[sir_richard]])<br />
* _assert should use DbgRaiseAssertionFailure which is (a) correct and (b) portable, instead of __debugbreak. ([[sir_richard]])<br />
* Fix typos ([[Timo Kreuzer]])<br />
* Fix another typo ([[Timo Kreuzer]])<br />
* Fix bugs in converted asm file. Fixes Firefox color issues. ([[Timo Kreuzer]])<br />
* rename pow_asm.c to powl.c to reflect it's content. ([[Timo Kreuzer]])<br />
* Update "slightly less than all" IDLs to Wine-1.3.9. (Except for shlobj, shobjidl and shtypes.h, and DirectX stuff). ([[Aleksey Bragin]])<br />
* import MSVCRT_I10_OUTPUT from wine ([[Christoph von Wittich]])<br />
* import strtoi64 from wine 1.3.10 ([[Christoph von Wittich]])<br />
* Add missing _A_VOLID definition. ([[Amine Khaldi]])<br />
* Fix bugs in new printf implementation: use buffer size in _snprintf and check for the right failure return value of streamout_char. ([[Timo Kreuzer]])<br />
* Proper fix for r50248 ;-) ([[Colin Finck]])<br />
* Happy New Year from my side as well! ([[Colin Finck]])<br />
* Improve new printf implementation: ([[Timo Kreuzer]])<br />
* remove duplicated code and implement a generic function for all (v)s(w)(n)printf ([[Timo Kreuzer]])<br />
* don't call _flsbuf for string streams, while this works on windows, it doesn't work correctly on reactos (bug!) ([[Timo Kreuzer]])<br />
* Fix return error codes ([[Timo Kreuzer]])<br />
* Fix several bugs in new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a bug in _ecvt that makes msvcrt_winetest::printf crash ([[Timo Kreuzer]])<br />
* Enable new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a number of errors in floating point output. ([[Timo Kreuzer]])<br />
* Set errno when a overflow occurs in strtoull ([[Johannes Anderwald]])<br />
* Fixes 2 wine tests failures in msvcrt:string ([[Johannes Anderwald]])<br />
* Rewrite broken _flsbuf and implement _flswbuf ([[Timo Kreuzer]])<br />
* use _flswbuf in wstreamout ([[Timo Kreuzer]])<br />
* Fixes broken text output in dwnl etc ([[Timo Kreuzer]])<br />
* Fix _flsbuf return value ([[Timo Kreuzer]])<br />
* Improve code readability a bit ([[Timo Kreuzer]])<br />
* Get rid of the old printf code and some unused functions. 3346 lines of code less. ([[Timo Kreuzer]])<br />
* Remove deprecated <if>. ([[Timo Kreuzer]])<br />
* undocuser.h] ([[Giannis Adamopoulos]])<br />
* gather several undocumented definitions for user32 that were defined in several different files, sometimes in the source, sometimes in headers and sometimes defined several times here and there ([[Giannis Adamopoulos]])<br />
* This file should not contain internal user32 definitions but undocumented public definitions ([[Giannis Adamopoulos]])<br />
* Add user32_wsprintf library, with all the wsprintf functions, generated from the same codebase ([[Timo Kreuzer]])<br />
* simplify handling of ll modifier in streamout ([[Timo Kreuzer]])<br />
* Fix miscalculation of number of decimal points to shift for %f format. Should fix shlwapi:string tests and bug 5818. ([[Timo Kreuzer]])<br />
* Fix uninitialized warning ([[Timo Kreuzer]])<br />
* Replace isinf with !_finite and isnan with _isnan ([[Timo Kreuzer]])<br />
* Cleanup math.h from unixism. For now move everything that doesn't belong there into mingw_math.h. ([[Timo Kreuzer]])<br />
* effects dialog doesn't affect the color scheme (commented out until fixed finally) ([[Matthias Kupfer]])<br />
* save the KeyboardCues value correctly ([[Matthias Kupfer]])<br />
<br />
=== DDK ===<br />
* Add missing classpnp.h ([[Amine Khaldi]])<br />
* classpnp.h: Add FUNCTIONAL_DEVICE_EXTENSION, SET_FLAG, CLEAR_FLAG and TEST_FLAG ([[Amine Khaldi]])<br />
* Add some more missing definitions. ([[Amine Khaldi]])<br />
* Fix a typo and introduce some minor formatting changes. ([[Amine Khaldi]])<br />
* Add missing min and max macros. ([[Amine Khaldi]])<br />
* Add misisng MmLockPagableCodeSection. ([[sir_richard]])<br />
* Fix ClassDebugPrint prototype. ([[Amine Khaldi]])<br />
* Fix RtlStringCbPrintf prototypes. ([[Amine Khaldi]])<br />
* Add dmusprop header ([[Johannes Anderwald]])<br />
* Add IMP_PowerNotify macro to portcls.h ([[Johannes Anderwald]])<br />
* Add IID_IMusicTechnology guid to portcls.h ([[Johannes Anderwald]])<br />
* Add GTI_XXX macros to portcls.h ([[Johannes Anderwald]])<br />
* Remove broken definitions of KSPROPSETID_Synth, KSPROPSETID_Synth_Dls. They are defined in dmusprop.h ([[Johannes Anderwald]])<br />
* Add KSDATARANGE_MUSIC to ksmedia.h ([[Johannes Anderwald]])<br />
* Add KSMUSIC_TECHNOLOGY, KSDATAFORMAT_SUBTYPE_MIDI_BUS, KSAUDFNAME_MIDI, KSNODETYPE_SYNTHESIZER to ksmedia.h ([[Johannes Anderwald]])<br />
* FsRtlRemoveBaseMcbEntry() return is VOID ([[Pierre Schweitzer]])<br />
* Oleg Baikalow: Fix NDIS macros. ([[Aleksey Bragin]])<br />
<br />
=== NDK ===<br />
* Add MMVAD_SHORT. ([[sir_richard]])<br />
* Fix definition of ARM PTE/PDE structure. ([[sir_richard]])<br />
* Add IMAGE_FILE_MACHINE_NATIVE ([[Timo Kreuzer]])<br />
* Add RTL_TRACE_BLOCK structure definition. ([[Aleksey Bragin]])<br />
<br />
=== PSDK ===<br />
* Add some missing structures in ioevent.h ([[Amine Khaldi]])<br />
* Add some missing IOCTL_* definitions. ([[Amine Khaldi]])<br />
* Add missing ntddmmc.h definitions. ([[Amine Khaldi]])<br />
* Add CDROM_TOC_SESSION_DATA structure. ([[Amine Khaldi]])<br />
* Add missing header's header. ([[Amine Khaldi]])<br />
* Add missing SEC_XXX definitions for Server 2003 (Vista ones still missing). ([[sir_richard]])<br />
* Add more track popup menu types. ([[James Tabor]])<br />
* Add INET_E_USE_DEFAULT_SETTING definition ([[Cameron Gutman]])<br />
* Add ICONINFOEX* definitions and GetIconInfoEx* declarations from Wine. ([[Aleksey Bragin]])<br />
* Add NOMIRRORBITMAP definition. ([[Aleksey Bragin]])<br />
* Add DecryptFileA/W prototype. ([[Eric Kohl]])<br />
* add TrustedDomainAuthInformationInternal and TrustedDomainFullInformationInternalFix to _TRUSTED_INFORMATION_CLASS. ([[Jérôme Gardou]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* reverts the previous revert, fixed definition of NULL to __null in stddef.h ([[Timo Kreuzer]])<br />
* Don't define __in and __null on c++ build. as long as we keep using host headers, this won't work ([[Timo Kreuzer]])<br />
* Comment out specstrings.h inclusion in windef.h as per Timo's request. ([[Sylvain Petreolle]])<br />
* Add missing DbgRaiseAssertionFailure inline to winnt.h header. ([[sir_richard]])<br />
* Oleg Baikalow: Add missing definitions to ipexport.h. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't call TDIEntityID structure and type with the same name. ([[Aleksey Bragin]])<br />
* Bug 5756: TRANSLATION: multiple modules: Bulgarian by CCTAHEB ([[Daniel Reimer]])<br />
* Bug 5761: TRANSLATION: Czech translation update by Radek Liska ([[Daniel Reimer]])<br />
* Fix for Fox Audio Player. Newest Version and leading to a Setup with libmpg ([[Daniel Reimer]])<br />
* Add missing definitions. ([[Aleksey Bragin]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Remove svn:merge info ([[Johannes Anderwald]])<br />
<br />
=== REACTOS ===<br />
<br />
==== LIBS ====<br />
<br />
===== PSEH =====<br />
* Allow configuration of native SEH vs PSEH vs dummy PSEH with macro definitions (USE_NATIVE_SEH, USE_DUMMY_PSEH) ([[Timo Kreuzer]])<br />
<br />
===== CSRSS =====<br />
<br />
==== SUBSYS ====<br />
* Should use MEM_COMMIT | MEM_RESERVE, not just MEM_COMMIT when requesting a range of adress space that wasn't already reserved. This works in ReactOS because, well, no reason to explain why, but it wouldn't work on Windows or with a VAD-based kernel. ([[sir_richard]])<br />
* Initialise PPB to zero. (Roel)<br />
* The change from NtAllocateVirtualMemory to RtlAllocateHeap causes the memory to (Roel)<br />
* be not automatically initialised to zero anymore. (Roel)<br />
* Not every field of the PPB (for which the memory is allocated) gets explicitly (Roel)<br />
* initialised, meaning this results in them having bogus values. (Roel)<br />
* One of the now uninitialised fields is DebugFlags, which results in (Roel)<br />
* DbgBreakPoint being called in NtProcessStartup. Simply ensuring the memory is (Roel)<br />
* zeroed makes it all better again. (Roel)<br />
* Katayama Hirofumi: ([[Sylvain Petreolle]])<br />
* Add / update Japanese translations. ([[Sylvain Petreolle]])<br />
* Fix typos in calc en-US resource. ([[Sylvain Petreolle]])<br />
* Bug #5673,5674,5675,5676. ([[Sylvain Petreolle]])<br />
<br />
==== WIN32K ====<br />
* Coding for PrintWindow support for bug 5609. This does not fix the export, which should be a direct call to win32k. ([[James Tabor]])<br />
* Cleanup UserSetCursorPos ([[Giannis Adamopoulos]])<br />
* UserSetCursorPos: set the new position after sending WM_MOUSEMOVE message ([[Giannis Adamopoulos]])<br />
* now we pass all tests for SetCursorPos ([[Giannis Adamopoulos]])<br />
* fix GeoID bug (forgotten \0) ([[Matthias Kupfer]])<br />
* clean up EXLATEOBJ before error path in NtGdiBitBlt ([[Jérôme Gardou]])<br />
* Implement win32k support functions for Get and Set process default layout. ([[James Tabor]])<br />
* Due to changes with wine it will be difficult to sync when RTL support is being added to ComCtl32. ([[James Tabor]])<br />
* Fix future wine sync user32 win test for get process default layout with null parameter. ([[James Tabor]])<br />
* Return the correct complexity, pass all user32 wine test_winregion tests. ([[James Tabor]])<br />
* PSDK ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Edison Henrique Andreassy <ehasis@hotmail.com>: Add FILEMUIINFO definition. ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Fixed ValidateTimerCallback, always returning true and just spinning in the loop. ([[James Tabor]])<br />
* Add one more process information flag with a point type and capturing the hit test in desktop structure. ([[James Tabor]])<br />
* Reduce duplicated code in co_UserCreateWindowEx, co_IntSetParent and co_WinPosSetWindowPos ([[Giannis Adamopoulos]])<br />
* based on wine ([[Giannis Adamopoulos]])<br />
* Don't place new windows with default position at the top left corner of the screen ([[Giannis Adamopoulos]]; {{bug|5484}})<br />
* Send WM_PARENTNOTIFY message when a window is destroyed ([[Giannis Adamopoulos]])<br />
* co_UserDestroyWindow: Send WM_PARENTNOTIFY message in correct order ([[Giannis Adamopoulos]])<br />
* Roel Messiant: Return correct address in the user heap commit routine. Should fix boot with the new heap manager. ([[Aleksey Bragin]])<br />
* Fix an ancient FIXME in PATH_PathToRegion ([[Giannis Adamopoulos]])<br />
* Move checks for active hooks in co_HOOK_CallHooks ([[Giannis Adamopoulos]])<br />
* Remove the FreeLParam 'feature' from win32k. This hack allowed us to post messages that contain pointers. However we don't do it anymore so we can also remove this as well ([[Giannis Adamopoulos]])<br />
* Add keyboard messages to the list with Hardware messages and not in the list with post messages ([[Giannis Adamopoulos]])<br />
* Disable checking if a hook is active. It is safe to disable it for now because it is just an optimization. If we try to call a hook when it is not active, it will fail anyway when it tries to find the hook. Fixes calling low level hooks ([[Giannis Adamopoulos]])<br />
* When we try to call a hook with null hook proc will cause a crash in user32. Add an assertion in win32k in order to catch the problem a bit earlier ([[Giannis Adamopoulos]])<br />
* Clean up co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* Renove some unneccessary casts ([[Timo Kreuzer]])<br />
* Fix an exception when set condition * first always is used then moving the mouse. There seems to be an initialization issue (The Init Bug) and not setting a desktop. ([[James Tabor]])<br />
* Fix typos found by Mephisto on IRC, also add some debug prints in SetWindowsHookEx to see what hooks are installed. ([[James Tabor]])<br />
* Do not override WH_JOURNALPLAYBACK results if zero. ([[James Tabor]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereferences. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Improve the code to enumerate monitors. ([[Timo Kreuzer]])<br />
* Don't use custom MIN / MAX / ABS macros ([[Timo Kreuzer]])<br />
* Calculate distance by r^2 = x^2 + y^2 ([[Timo Kreuzer]])<br />
* Use RECTL_bIntersectRect instead of code duplication ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference ([[Timo Kreuzer]])<br />
* pass bottom-right exclusive rect to IntGetMonitorsFromRect from NtUserMonitorFromPoint ([[Timo Kreuzer]])<br />
* Don't handle MONITOR_DEFAULTTOPRIMARY and MONITOR_DEFAULTTONEAREST twice ([[Timo Kreuzer]])<br />
* Use unsigned variables for unsigned values ([[Timo Kreuzer]])<br />
* Don't check the result of a UINT returning function for < 0 ([[Timo Kreuzer]])<br />
* Improve readability ([[Timo Kreuzer]])<br />
* message.c: ([[Giannis Adamopoulos]])<br />
* Don't use RETURN macro ([[Giannis Adamopoulos]])<br />
* Correctly use SEH. Use _SEH2_YIELD ([[Giannis Adamopoulos]])<br />
* Roel Messiant: ([[Aleksey Bragin]])<br />
* Heap corruption fixes. ([[Aleksey Bragin]])<br />
* remove rtl dependency ([[Johannes Anderwald]])<br />
* thanks to mephisto! ([[Johannes Anderwald]])<br />
* Fix mdl probe access rights ([[Johannes Anderwald]])<br />
* Fix possible use of uninitialized variable. Spotted by Amine. ([[Timo Kreuzer]])<br />
* Remove obsolete code ([[Johannes Anderwald]])<br />
* Thanks to Amine ([[Johannes Anderwald]])<br />
* Fix a bug in InitVideo: when looping through the adapters, reinitialize the cbValue before querying the registry. ([[Timo Kreuzer]])<br />
* Also handle failure. ([[Timo Kreuzer]])<br />
* Lock thread when removing hooks. ([[James Tabor]])<br />
* Track end of life thread when removing hooks. ([[James Tabor]])<br />
* Disable GDI_DEBUG. It's using > 20 MB memory. Too much for some people ;-) ([[Timo Kreuzer]])<br />
* Change all Init functions to be NTAPI instead of FASTCALL, return NTSTATUS, and be an INIT_FUNCTION (saving incredible 2k). Simplify the initialization sequence by using a simple macro. Delete a comment that is not true anymore. ([[Timo Kreuzer]])<br />
* Move some globals to appropriate file. ([[Timo Kreuzer]])<br />
* Make InitVideo return NTSTATUS and properly handle failure ([[Timo Kreuzer]])<br />
* Silence a DPRINT, improve a DPRINT ([[Timo Kreuzer]])<br />
* Turn off debug prints. ([[James Tabor]])<br />
* Fixed WaitForInputIdle, finally!, passed all the wine tests for it. ([[James Tabor]])<br />
* Moved Get/Peek message to the new all in one support routine. ([[James Tabor]])<br />
* Foreground hook hits one out of five, this needs more research. ([[James Tabor]])<br />
* Attempted to workout synchronizing issues with low level and regular hooks. ([[James Tabor]])<br />
* Simplify co_IntPeekMessage even more ([[Giannis Adamopoulos]])<br />
* Rename MsqInsertSystemMessage to MsqInsertMouseMessage ([[Giannis Adamopoulos]])<br />
* Bug 5726: PATCH: regedit: Language File skeleton strings (geekdundee<A_T>gmail.com) ([[Daniel Reimer]])<br />
* Bug 5735: PATCH: updated slovak translations by Mario Kacmar ([[Daniel Reimer]])<br />
* Bug 5740: TRANSLATION: rapps: polish (wojtekkozlo664<A_T>op.pl) ([[Daniel Reimer]])<br />
* Updated the Rapps Versions, too. ([[Daniel Reimer]])<br />
* Fix hooks, do not cleanup hooks when any window from the same thread is destroyed. ([[James Tabor]])<br />
* Tweaks to hook and event timeouts. Increase performance with DOSBox when using mouse and keyboard. ([[James Tabor]])<br />
* Some more cleanup ([[Giannis Adamopoulos]])<br />
* Test for hooks before setting up for a hook call. This eliminates overhead. ([[James Tabor]])<br />
* Fix one of the greatest hacks in message handling: do not wake up every message queue when there is mouse or keyboard input ( wake only the thread that must take input) ([[Giannis Adamopoulos]])<br />
* rewrite co_WinPosWindowFromPoint, co_MsqInsertMouseMessage and co_MsqPeekHardwareMessage ([[Giannis Adamopoulos]])<br />
* port co_IntProcessMouseMessage and MsqSendParentNotify from wine ([[Giannis Adamopoulos]])<br />
* call co_IntProcessHardwareMessage from co_MsqPeekHardwareMessage, and not from co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* move co_IntProcessHardwareMessage, co_IntProcessKeyboardMessage and co_IntProcessMouseMessage to msgqueue.c ([[Giannis Adamopoulos]])<br />
* Apply workaround for POINT / POINTL, like for the others ([[Timo Kreuzer]])<br />
* Restore capturing the hit test in the desktop structure. Move journal record hook before sending the mouse hook. ([[James Tabor]])<br />
* revert r49718 ([[Timo Kreuzer]])<br />
* Remove some unused functions ([[Giannis Adamopoulos]])<br />
* move several user stubs in ntstubs.c ([[Giannis Adamopoulos]])<br />
* More fixes to In Send and Reply message support. ([[James Tabor]])<br />
* More fixes to In Send message support. One more case fixed in looping back. ([[James Tabor]])<br />
* Amend to r41772. Allow PostMessage to handle DDE messages ([[Giannis Adamopoulos]])<br />
* In FNID_SENDMESSAGECALLBACK use SEH before accesing the user-mode buffer ([[Giannis Adamopoulos]])<br />
* Merge r49994 and r49995 from reactx branch ([[Timo Kreuzer]])<br />
* Use the new version of NtUserGetMessage and NtUserPeekMessage written by Jim. It is possible to use them now because GetMessage and PeekMessage don't return messages that contain pointers. As a result they don't need to do any extra work to copy the message to user mode. All messages that contain pointers are sent messages and this means that they don't get into the message loop. Instead they are passed directly to the window proc. ([[Giannis Adamopoulos]])<br />
* DispatchMessage works only if the target window belongs to the current thread. This lets us remove uneeded copies of lparam to user mode. ([[Giannis Adamopoulos]])<br />
* Remove an unneeded debug message ([[Giannis Adamopoulos]])<br />
* remove some more unnecessary debug output ([[Giannis Adamopoulos]])<br />
* Silence 3 DPRINTs ([[Timo Kreuzer]])<br />
* NtGdiGetDIBitsInternal: Copy the requested amount of scanlines into the return buffer, not the whole bitmap. Should fix bug #5766. ([[Roel Messiant]])<br />
* Remove co_IntPostOrSendMessage and use co_IntSendMessageNoWait where possible ([[Giannis Adamopoulos]])<br />
* Improve "not enough memory" check when creating a bitmap ([[Jérôme Gardou]])<br />
* use correct function to set the last error. ([[Jérôme Gardou]])<br />
* Make sure to initialize our page operation mutex. ([[Art Yerkes]])<br />
* Scan the whole range of the MemoryArea for pages to evict. ([[Art Yerkes]])<br />
* This fixes cache section page eviction. ([[Art Yerkes]])<br />
* IntCreateWindow: Fill out MaximumLength field of the window name. Fixes potential buffer overflow in at least NtUserDefSetText. ([[Roel Messiant]])<br />
* Fix EngGetLastError and EngSetLastError ([[Timo Kreuzer]])<br />
* Remove SetLastWin32Error and use EngSetLastError instead ([[Timo Kreuzer]])<br />
* Fixes bug 5792 and Get/PeekMessage tests. I noticed co_IntPostOrSendMessage to co_IntSendMessageNoWait changes when it should have been changed to co_IntSendMessage. Same as co_IntSendMessage to co_IntSendMessageNoWait when it should have not changed.... I'm sorting it out. ATM win test locks up and the system shutdown box is not present only the text message. ([[James Tabor]])<br />
* Use SendNotifyMessage for broadcasting these messages and SendMessageNoWait when not broadcasting. ([[James Tabor]])<br />
* Fix all the user32 wine win test_CreateWindow tests. ([[James Tabor]])<br />
* Fix all the user32 wine win test_enum_thread_windows tests. ([[James Tabor]])<br />
* Update note after 50205. ([[James Tabor]])<br />
* NtUserSetWindowFNID, sets user client side window function Ids, expands to ghost. ([[James Tabor]])<br />
* Allocate/free GRE events directly from pool, instead of using Eng APIs. Use documented tag for GRE Events (Dfsm), found in pooltag.txt ([[sir_richard]])<br />
* Implement EngMapEvent and EngUnmapEvent. ([[sir_richard]])<br />
* Improve LDEVOBJ_bLoadImage, use ExportSectionPointer from the GdiDriverInfo structure instead of calling RtlImageDirectoryEntryToData ([[Timo Kreuzer]])<br />
* Implement NtGdiGetBoundsRect and NtGdiSetBoundsRect. (Samuel)<br />
* Access the DC member directly instead of using IntGdiGetDCOrg ([[Timo Kreuzer]])<br />
* Remove unused IntGdiGetDCOrg, GdiSetDCOrg, GdiGetDCOrgEx ([[Timo Kreuzer]])<br />
* Simplify error checks, by reordering code in NtGdiScaleViewportExtEx ([[Timo Kreuzer]])<br />
* Simplify exception handling, use _SEH2_YIELD ([[Timo Kreuzer]])<br />
* Change function order ([[Timo Kreuzer]])<br />
* Minor code improvements ([[Timo Kreuzer]])<br />
* Fix type of DCLEVEL::prgnClip / prgnMeta (PVOID -> PREGION) ([[Timo Kreuzer]])<br />
* Move NtGdiGetRandomRgn to dcobjs.c ([[Timo Kreuzer]])<br />
* TRANSLATION: Fix browseui bulgarian resource filename. ([[Sylvain Petreolle]])<br />
* Fix a bug in FLOATOBJ_DivLong ([[Timo Kreuzer]])<br />
* Use if, instead of switch to handle flags in XFORMOBJ_bXformFixPoints ([[Timo Kreuzer]])<br />
* Define XFORMOBJ to EXFORMOBJ, a stack object that links to the matrix ([[Timo Kreuzer]])<br />
* There is no spoon. ([[Timo Kreuzer]])<br />
* Improve NtGdiStretchDIBitsInternal, use _SEH2_YIELT instead of saving an NTSTATUS and handle the fast path in place instead of setting a BOOL variable. Fixes warnings about uninitialized variables. ([[Timo Kreuzer]])<br />
* In BitmapFormat, allow intermediate bpp values, use ULONG as parameter type, instead of WORD and DWORD ([[Timo Kreuzer]])<br />
* In NtGdiCreateBitmap get the real bpp value from the gajBitsPerFormat array ([[Timo Kreuzer]])<br />
* Add back check of too large nWidth (needed to make sure, cjWidthBytes didn't overflow) ([[Timo Kreuzer]])<br />
* Merge all parameter checks ([[Timo Kreuzer]])<br />
* Check cPlanes and cBitsPixel paramters explicitly ([[Timo Kreuzer]])<br />
* Use GreCreateBitmapEx ([[Timo Kreuzer]])<br />
* Remove BITMAP_GetRealBitsPixel ([[Timo Kreuzer]])<br />
* In GreCreateBitmapEx handle allocation failure in the rle hack path and set LastError, when failed to allocate bitmap bits. ([[Timo Kreuzer]])<br />
* Cleanup pooltags a little, use official tags where known and applicable. ([[Timo Kreuzer]])<br />
* Fix use of XFORMOBJ. Should fix gdi32_winetest clipping regression and release breakage. ([[Timo Kreuzer]])<br />
* Win32k implementation of GetCharacterPlacementW, work is dedicated to the late Professor John Collins. ([[James Tabor]])<br />
* Implement NtGdiCreateMetafileDC. ([[James Tabor]])<br />
* Since most of the gdi work I committed is being reverted or if'ed out of existence, this will be the last. ([[James Tabor]])<br />
* Remove debugging code. ([[Timo Kreuzer]])<br />
* Don't trat BI_BITFIELDS as compressed format in DIB_CreateDIBSection. Fixes KSStudio. Why it was introduced by r48359? I don't know. It was broken before. I refrain from making any more comments about that piece of ... code. ([[Timo Kreuzer]]; {{bug|5781}})<br />
* Don't leak the memory for DIB sections. we set BMF_DONT_FREE in SURFACE_bSetBitmapBits, when the caller provides bits. This needs to be reconsidered. ([[Timo Kreuzer]])<br />
* In UserSetCursor, return a pointer to the old cursor, not the handle ([[Timo Kreuzer]]; {{bug|5722}})<br />
* really delete the pointer shape when NULL cursor is set, instead of just hiding it. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Move reference handling completely to NtUserSetCursor ([[Timo Kreuzer]]; {{bug|5722}})<br />
* In UserChangeDisplaySettings, set NULL cursor before change and restore old cursor after change to make sure we have the right color format. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Reset monitor size after mode switch. (rafalh; {{bug|5727}})<br />
* Go back to hiding the cursor with GreMovePointer, instead of setting NULL bitmaps. While MSDN states that psoColor and psoMask can both be NULL in DrvSetPointerShape, it doesn't explicitly say anything about both being NULL at the same time. VBox driver doesn't expect that and will crash, so most likely windows doesn't do this. ([[Timo Kreuzer]])<br />
* Set correct error value on failure in NtUserSetCursor. (Victor)<br />
* Portability bugfixes ([[Thomas Bluemel]])<br />
* Create a security descriptor for the desktops rather than passing the ACLs in as a security descriptor ([[Thomas Bluemel]])<br />
* Fix draw of cursors in static controls ([[Matthias Kupfer]])<br />
* Last part of fix for bug #4874 ([[Matthias Kupfer]])<br />
* Implement GetClassLongPtrA/W ([[Thomas Bluemel]])<br />
* Fix replaced by more flexible code for arbitrary cursor sizes ([[Matthias Kupfer]])<br />
* Fix crash with standalone win test_hind_message test. ([[James Tabor]])<br />
* Fix buggy mechanism of pushing and popping free gdi handle slots. The old mechanism unneccessarily locked the entry and it was prone to the ABA problem as it didn't use a sequence number. ([[Timo Kreuzer]])<br />
* Fix a bug in calculation of the background color for 32bpp -> 1bpp color translations. ([[Timo Kreuzer]])<br />
* Fixes bug 2372 ([[Timo Kreuzer]])<br />
* add missing file ([[Timo Kreuzer]])<br />
* Add GetTransform declaration. (until we have undocgdi.h). ([[Aleksey Bragin]])<br />
* Enable simple FontSmoothing by default. It matters for arwinss, trunk just ignores this value and always smoothes the fonts. ([[Aleksey Bragin]])<br />
* Robert Horvath: LocalUnlock has to be different from GlobalUnlock. The subtle difference between LocalUnlock and GlobalUnlock, is, that the former will return FALSE and set ERROR_NOT_LOCKED on LMEM_FIXED allocations. Fixes 1 kernel32:heap failure. ([[Aleksey Bragin]]; {{bug|5869}})<br />
* Robert Horvath: Add GlobalFlag entry in hivesys_{arch}.inf with the default value 0x0. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Add a missing ORing of the registry-loaded GlobalFlags value in ExpInitializeExecutive. Thanks to Robert Horvath for spotting the issue. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Merge all amd64 related changes from cmake branch ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 1 ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 2 ([[Timo Kreuzer]])<br />
* Edijs: Properly load window size and position. ([[Aleksey Bragin]]; {{bug|5872}})<br />
* Handle BITMAPV4HEADER and BITMAPV5HEADER, when creating a DIB palette. Detect PAL_RGB like done with PAL_BGR in PALETTE_AllocPalette (optimization). ([[Timo Kreuzer]])<br />
* Fixes pink icons. ([[Timo Kreuzer]])<br />
* Remove some artifact from ARM build. ([[Pierre Schweitzer]])<br />
* Fix initialization of XLATEOBJ, when source and dest format are equal. (Thomas; {{bug|5828}})<br />
* Remove gexloTrivial, it was never used ([[Timo Kreuzer]])<br />
* Remove EXLATEOBJ_vInitTrivial and move the code into EXLATEOBJ_vInitialize ([[Timo Kreuzer]])<br />
* Properly set XO_TABLE ([[Timo Kreuzer]])<br />
* Set ppalDstDc in EXLATEOBJ_vInitXlateFromDCs ([[Timo Kreuzer]])<br />
<br />
=== 3RDPARTY ===<br />
<br />
== LIB ==<br />
==== FREETYPE ====<br />
===== INCLUDE =====<br />
====== FREETYPE ======<br />
======= CONFIG =======<br />
* Instead of having 4 template rbuild configuration files that must be kept in-sync, maybe there should be a generic one that they all inherit from? ([[sir_richard]])<br />
* Add new property settings that exist in x86, but not ARM because nobody added them there. For example, nor cc, nor cache were being built on ARM, because NEWCC was undefined (which isn't treated as 0 by rbuild). ([[sir_richard]])<br />
* How I long for CMAKE. ([[sir_richard]])<br />
<br />
======= DATA =======<br />
<br />
======== XML ========<br />
<br />
===== ICU =====<br />
<br />
====== SOURCE ======<br />
<br />
==== ICU4ROS ====<br />
<br />
==== MINGW ====<br />
* Don't compile atonexit.c. atexit is exported from msvcrt. ([[Timo Kreuzer]])<br />
* Revert r50267 ([[Timo Kreuzer]])<br />
<br />
==== SOUND ====<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
* Getting device capabilities requires the unicode version of the structure ([[Johannes Anderwald]])<br />
* Implement MIDM_OPEN, MIDM_CLOSE, MIDM_START, MIDM_STOP ([[Johannes Anderwald]])<br />
* Implement MODM_OPEN, MODM_CLOSE ([[Johannes Anderwald]])<br />
* Refactor MmeOpenWaveDevice into MmeOpenDevice add add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Refactor MmeCloseWaveDeivce into MmeCloseDevice and add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Handle mixers identified by id, not by handle ([[Johannes Anderwald]])<br />
* Fix opening of mixer devices ([[Johannes Anderwald]])<br />
* Waveformat struct is only provided when type is wave device ([[Johannes Anderwald]])<br />
* Implement wave reset routine, fixes audio recording on ReactOS SndRec, AudaCity etc. Also fixes random hang in WinAmp when skipping audio bytes ([[Johannes Anderwald]])<br />
* Implement wave pausing / restarting, should lead to smoother playback ([[Johannes Anderwald]])<br />
<br />
===== MMIXER =====<br />
* Rewrite topology node enumeration algorithm ([[Johannes Anderwald]])<br />
* Old algorithm didnt properly take in account sum/mux nodes, may assign nodes to multiple lines and was not able to detect circuits which may lead to infinite loops ([[Johannes Anderwald]])<br />
* New algorithm properly partitions the nodes and also checks if nodes has already been assigned. As a plus, it is also faster ([[Johannes Anderwald]])<br />
* Algorithm based on msdn http://msdn.microsoft.com/en-us/library/ff538873(v=VS.85).aspx ([[Johannes Anderwald]])<br />
* Tested on VBox 3.28 (AC97) ([[Johannes Anderwald]])<br />
* Please retest supported soundcards for regressions ([[Johannes Anderwald]])<br />
* Implement support routines which get called when a topology node changes its state ([[Johannes Anderwald]])<br />
* Volume changes / mute on/off changes should now be broadcasted again to all listening applications ([[Johannes Anderwald]])<br />
* Add support for topologies where pins directly connect to other pins without nodes in between ([[Johannes Anderwald]])<br />
* Check if the topology contains node. Fixes assert hit in VmWare Player(sound is not working) ([[Johannes Anderwald]])<br />
* Thanks to Caemyr for testing ([[Johannes Anderwald]])<br />
* Disable assert for now ([[Johannes Anderwald]])<br />
* Amendment to rev. 49167 requested by Caemyr. ([[Kamil Hornicek]])<br />
* Apply a hack to filter out pins, which are not part of filter node processing path ([[Johannes Anderwald]])<br />
* The hack filters out all pins which have a physical connection. Ideally the code should check if the pin is part of a different rendering path and in that case remove the pin. ([[Johannes Anderwald]])<br />
* Revert 49167 ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Kernel streaming pins need to transit states from Run -> Pause -> Acquire -> Stop. ([[Johannes Anderwald]])<br />
* Fixes SB Live playback hang on last tone when stopping playback ([[Johannes Anderwald]])<br />
* Enumerate MIDI devices and provide all necessary functions to deal with them ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Tons of fixes to enumeration of mixerlines, controls / etc ([[Johannes Anderwald]])<br />
* Fix mixer event notification callbacks ([[Johannes Anderwald]])<br />
* For more info, read audio-bringup log ([[Johannes Anderwald]])<br />
<br />
=== LSALIB ===<br />
* Fix compiler warnings for AMD64 build. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
* Fix PCI group key ([[Johannes Anderwald]])<br />
<br />
== NTOSKRNL ==<br />
* IoRegisterPlugPlayNotification: Do not fail if no Interface can be found for the given GUID. Just do not call the Callback-Routine in this case. The Interface could be created later. ([[Eric Kohl]])<br />
* disable some locale IDs because they are not supported yet ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 417 Rhaeto-Romanic ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 445 Bengali (India) ([[Matthias Kupfer]]; {{bug|5636}})<br />
* or still unknown ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 48f ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 490 ([[Matthias Kupfer]]; {{bug|5636}})<br />
* this fixes multiple entries () ([[Matthias Kupfer]]; {{bug|5636}})<br />
* Implement NtQueryOpenSubKeys. ([[Eric Kohl]])<br />
* Add amd64 versions of MI_MAKE_PROTOTYPE_PTE and MiProtoPteToPte ([[Timo Kreuzer]])<br />
* Remove outdated external declarations ([[Timo Kreuzer]])<br />
* disable deprecated amd64 code ([[Timo Kreuzer]])<br />
* use MiFillSystemPageDirectory only for 2 paging levels ([[Timo Kreuzer]])<br />
* Alternative workaround for pentium lock errata: Instead of burdening the page fault handler, just mark the IDT page as Write-Through if the bug is present. According to http://www.rcollins.org/Errata/Dec97/F00FBug.html it shall prevent the lock up. Please test. Dedicated to elhoir. ([[Timo Kreuzer]])<br />
* Fix ARC names accordingly ([[Pierre Schweitzer]])<br />
* Don't ignore IopCreateArcNames() return while booting. ([[Pierre Schweitzer]])<br />
* At the moment, it's just returning STATUS_SUCCES but it will be changed later. ([[Pierre Schweitzer]])<br />
* Fixed a FIXME in ARC names by implementing IopStoreSystemPartitionInformation(). This make ReactOS writing boot paths to registry. ([[Pierre Schweitzer]])<br />
* On boot, while loading drivers, make starting Loader Block available to the whole kernel to let drivers calling on-boot functions that may need it. ([[Pierre Schweitzer]])<br />
* One of them will be implemented later. ([[Pierre Schweitzer]])<br />
* Implement SeImpersonateClientEx() and simplify SeImpersonateClient(). ([[Eric Kohl]])<br />
* Replace \" with "" in resource files. This makes CMAKE build way more silent. Needs to be merged. ([[Daniel Reimer]])<br />
* TBD find a way to silent warnings happening due to \n in strings. ([[Daniel Reimer]])<br />
* Implemented FstubAllocateDiskInformation(), FstubDbgGuidToString(), FstubDbgPrintDriveLayoutEx(), FstubDbgPrintPartitionEx(), FstubDetectPartitionStyle(), FstubFreeDiskInformation(), FstubGetDiskGeometry(), FstubReadPartitionTableMBR(), FstubReadSector() ([[Pierre Schweitzer]])<br />
* Stubbed FstubReadPartitionTableEFI() ([[Pierre Schweitzer]])<br />
* This leads to a correct & working implementation of IoReadPartitionTableEx(). As this state, it only handles MBR partition tables as EFI/GPT as been stubbed out. ([[Pierre Schweitzer]])<br />
* EFI/GPT support will come later. ([[Pierre Schweitzer]])<br />
* Implemented IopFetchConfigurationInformation(), IopCreateArcNamesCd(), IopCreateArcNamesDisk(), IopVerifyDiskSignature() ([[Pierre Schweitzer]])<br />
* Removed IopApplyRosCdromArcHack(), IopGetDiskInformation(), IopAssignArcNamesToCdrom() ([[Pierre Schweitzer]])<br />
* Finally, rewritten IopCreateArcNames() ([[Pierre Schweitzer]])<br />
* To make it short, this is the rewrite of ARC names handling in the kernel. ([[Pierre Schweitzer]])<br />
* This brings our kernel to a higher state of existence. Indeed, it's leaving NT4 design for a proper NT5.2 design, with less hacks, less ROS specific stuff and such. ([[Pierre Schweitzer]])<br />
* This code handles the mount manager we don't have yet. ([[Pierre Schweitzer]])<br />
* Implemented FstubAdjustPartitionCount(), FstubConvertExtendedToLayout(), FstubCopyEntryEFI(), FstubCreateDiskMBR(), FstubCreateDiskEFI(), FstubCreateDiskRaw(), FstubDbgPrintSetPartitionEx(), FstubReadHeaderEFI(), FstubReadPartitionTableEFI(), FstubSetPartitionInformationEFI(), FstubVerifyPartitionTableEFI(), FstubWriteBootSectorEFI(), FstubWriteEntryEFI(), FstubWriteHeaderEFI(), FstubWritePartitionTableEFI(), FstubWritePartitionTableMBR(), FstubWriteSector() ([[Pierre Schweitzer]])<br />
* Implemented IoCreateDisk(), IoGetBootDiskInformation(), IoReadDiskSignature(), IoSetPartitionInformationEx(), IoVerifyPartitionTable(), IoWritePartitionTableEx() ([[Pierre Schweitzer]])<br />
* To sum up, this commit finishes FSTUB API implementation in the ReactOS kernel. This means one important thing: now ReactOS kernel knows about a bit about EFI and about GPT. No need to say that it's the first step into EFI support. But a lot more work is needed. Especially since the kernel is the only real entity in ReactOS to handle GPT. All the rest of the OS doesn't know anything about GPT. ([[Pierre Schweitzer]])<br />
* A small note about FstubVerifyPartitionTableEFI(). This function is supposed to check whether a disk formated with GPT is valid, and if it's not, to fix it. First step is implemented. Second step isn't yet supported. ([[Pierre Schweitzer]])<br />
* A general note about all that stuff: on GPT, backup table isn't properly handled for the moment, as ReactOS is experiencing disk geometry issues. That means it's not having the proper disk sectors count and then, can't find the backup table (which is located on last disk sector). ([[Pierre Schweitzer]])<br />
* References: ([[Pierre Schweitzer]])<br />
* http://www.intel.com/technology/efi/ ([[Pierre Schweitzer]])<br />
* http://developer.apple.com/library/mac/#technotes/tn2006/tn2166.html ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.h;hb=HEAD ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.c;hb=HEAD ([[Pierre Schweitzer]])<br />
* Rewrite the resource map code to fix a regression, several failures cases, and a few memory leaks ([[Cameron Gutman]])<br />
* Remove an incorrect definition of IopDetectResourceConflict in pnpreport.c (no idea how this didn't trigger an onslaught of warnings) ([[Cameron Gutman]])<br />
* Partially implement IoAssignResources so that it creates a non-conflicting resource list from the requirements but it doesn't claim the resources for the device in the registry ([[Cameron Gutman]])<br />
* Partially implement IoReportResourceUsage so that it checks the resource list for conflicts but doesn't claim the resources in the registry ([[Cameron Gutman]])<br />
* Please test this revision with a variety of hardware and drivers because it activates several code paths in the PnP manager ([[Cameron Gutman]])<br />
* If this causes problems, look for "Denying an attempt to claim resources currently in use by another device!" in the debug log and report the bug to me ([[Cameron Gutman]])<br />
* Fix a critical bug in the conflict detection code ([[Cameron Gutman]])<br />
* Don't unconditionally skip conflict detection for shared resources, instead it should be done on a descriptor-by-descriptor basis (if both descriptors are shared) ([[Cameron Gutman]])<br />
* This check wasn't removed when I initially wrote this code and added the proper check below ([[Cameron Gutman]])<br />
* Add IoWMIDeviceObjectToProviderId and IoIs32bitProcess stubs for 64bit builds ([[Timo Kreuzer]])<br />
* Comment out some deprecated amd64 code ([[Timo Kreuzer]])<br />
* Add MmProtectToValue ([[Timo Kreuzer]])<br />
* Fix a typo ([[Timo Kreuzer]])<br />
* Fix a bug. ([[Timo Kreuzer]])<br />
* Initialize the Zero variable ([[Timo Kreuzer]])<br />
* Don't corrupt the Color value in case we didn't have any page on MmZeroedPageListHead. ([[Timo Kreuzer]])<br />
* Use appropriated macros ([[Pierre Schweitzer]])<br />
* Simplify code, which should bring some fixing ([[Pierre Schweitzer]])<br />
* Fix potential buffer overflow ([[Pierre Schweitzer]])<br />
* Get back INIT_FUNCTION on lassy's polite request. ([[Pierre Schweitzer]])<br />
* Previously, in ReactOS' stories: ([[Pierre Schweitzer]])<br />
* ReactOS was broken since more a hundred of commits when two devs decided it was enough. One (we will name him Timo) fixed the context switch. The second, with the help of a third dev (Pierre & Hervé) decided to run tests by disabling some stuff (ie INIT_FUNCTION). This magically made testbot going back to life. ([[Pierre Schweitzer]])<br />
* But, some complains came from the ML, so trying to appease world, Pierre decided to revert half of his changes, thinking this would be OK. ([[Pierre Schweitzer]])<br />
* Now, after a night. It appears that half revert was a pretty bad idea. Testbot keeps being broken. ([[Pierre Schweitzer]])<br />
* So, this commit reverts r49665 (which was half reverting r49662). That way, testbot should be back, able to run tests. BUT, due to a NPFS issue, some tests are broken. Eric has been nicely mailed about that issue, with an idea of fix (thanks go here to Aleksey). ([[Pierre Schweitzer]])<br />
* For those who like that, drama to follow on ML. ([[Pierre Schweitzer]])<br />
* I turn into being S/M... ([[Pierre Schweitzer]])<br />
* Add missing PAGED_CODE() where needed ([[Pierre Schweitzer]])<br />
* Removed a wrong ASSERT in FsRtlIsNameInExpressionPrivate() and replace it by the right one ([[Pierre Schweitzer]])<br />
* Mark FsRtlIsDbcsInExpression() as halfplemented ([[Pierre Schweitzer]])<br />
* Renamed MmIsFileAPagingFile() to MmIsFileObjectAPagingFile() its appropriated name ([[Pierre Schweitzer]])<br />
* Added it to internal headers ([[Pierre Schweitzer]])<br />
* Implemented FsRtlIsPagingFile() ([[Pierre Schweitzer]])<br />
* Implemented FsRtlLookupPerStreamContextInternal(), FsRtlInsertPerStreamContext(), FsRtlRemovePerStreamContext(), FsRtlTeardownPerStreamContexts() ([[Pierre Schweitzer]])<br />
* Based on my previous work on pierre-fsd branch. ([[Pierre Schweitzer]])<br />
* Add missing prototype and define ([[Pierre Schweitzer]])<br />
* Implemented FsRtlPTeardownPerFileObjectContexts(), FsRtlLookupPerFileObjectContext(), FsRtlInsertPerFileObjectContext(), FsRtlRemovePerFileObjectContext() ([[Pierre Schweitzer]])<br />
* Stubplemented IoGetFileObjectFilterContext(), IoChangeFileObjectFilterContext() ([[Pierre Schweitzer]])<br />
* Add support of per file object filter context to IopDeleteFile() ([[Pierre Schweitzer]])<br />
* As ReactOS doesn't support file objects extensions, this doesn't work (blame Aleksey) - yet ([[Pierre Schweitzer]])<br />
* Implement MemorySectionName case for NtQueryVirtualMemory. Protect buffer access with SEH. (Samuel; {{bug|5753}})<br />
* revert accidental change from r49499 ([[Timo Kreuzer]])<br />
* Fixed FsRtlIsNameInExpression() according to r50018 tests ([[Pierre Schweitzer]])<br />
* Rewritten FsRtlIsDbcsInExpression() using FsRtlIsNameInExpression() pattern. ([[Pierre Schweitzer]])<br />
* This fixes all failing tests from kmtest.sys and make this function definitely tastier to MS fastfat.sys ([[Pierre Schweitzer]])<br />
* Merge some changes from r50021 to FsRtlIsNameInExpression() to make code easier to read and understand... ([[Pierre Schweitzer]])<br />
* Silent FstubEx* debug prints on popular demand (ie, Timo) ([[Pierre Schweitzer]])<br />
* commit base for new vga display miniport driver, is svn copy of framebuf_new as many codes identical ([[evb]])<br />
* Will than commit and document differences to make into vga driver ([[evb]])<br />
* Add the new vga miniport to build ([[evb]])<br />
* Replace the framebuf_new spec rc rbuild with vga_new spec rc rbuild ([[evb]])<br />
* Delete pointer.c ([[evb]])<br />
* Start make changes, driver.h new fields for VGA, change driver short/long name/tag, add macros and in enable.c remove hw pointer support ([[evb]])<br />
* fix now palette.c for vga, by copy logPalVGA/VGALOGPALETTE from NT4 DDK VGA sample drv and turn off codes for allocate 256 color pallette, instead use fix 16 color logPalVGA ([[evb]])<br />
* fix header of debug.c ([[evb]])<br />
* Finish make enable.c work full on vga, main change force 4BPP (disable other codes), create 4BPP bitmap surfobj, associate and lock ([[evb]])<br />
* Easy part done, now hard part ([[evb]])<br />
* Mode detect look for 4BPP, planar, graphics < 0x800 mode now ([[evb]])<br />
* Add GDIINFO from NT4 VGA DDK sample driver ([[evb]])<br />
* Set 4BPP prefer DIB format ([[evb]])<br />
* No graphics caps set for VGA driver ([[evb]])<br />
* Put static palette/color buffer for when VGA IOCTL send later ([[evb]])<br />
* Convert almost done, bInitSURF is last ([[evb]])<br />
* Fix an assign where a comparison was intended. CID 2626. ([[Amine Khaldi]])<br />
* Actually, code was correct, but ugly (who said "normal, that's a hack). ([[Pierre Schweitzer]])<br />
* So, when that code is called from SetupLDR, KeyHandle is required to be to 1. This what code does. Thing we do in the if condition when it appears we are called from SetupLDR. ([[Pierre Schweitzer]])<br />
* To avoid any further question, or warning, adding more parenthesis to show that we know what we do. ([[Pierre Schweitzer]])<br />
* So, to sum up, there's no comparaison for KeyHandle ([[Pierre Schweitzer]])<br />
* Fix CID 3454 ([[Pierre Schweitzer]])<br />
* Remove all #line 15 "ARM³::BLA" ([[Timo Kreuzer]])<br />
* Reasons: ([[Timo Kreuzer]])<br />
* It doesn't provide any benefits, its only purpose was to "look cool" ([[Timo Kreuzer]])<br />
* It never looked cool, instead a character mess appeared ([[Timo Kreuzer]])<br />
* It makes finding the related file harder, especially when the file is named differently then the description or when multiple files have the same tag ([[Timo Kreuzer]])<br />
* It effectively breaks Coverity scans ([[Timo Kreuzer]])<br />
* Make definitions of ExpChangeRundown, ExpChangePushlock and ExpSetRundown 64 bit safe (have one portable definition and use it accordingly) ([[Timo Kreuzer]])<br />
* Hoover a bit in CC part 1. Should make MM happier. ([[Pierre Schweitzer]])<br />
* But MS fastfat driver not yet ([[Pierre Schweitzer]])<br />
* Plumber work part 1. To prevent leaks ([[Pierre Schweitzer]])<br />
* Hoovering part 2... ([[Pierre Schweitzer]])<br />
* Fix typo ~ ([[Pierre Schweitzer]])<br />
* Remove broken definition of SharedUserdata and use correct SharedUserData instead. Fixes a crash on real Hardware. (Daniel; {{bug|5650}})<br />
* Simplify SepPrivilegeCheck. (Timo)<br />
* Fix comments and reduce code complexity. ([[Timo Kreuzer]])<br />
* MiAddressToPte translates a virtual address to the corresponding PTE, MiAddressToPde to the corresponding PDE. MiPteToAddress is the inverse of MiAddressToPte and translates from a PTE to the virtual address. MiPdeToAddress broke this scheme and didn't calculate the corresponding virtual adress, but the adress of the page table. Fix this inconsistency by renaming the macro to MiPdeToPte and adding a fixed MiPdeToAddress. All references fixed accordingly. ([[Timo Kreuzer]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Remove useless checks ([[Pierre Schweitzer]])<br />
* Move redundant sum before loop, so it's done only once ([[Pierre Schweitzer]])<br />
* Fix handling of * wildcard ([[Pierre Schweitzer]])<br />
* This fixes failing kmtest tests added in r50614 ([[Pierre Schweitzer]])<br />
* Fix a bug where a spinlock was acquired on not initialized local variable ([[Johannes Anderwald]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Get back "useless checks" (tests show they weren't that useless) ([[Pierre Schweitzer]])<br />
* Prevent code redundancy ([[Pierre Schweitzer]])<br />
* This fixes 4 failing kmtest tests added in r50679 ([[Pierre Schweitzer]])<br />
* Improved * WC handling for both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression ([[Pierre Schweitzer]])<br />
* This fixes all failing tests in kmtest ([[Pierre Schweitzer]])<br />
<br />
=== IO ===<br />
<br />
==== PNPMGR ====<br />
* Check that we got a valid vector back from HAL when translating an interrupt resource ([[Cameron Gutman]])<br />
* Add some debugging messages for failure paths in device resource handling code ([[Cameron Gutman]])<br />
<br />
=== CSR ===<br />
<br />
==== CSRSRV ====<br />
<br />
== SUBSYSTEMS ==<br />
* CSRSS was started with a free address space, and was able to map 0xA0000 into it by luck, because the ReactOS Mm allocator picks address ranges randomly, and it somehow managed to avoid the low 1MB addresses. Were this algorithm to change, or perhaps, were we to implement VADs for VM allocations, the 0xA0000 region might already be allocated (by an early-process-initialization allocation, such as the heap). This is what the flag referenced above was designed for, but it was not used. Using this flag, on the other hand, now makes CSRSS fail, because it attempts to map the RAM into 0xA0000, which fails since you can map a section on top of reserved memory. To work around this Brobdingnagian annoyance, CSRSS simply releases the first MB of memory that SMSS has nicely reserved for it, and then proceeds with the mapping. This fixes the issue of getting 0xA0000 by luck and now guarantees it can be mapped. ([[sir_richard]])<br />
<br />
=== WIN32 ===<br />
<br />
==== CSRSS ====<br />
<br />
===== WIN32CSR =====<br />
* Move PrivateCsrssManualGuiCheck from user32 to win32csr ([[Giannis Adamopoulos]])<br />
<br />
== TOOLS ==<br />
<br />
=== RBUILD ===<br />
* Fix "format not a string literal and no format arguments" build warnings. ([[Eric Kohl]])<br />
<br />
== Uncategorized ==<br />
<br />
=== 0 ===<br />
* Use the full name we get from SearchForExecutable when building the command line for CreateProcess so we get proper name in argv later. ([[Kamil Hornicek]])<br />
<br />
=== ADVAPI32_LSASRV ===<br />
* Prepare LsapValidateDbHandle for access checks. ([[Eric Kohl]])<br />
* Move the functionality of LsaQueryInformationPolicy (advapi32.dll) into the new function LsarQueryInformationPolicy (lsasrv.dll). ([[Eric Kohl]])<br />
* Remove dead code from advapi32.dll. ([[Eric Kohl]])<br />
<br />
=== APPS ===<br />
* Damir Aliev: Properly convert encoding in cmdline tools. ([[Aleksey Bragin]]; {{bug|3487}})<br />
<br />
=== ARMDDK ===<br />
* Define some spinlock functions. ([[sir_richard]])<br />
<br />
=== ASM ===<br />
* Merge asm related changes from cmake branch. ([[Timo Kreuzer]])<br />
* revert r49824 ([[Timo Kreuzer]])<br />
* Add include guards to asm.inc and comment out broken ljmp macro ([[Timo Kreuzer]])<br />
* Add syscalls.inc, containing assembler macros to generate syscall stubs (all supported architectures) ([[Timo Kreuzer]])<br />
* Change the macros to prefix the labels with Nt or Zw depending on whether we build usermode or kernel mode stubs ([[Timo Kreuzer]])<br />
* Create zw.S using the macros ([[Timo Kreuzer]])<br />
<br />
=== CLASSPNP_CDROM_NEW ===<br />
* Remove useless files. ([[sir_richard]])<br />
<br />
=== EXPLORER_NEW ===<br />
* Provide the ability to query version info (needed for task (DavidErceg; {{bug|4386}})<br />
* grouping). (DavidErceg; {{bug|4386}})<br />
* Open a context menu, when a task is right clicked. (greenie; {{bug|4671}})<br />
* Implement resizing the work area. (greenie; {{bug|5846}})<br />
<br />
=== FREELDR_NTFS ===<br />
* Some fixes and addings to the NTFS header. ([[Pierre Schweitzer]])<br />
* To be used later in order to fix NTFS driver in FreeLdr ([[Pierre Schweitzer]])<br />
<br />
=== HEAP ===<br />
* Move on to using a real HEAP_LOCK structure for a heap lock. ([[Aleksey Bragin]])<br />
* Implement kernel-mode counterparts of this lock too. Right now these don't introduce much of a difference, but they are going to be properly used by the new heap manager code. ([[Aleksey Bragin]])<br />
* Fix allocated/free memory fillers to match those Windows uses (winetests) ([[Aleksey Bragin]])<br />
* Add missing coalesce-on-free flag check in RtlCreateHeap ([[Aleksey Bragin]])<br />
* Turn on tail check/pattern filling in RtlAllocateHeap. ([[Aleksey Bragin]])<br />
* Add extra stuff storage support in RtlAllocateHeap and its helpers. ([[Aleksey Bragin]])<br />
* Set win32 statuses where necessary. ([[Aleksey Bragin]])<br />
* Return success in RtlValidateHeap to reduce spam when running winetest. ([[Aleksey Bragin]])<br />
* Roel Messiant: Remove old-style Peb->ProcessHeaps assignment from RTL, it's already done by MM. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix a typo (missing else) between two if branches, which fixes commit routine support. ([[Aleksey Bragin]])<br />
* Properly save requested size if 0 was given (1 should be allocated, but 0 saved as a requested amount). Fixes winetests. ([[Aleksey Bragin]])<br />
* Remove unnecessary dprints. ([[Aleksey Bragin]])<br />
* Set proper heap flags (tail and free checking) in case heap validation is enabled. Fixes another bunch of winetests. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix infinite loop in RtlDestroyHeap if heap contained big blocks. ([[Aleksey Bragin]])<br />
* Implement setting/getting heap user values and flags (very easy provided heap design is now proper). Amount of winetest failures is down to 12 (but 3 crashes in child processes). ([[Aleksey Bragin]])<br />
* Move (and cleanup) private heap definitions and structure to a standalone header file heap.h. It's explicitly included in heap_rewrite.c and heapdbg.c to prevent conflicts with the existing heap manager in heap.c. ([[Aleksey Bragin]])<br />
* Add 64 bit compatibility. ([[Aleksey Bragin]])<br />
* Properly set HEAP_GROWABLE flag if dwMaximumSize is 0 in HeapCreate. Also check for dwMaximumSize validity. Fixes out-of-memory problems when running "heavy" applications like Office 2003 setup with a new heap manager (which actually respects HEAP_GROWABLE flag). ([[Aleksey Bragin]])<br />
* More resource fixes making warnings vanish when built with cmake. ([[Daniel Reimer]])<br />
* RC file fixes for inconsistences shown up by the recent dll work in r49105. ([[Daniel Reimer]])<br />
* Fix RtlQuery/SetHeapInformation prototypes, move them to an appropriate place. ([[Aleksey Bragin]])<br />
* Implement RtlQuery/SetHeapInformation. ([[Aleksey Bragin]])<br />
* Implement in-place block growing. ([[Aleksey Bragin]])<br />
* Amount of winetest heap failures is down to 6 (3 exceptions still happen). ([[Aleksey Bragin]])<br />
* Fix DWORD -> ULONG in function definitions too. ([[Aleksey Bragin]])<br />
* Implement heap validation support. ([[Aleksey Bragin]])<br />
* Add ability to dynamically allocate UCR descriptors when preallocated amount is exhausted. ([[Aleksey Bragin]])<br />
* Fix a few bugs in RtlpFindAndCommitPages and in deactivated RtlpDecommitFreeBlock. ([[Aleksey Bragin]])<br />
* Enable free blocks decommitting. ([[Aleksey Bragin]])<br />
* New heap manager would now be ready to replace the old one. ([[Aleksey Bragin]])<br />
* Add special debug heap function declarations and stubs. ([[Aleksey Bragin]])<br />
* Add a useful inline for detecting whether a special or normal heap is going to be used. ([[Aleksey Bragin]])<br />
* Implement parameters validation ("DebugHeap") in all used RTL heap APIs. Winetests failures down to 4. ([[Aleksey Bragin]])<br />
* Hackfixed build by stubbing RtlpValidateHeapHeaders(), RtlpValidateHeapEntry() and hackplementing RtlpValidateHeap(). ([[Pierre Schweitzer]])<br />
* To be properly fixed. ([[Pierre Schweitzer]])<br />
* Fix a typo which lead to incorrect flags being forced. Fixes last remaining major winetest failures (only 1 GlobalAlloc/Free implementation related one is left to be fixed). ([[Aleksey Bragin]])<br />
* Time has come to get rid of a slightly modified implementation of WINE's heap, which is a hack based on Windows 95's heap implementation, itself a hack of DOS memory management. It supported 3 out of the 18 possible NT Heap Flags, did not support custom allocation/deallocation routines, and was about 50-80x slower with fragmentation rates up to 500x higher when compared to NT's LFH (WINE is lucky because the advanced NT Heap features are used in kernel-mode usually, not in user-mode, and they are crossing their fingers for this being the same). Several high-end SQL/Database applications would significantly benefit from custom heap features provided by NT. Not to say about removing crappy support for a custom Commit routine and crappy support for User-defined flags and the User-defined value. ([[Aleksey Bragin]])<br />
* So, the glorious moment for a new heap manager, which is (to remind you) a totally new heap manager, resembling real NT heap manager, based on data structures similar to Windows 2003 and Vista+'s heap structures, supporting advanced heap flags (e.g. useful for debugging), having substantially lower fragmentation rates (and thus speed and reliability), having native support for user-defined flags and user-defined values, also native support for a custom commit routine, which is very important for trunk's win32 subsystem. It also reserves, commits, decommits and frees memory on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary. Not to say about support for per process heaps, with a proper lock, and a further support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* Yeah, I'm not a fun person :D ([[Aleksey Bragin]])<br />
* Fix a typo (assignment) in the ASSERT, spotted by Johannes Anderwald. ([[Aleksey Bragin]])<br />
* Peer review rocks. ([[Aleksey Bragin]])<br />
* RtlpInsertFreeBlockHelper: Don't validate the Previous Size of the next Heap Entry when inserting a free Heap Entry into a free list. Should solve bug #5843 and may affect bug #5857. ([[Roel Messiant]])<br />
* All callers of this function already perform this check, except for RtlpInsertFreeBlock, a function used during Heap Segment creation/expansion. ([[Roel Messiant]])<br />
* RtlpInsertFreeBlock creates multiple free Heap Entries (using the helper function) if the free space is too big to be contained in a single Heap Entry. ([[Roel Messiant]])<br />
* In such a case however, it creates a Heap Entry and calls the helper before creating the next Heap Entry, which triggers this assert. ([[Roel Messiant]])<br />
* FontSmoothing" system parameter registry key should be REG_SZ (as it is in Windows, and as other SPIs are). ([[Aleksey Bragin]])<br />
<br />
=== INTRIN ===<br />
* Implement _mm_sfence, _mm_lfence, __faststorefence (for amd64) ([[Timo Kreuzer]])<br />
* Don't use __sync_synchronize() for _ReadWriteBarrier, as it issues an mfence instruction and this is not what we want ([[Timo Kreuzer]])<br />
* Remove "BUGBUG" comment, because the fact that _ReadBarrier and _WriteBarrier are full (compiler) barriers isn't critical. ([[Timo Kreuzer]])<br />
<br />
=== NCI ===<br />
* Ue macros for the other nci generated files, too and delete nci-tool. ([[Timo Kreuzer]])<br />
<br />
=== NPFS_KERNEL32 ===<br />
* Switch back to the old pipe wait code but keep the new code in place (disabled). ([[Eric Kohl]])<br />
<br />
=== NTOS ===<br />
* Lookup the special labels from above when initializing the System DLL. Only lookup INT2E vs SYSENTER on x86, other architectures don't need a stub. ([[sir_richard]])<br />
* Bitmap resources start at index 1, not 0. Also make sure we don't go past the maximum IDB_ resource index for no reason, and check the size of the resource instead of assuming it's going to be one page. ([[sir_richard]])<br />
* Stop using MiInsertInListTail and MiRemoveHeadList in the deprecated ReactOS page functions. Those two functions do not adequately support the semantis needed for page insertion/removal and should've never been used. MmAllocPage now uses MiRemoveAny/ZeroPage, and MmDereferencePage uses MiInsertPageInFreeList. Should help with some corruptions. More is coming. ([[sir_richard]])<br />
* Don't use dangerous MiRemoveHeadList in MDL page allocation, use MiRemoveAnyPage instead. ([[sir_richard]])<br />
* Don't repurpose pages from the zero/free page list without actually unlinking the page first! This should fix even more corruptions. ([[sir_richard]])<br />
* Adding colored page lists means we need to start using the OriginalPte field as a forward/back link. This is shared with AweReferenceCount, which ReactOS uses as the RMAP list head. However, RMAPped pages shoudl never be free/zero, and non-free-zero pages will never have a color backlink in OriginalPte, so it should theoretically be safe to do this. However, it's possible for the RMAP "get" function to be called on a free/zero page (which would normally return NULL), but with color chaining enabled, the "get" function would misinterpret the backlink as an RMAP entry. Therefore, we overload the ParityError bit to signify "there is an RMAP". The get/set functions now handle this, and the color linkage will ASSERT this later. This way, a colorlink with ParityError == FALSE is not treated as an rmap list head. ([[sir_richard]])<br />
* Remove MiZeroPage, use MiZeroPhysicalPage instead. They work pretty much the same except the needless raise to DISPATCH_LEVEL. ([[sir_richard]])<br />
* Get rid of the messed up MiMapPageToZeroInHyperSpace which was hacking into MiMapPagesToZeroInHyperSpace. Now MiMapPagesToZeroInHyperSpace is properly implemented to use chained PFNs, and the MmZeroPageThread code has been modified to correctly use the new mechanism. ([[sir_richard]])<br />
* Zero page mapping now happens at PASSIVE trough MiMapPAgesToZeroInHyperSpace, not DISPATCH anymore. ([[sir_richard]])<br />
* More fixes are coming to remove the remaining MiRemoveHeadList and rewrite the zero page loop. Should fix more possible corruptions. ([[sir_richard]])<br />
* One last fix to the zero page thread before we move to ARM3: use MiRemoveAnyPage instead of dangerous MiRemoveHeadList. The code works on the assumption (validated by Windows through a bug check) that MiRemoveAnyPage always returns the first free page, and we also manually grab the first free page, and compare this is true. Nice way to detect PFN database corruption. ([[sir_richard]])<br />
* Fix MiInsertZeroAtBack to increment the MmAvailablePage count, since MiRemoveAnyPage decrements it (MiRemoveHeadList did not). ([[sir_richard]])<br />
* Zeroed pages should go at the front, not the back of the zero list. Going to the back is a special boot-only case on MP, which isn't supported. Implement zero-only version of MiInsertPageInList, remove MiInsertZeroPageAtBack. ([[sir_richard]])<br />
* Remove many other deprecated functions. Physical memory consistency should now be higher than in the past. ([[sir_richard]])<br />
* The RMAP entry only has a valid process if the address is in user-space, otherwise process is NULL. Only attempt to acquire the process rundown lock if a process actually exists. Fixes crashes caused by 48905. ([[sir_richard]])<br />
* Switch to using an ARM3, much more correct MmZeroPageThread. Stub support for discarding sections and listening to the Power Manager Idle Timer. ([[sir_richard]])<br />
* Use a synchronization (auto-reset) instead of notification event for the zero page thread, this way we don't have to reset it manually and query its state. Instead, a boolean MmZeroingPageThreadActive is checked instead. ([[sir_richard]])<br />
* Once we switch to colored lists, major improvements can be done for speed. ([[sir_richard]])<br />
* Write missing color code in certain PFN functions, and fix existing code where needed. Add some debugging. For now, turned off until testing succeeds. ([[sir_richard]])<br />
* Redocument which MMPFN fields are violated by ReactOS-internal values. This has gotten much better than before. ([[sir_richard]])<br />
* Fix straggling bugs in color table algorithms. ([[sir_richard]])<br />
* Enable color tables! Right now pages are merely entering and exiting the tables, the tables themselves are never used for allocations. This will change with further commits. ([[sir_richard]])<br />
* Add MiRemoveZeroPageSafe helper function, when a zero page is required, but the inline zeroing of MiRemoveZeroPage is not. This function will only try grabbing a zero page if one exists, otherwise a free page will be grabbed and zeroed with custom code of the caller's choosing. ([[sir_richard]])<br />
* Add concept of process color and system color. Compute correct color to use whenever requesting a page. ([[sir_richard]])<br />
* Uncondtionally enable the color code when inserting/removing pages. ([[sir_richard]])<br />
* For now, when requesting a page, colors are still ignored, and the global PFN lists are scanned instead. If there are no regressions, we are one patch away from that. ([[sir_richard]])<br />
* Fix a bug in MiRemoveAnyPage: it was always checking the colored zero page list, instead of checking the colored free page list the second time around. ([[sir_richard]])<br />
* Add definition for size of a page directory, and size of all page directories required per process (some architectures have more than one page directory per process/address space). ([[sir_richard]])<br />
* MiSetConsumer no longer achieves anything. Remove it. ([[sir_richard]])<br />
* Use SYSTEM_PD_SIZE instead of assuming that this is PAGE_SIZE, since this is not the case on (future) ARM and (current) AMD64 ports. ([[sir_richard]])<br />
* Remove some magic numbers in the pool code, using PTE_COUNT, MiAddressToPde, when needed. Also, the expansion code uses PDEs, not PTEs, so differentiate this, because on some systems (ARM), there are different structures for both. ([[sir_richard]])<br />
* Use MI_WRITE_INVALID_PTE. ([[sir_richard]])<br />
* ARM3 paged pool now works, the expansion bug has been fixed (and the code is more portable). Expect to see it gradually enabled soon. ([[sir_richard]])<br />
* He's climbing in yo PFN database, he snatching yo pages up, tryin to page em so y'all need to hide your pool hide your cache, and hide your working set cuz they grabbin' all the pages out there. We gonna page you, we gonna page you, so you can run and fault on that, run and fault on that, home boy, homeboy, home homeboy. ([[sir_richard]])<br />
* Enable ARM3 Paged Pool and remove all related deprecated code. Install tested on several VMs, it might cause new regressions. Let's fix them before 0.3.13 instead of reverting. ([[sir_richard]])<br />
* This is why you shouldn't let Antoine Dodson commit code. ([[sir_richard]])<br />
* Move all the Nt*Section API interfaces into ARM3 and rewrite most of the code to perform the same parameter validation and input checks as Windows does. Support all protection masks. Use correct section object access mask. Use appropriate SEH where needed. Pass 0-initialized local instead of NULL when needed. Don't assume certain parameters are OPTIONAL when they are not. Don't return SEH failures at the end of the system call, the kernel usually returns the result of the system call proper. Call DbgkMapViewOfSection in scenarios where it would not have gotten called before. Protect against certain kinds of kernel-mode access from user-mode. ([[sir_richard]])<br />
* Move unimplemented Mm*Section APIs into ARM3 as well. ([[sir_richard]])<br />
* Go ahead and now fill out the OriginalPte field for PFNs initialized with MiInitializePfn(ForOtherProcess). They should only belong to ARM3 so they'll never have SwapEntry/RMAP associated with them. This functionality is important for future Prototype PTE support, among other things, as it lets us get the original PTE value written for a given PFN entry. ([[sir_richard]])<br />
* Define MI_MAKE_PROTOTYPE_PTE macro to make a real prototype PTE from a PTE. Define counter-part MiProtoPteToPte to recover the true PTE from a given Prototype PTE. ([[sir_richard]])<br />
* Define MI_PTE_LOOKUP_NEEDED instead of using 0xFFFF. The name was found in checked build assertion strings. ([[sir_richard]])<br />
* Add MM_VIEW (used for System-mapped Section Views) and MM_SESSSION (used to define the system/session view mappings) structure definitions. ([[sir_richard]])<br />
* Initialize system views by calling MiInitializeSystemSpaceMap. This sets up the lock, bitmap, and hash table. ([[sir_richard]])<br />
* Implement/fixup the code paths during page faults that are needed to succesfuly resolve a demand page associated with a pagefile backed ARM3 section (which uses Prototype PTEs). A lot of the code was already there but assumed we were using Prototype PTEs only for the shared user data page. By combining that code with the typical demand-zero fault code, we obtain the needed paths. For now, only tested with ARM3 sections that are page-filed backed (not image or data-file backed) mapped into system view space (MmMapViewOfSectionInSystemSpace), not user-mode addresses (which need VADs). The code to actually create/map these doesn't exist in trunk yet, the purpose of this checkin is to test the new fault changes to make sure they don't cause negative effects to already-working faults. ([[sir_richard]])<br />
* Implement MmCreateArm3Section, which creates ARM3-backed sections, but only for pagefile-backed memory at the moment. It uses MiCreatePagingFileMap and creates the expected Segment, Subsection, ControlArea and Section objects described in Windows kernel internals literrature. It's surprisingly easy and only takes 200 lines of code. ([[sir_richard]])<br />
* Implement MiMapViewInSystemSpace, all it took was another 250 lines and we can now map ARM3 sections into memory. Accessing them causes a fault, which we correctly handle with the prototype PTE fault code. ([[sir_richard]])<br />
* Added a bogus allocation flag that can be used with Nt/MmCreateSection and MmMapViewInSystemSpace to take the ARM3 path instead. Only for internal testing at the moment. ([[sir_richard]])<br />
* Now we need to look at how to allow mapping these into user-space as well... ([[sir_richard]])<br />
* Nobody reads/checks for MEMORY_AREA_CACHE_SEGMENT. Might as well just call this zero (no logical change). ([[sir_richard]])<br />
* We don't support SEC_BASED for ARM3 sectios either, ASSERT that. ([[sir_richard]])<br />
* Nobody actually writes TRUE for WriteCopyView in the MEMORY_AREA data structure, so this field is useless (always false). Remove all instances of its use. ([[sir_richard]])<br />
* Nobody uses MEMORY_AREA_SYSTEM anymore, call these MEMORY_AREA_OWNED_BY_ARM3 for now. We'll have to sync this code with x86 later anyway. ([[sir_richard]])<br />
* Use the Spare flag in the VAD as a ReactOS/MemoryArea specific flag to signify that this VAD is associated with a MEMORY_AREA and should be unlinked at process exit, but not freed. This is because MemoryAreas themselves are cleaned up later, and in the future their associated VADs (not yet in Trunk) will also be parsed. In the process death scenario, those VADs will be freed, but not unlinked (since it would already have been unlinked). ([[sir_richard]])<br />
* Add a _64K macro definition so we can stop typing out 65536 all the time. ([[sir_richard]])<br />
* Delete deprecated handling of MEMORY_AREA_IO_MAPPING. Delete all MEMORY_AREA definitions except the ones for SEGMENT_VIEW and VIRTUAL_MEMORY. All other memory is now owned by ARM3! ([[sir_richard]])<br />
* Delete WriteCopyView flag from MEMORY_AREA (unused, and was taking up 4 bytes due to alignment), and add a Vad pointer (takes up 4 bytes -- no actual size change). ([[sir_richard]])<br />
* For VM and Section MEMORY_AREAs mapped in user-mode, build a "fake" VAD and insert it into the VAD Root of the Process. This means there is now a consistent view between ARM3 and RosMm in terms of user-mode address space layout, which will come in handy later. ([[sir_richard]])<br />
* Destroy the MEMORY_AREA's VAD when the MEMORY_AREA itself is deleted. Watch out for the scenario explained in a previous check-in, where the VAD was caught by the MmCleanProcessAddressSpace vad-cleanup-loop. ([[sir_richard]])<br />
* Implement MiInsertVad to restore the old functionality of MiInsertNode when the current parent and insertion result is not yet known. It obtains the information and calls MiInsertNode. ([[sir_richard]])<br />
* Add the tiny little bit of code required to correctly handle user-mode faults on ARM3 mapped sections in certain limited scenarios. ([[sir_richard]])<br />
* Implement ARM3 version of MmMapViewOfSection, only for ARM3 pagefile-backed sections, and without any special flag support. Tested and works great, with the new pagefault code correctly finding the Prototype PTE for the VAD. ([[sir_richard]])<br />
* Make every VAD insert also create a MEMORY_AREA. Now the two address space views should be completely synchronized and we can try removing the hack that was done for PEB/TEB support (which will remove the 200 thread regression). ([[sir_richard]])<br />
* Implement MiGetNextNode and MiFindEmptyAddressRangeInTree. ([[sir_richard]])<br />
* When shutting down, call Cc to flush the dirty cached pages, otherwise these might've gotten lost (and lead to lost/corrupted data on disk). ([[sir_richard]])<br />
* Don't assume that CcFlushDirtyPages will run with APCs disabled. Go ahead and actually enter/leave a critical region (Acquire/ReleaseForLazyWrite depend on this). The guarded mutex does disable APCs, but it's released when the actual flush happens. ([[sir_richard]])<br />
* Delete a bunch of junk, 5 less files in Mm now (also moved some functions around). Delete unused functions where found. ([[sir_richard]])<br />
* The modified page writer should run at a high priority such as 27, not in idle mode at priority 1 -- otherwise dirty pages never get flushed out. ([[sir_richard]])<br />
* Reimplement MmGetFileNameForAddress, MmGetFileNameForSection, MmGetFileObjectForSection to also support ARM3 sections. Shouldn't affect anything other than the user-mode debugging support. ([[sir_richard]])<br />
* High-level interface fixes to NtAllocateVirtualMemory/NtFreeVirtualMemory: ([[sir_richard]])<br />
* Validate MEM_LARGE_PAGES, MEM_PHYSICAL flags. Check for permission to use MEM_LARGE_PAGES. ([[sir_richard]])<br />
* Validate protection mask. ([[sir_richard]])<br />
* Validate MEM_RELEASE and MEM_DECOMMIT. ([[sir_richard]])<br />
* Perform correct SEH in NtFreeVirtualMemory. ([[sir_richard]])<br />
* Protect against overflows past VAD/User address ranegs. ([[sir_richard]])<br />
* Only reference the process by handle if this isn't already the current process. ([[sir_richard]])<br />
* If this isn't the current process, attach to it during the duration of the VM operation. ([[sir_richard]])<br />
* Temporary debugging. ([[sir_richard]])<br />
* Implement monitor bitmap support for the display dialog (Carlo; {{bug|3158}})<br />
* Fix incorrect codepage values (Carlo; {{bug|3158}})<br />
* Look for applets in windows dir as well as system dir (Carlo; {{bug|3158}})<br />
* Fix bugs in the VAD algorithms, we should be rounding up, not down. ([[sir_richard]])<br />
* My attempt at making bugchecks a thing of the past has failed, someone has caught the typo. Bugchecks will now happen in ReactOS again instead of being ignored. Maybe you can "forget" to merge this one with the release branch? ;-) ([[sir_richard]])<br />
* Add support for user-mode VAD faults on page tables (just a couple lines of extra code). ([[sir_richard]])<br />
* Add support for user-mode VAD demand zero faults. ([[sir_richard]])<br />
* Remove broken ASSERT. ([[sir_richard]])<br />
* Hackfix a hack. Should get rid of the recent VAD assert in user32/bpp changes. ([[sir_richard]])<br />
* Fix copy/paste error. ([[sir_richard]])<br />
* Add MmProtectToValue array to convert MM/PTE protection values to Win32 protection flags. ([[sir_richard]])<br />
* Handle faults on non-demand-zero PTEs (and/or demand-zero PTEs that are not READWRITE (such as EXECUTE_READWRITE)). ([[sir_richard]])<br />
* Use MI_SET_PFN_DELETED where we missed it. ([[sir_richard]])<br />
* Implement support for deleting user-mode pageable VM addresses. Now when cleaning up the process address space, MiDeleteVirtualAddresses is called for the VADs, so this will now actually free the PEB/TEB pages that were previously getting leaked for each thread/process (a known regression I introduced when moving to VADs for PEB/TEB). ([[sir_richard]])<br />
* Fix brainfart (an interesting bug we would've never hit, but a bug nevertheless). ([[sir_richard]])<br />
* Complete the VAD-to-MAREA Synchronization hack by removing fake MAREAs that were added when inserting real VADs. To do this, we have to track the fake MAREA associated with a VAD, so we overload the FirstProtoTypePte field in the VAD, if this is NOT a section VAD (which we don't use yet). We'll figure something out for section VADs later. ([[sir_richard]])<br />
* Now that VAD and MAREA views are synchronized, remove the VAD limit and let VADs be created at any address. Also do not create an arbitrary 16MB VAD memory area anymore. This basically now allows for as many PEB/TEBs as can fit in the address space, fixing the recent known regression that limited the number of threads a process could have. ([[sir_richard]])<br />
* Store the protection mask in the Fake VADs as well, we can read/convert this from the MAREA protection value. ([[sir_richard]])<br />
* Reimplement NtQueryVirtualMemory to use VAD information instead. Even though Alloc/Free are still MAREA-based, the fake VADs we build ought to be enough to make the query API work for certain limited scenarios. Only some paths are implemented and it's lacking SEH, but it's good enough for the install/boot requirements. If there are any regressions, please file bugs. ([[sir_richard]])<br />
* Remove the Bavarian hack, I no longer think it is needed. ([[sir_richard]])<br />
* Remove the "35314 sginsberg /* REACTOS Mm Hack of Doom */". Apocalypse averted? ([[sir_richard]])<br />
* Clean up Mm initialization, there is now no-more RosMM stuff done in Phase 0 of MmInit, only ARM3 runs. The kernel address space and memory areas are only initialized in Phase 1, because that's where sections are started up, and they're the only thing other than VM which still use memory-areas. ([[sir_richard]])<br />
* Implement MiDecrementReferenceCount and rewrite large parts of the ProbeAndLock/Unlock MDL API to fully use ARM3 APIs, dropping MmReference/DereferencePage behind. ([[sir_richard]])<br />
* Fix many MDL API bugs: correctly check for I/O pages, use LIST_HEAD instead of -1, track system-wide locked pages, use the process working set lock instead of the address space lock, add check for cross-ring MDL mappings, and make some small optimizations. ([[sir_richard]])<br />
* Make some more fixes in MmAllocatePagesForMdl, MmFreeMdlPages to make the PFN entries more "correct". ([[sir_richard]])<br />
* Had a little breakthrough: instead of complicating our lives and hiding certain ReactOS-Mm fields inside legitimate ARM3/MMPFN fields, differentiate between "legacy" (RosMm) and ARM3 pages. The legacy allocator (MmAllocPage/MmRequestPageMemoryConsumer) will use the non-paged pool to allocate a MMROSPFN add-on (8 bytes), in which the RMAP list head and SWAPENTRY are stored. When a legacy "free" is done, this data is deleted. Additionally, we can now tell apart between ARM3 and RosMm pages, so appropriate ASSERTs have been added to make sure the two never cross paths (which should safely let us use all the PFN fields now and implement working sets, etc...). I don't know why I didn't think of this sooner. ([[sir_richard]])<br />
* Get rid of MC_NPPOOL and MC_PPOOL memory consumers since those are not managed by RosMm anymore. Use MC_SYSTEM for the page table stuff that RosMm still handles, and keep MC_USER and MC_CACHE for the current Section/VirtualMemory/Cache RosMm code. ([[sir_richard]])<br />
* Implement the MAREA<->VAD hack for section VADs as well. ([[sir_richard]])<br />
* Use allocation attribute 0x1 instead of 0xC0000000 to let RosMm know this is an ARM3 section. 0xC0000000 is actually a valid combination of SEC_ flags, 0x1 is illegal and thus recognized. ([[sir_richard]])<br />
* Add support for unmapping ARM3 sections, destroying segments and control areas, and clearing out subsection PTEs. ([[sir_richard]])<br />
* Add support to MiDeletePte/MiDeleteVirtualAddresses to handle Section VADs. ([[sir_richard]])<br />
* Add support to MiDeletePte to handle valid, prototype PTEs. ([[sir_richard]])<br />
* Add MEM_TOP_DOWN support to ARM3 section code. ([[sir_richard]])<br />
* Add support for unmapping currently mapped ARM3 section views at process termination. ([[sir_richard]])<br />
* Use the new ARM3 section code for mapping the NLS section in the system (tests the system-view mapping code) and in each new process (tests the data-mapping code). Section is correctly unmapped at process termination time! ([[sir_richard]])<br />
* C Pointer Math will bite even the most experienced programmer in the ass. Fix wrong calculation which led to ASSERTs and memory corruption (since the last revision). ([[sir_richard]])<br />
* Fix multiple math/logic bugs in the PrototypePTE paths. Caught while trying to switch the Win32k GDI Handle Table to ARM3 sections. ([[sir_richard]])<br />
* Go back to using RosMm for the NLS section since supposedly this causes issues on some systems. This is the only actual change in r206/208/209, so if Caemyr's data is correct, this fill fix it. ([[sir_richard]])<br />
* Protect Arty's changes with #ifdef NEWCC, otherwise this code ASSERTs and crashes as soon as a pageout operation is required. Since your advanced test/regression systems boot into configurations with 1GB+ RAM, you never even test these paths and one could put an ASSERT(FALSE) and you wouldn't even notice it (as proven). ([[sir_richard]])<br />
* Remove merge artifact from newcc. ([[sir_richard]])<br />
* Make sure we don't get a user-pointer back from MmMapInSystemSpace. ([[sir_richard]])<br />
* Sanity checks when dealing with creating/cleaning process address space. ([[sir_richard]])<br />
* Set the VmDeleted flag when the process address space is being nuked. ([[sir_richard]])<br />
* Fix typos. ([[sir_richard]])<br />
* Assert nobody tries to touch the sharecount of a non-ARM3 page. ([[sir_richard]])<br />
* ASSERT nobody tries to put ARM3 pages into the MC_USER LRU. ([[sir_richard]])<br />
* You can't just set MDL_LOCKED_PAGES without actually... locking the page. Add a MmReferencePage when doing so, so when that a paging read/write IRP gets completed (and MmUnlockPages is called), the page gets handled correctly. Can now boot with 64MB RAM without ASSERTs. ([[sir_richard]])<br />
* Fix one of the MDL code paths that isn't getting called frequently. ([[sir_richard]])<br />
* Fix a bug in MmFindGapBottomUp which could make it return an address lower than what the caller said should be the lowest address. ([[sir_richard]])<br />
* Fix a bug in the MDL Code which would dereference a completely bogus page frame index. ([[sir_richard]])<br />
* Misc typo and cleanup fixes. ([[sir_richard]])<br />
* CR3 should be PDE_BASE, not PTE_BASE! ([[sir_richard]])<br />
* Define DemandZeroPte. ([[sir_richard]])<br />
* Define an array of MI_USAGE integers to track what a PFN is used for. ([[sir_richard]])<br />
* Extend the MMPFN structure for ReactOS-specific PFN tracing mechanism. ([[sir_richard]])<br />
* Add macros to track page usage and process/extra-data (not yet used). ([[sir_richard]])<br />
* Add page-tracking macro calls wherever needed. MI_TRACE_PFNS is still off, though, so this code won't be called. ([[sir_richard]])<br />
* Mark all initialization functions INIT_FUNCTION. ([[sir_richard]])<br />
* This will save ~280KB of RAM once we dump INIT from RAM in a future patch. ([[sir_richard]])<br />
* Display current free RAM at certain checkpoints. ([[sir_richard]])<br />
* Implement the idle loop in C. ([[sir_richard]])<br />
* Make idle loop portable. Can be moved out of /i386 now. ([[sir_richard]])<br />
* Context switch in C instead of ASM. Can be made more portable, but it's a good start. Unless Timo rewrites it. ([[sir_richard]])<br />
* KiDispatchInterrupt (the DPC handler) in C, instead of ASM. ([[sir_richard]])<br />
* Optimize new context switching code to avoid wasted cycles. ([[sir_richard]])<br />
* Assign a working set to the system process and correctly initialize its address space. ([[sir_richard]])<br />
* Assign the working set list address, system-wide, but per-process (in hyperspace). ([[sir_richard]])<br />
* Give every process its working set page, and store it. Build a bogus working set list (MMWSL). ([[sir_richard]])<br />
* Use the process working set list (MMWSL) to track page table references during faults, just as Windows does. ([[sir_richard]])<br />
* Correctly initialize the colored page list heads and assert their validity. ([[sir_richard]])<br />
* Fix bugs in MiAllocateContiguousPages. Fixes an ASSERT Caemyr was seeting a lot (the cont-able ASSERT). ([[sir_richard]])<br />
* Part 1 of fixes: For some reason beyond me, I had abbreviated ([[Art Yerkes]])<br />
* MiCowSectionPage to always assume CoW rather than always not ([[Art Yerkes]])<br />
* CoW for cache sections. ([[Art Yerkes]])<br />
* Make sure we're looking for cache type sections rather than ([[Art Yerkes]])<br />
* as we were in the branch) data file sections. More needed. ([[Art Yerkes]])<br />
* Fix another bug in the continuous memory allocation code, which would go off-by-one while looping the PFN entries for the allocation, and corrupt the PteFrame/PteAddress of an unrelated PFN entry. If this PFN was in the active lists, it would cause page table leaks and faults, if the page was on a free list, it would override the colored list backlink and corrupt the list, later causing unlinked pages to remain linked to the list. ([[sir_richard]])<br />
* Fix a bug in MiRemovePageByColor which caused corruption of the page list and could lead to crashes, re-use of freed memory, assuming active memory was free, etc. ([[sir_richard]])<br />
* Use MI_PFN_ELEMENT in this code, as the extra checks done by MiGetPfnEntry are irrelevant and slow things down. ([[sir_richard]])<br />
* Remove some old ReactOS hacks before we had MMROSPFNDATA. ([[sir_richard]])<br />
* Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the way page allocations are given out and creates a less uniform physical memory layout. The fact this now works means that the PFN lists are finally now sane. ([[sir_richard]])<br />
* Bugfixes for the I/O Controller Object. ([[sir_richard]])<br />
* Define portable MI_MAKE_ACCESSED_PAGE macro. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to account ARM, where the PDE and PTE formats are different. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to use portable PTE macros instead of hard-coding x86-only fields. ([[sir_richard]])<br />
* Don't put boot.s in "arch" anymore, it's part of "boot" now. ([[sir_richard]])<br />
* Erm, why is it that the ARM compiler detects this obvious bug, but x86 does not? Fix missing ShareCount zeroing when unlocking an MDL. ([[sir_richard]])<br />
* Errr... wow! Another one caught by ARM GCC. I can swear x86 GCC used to catch these. Did someone change warning settings? Anyhow, fix a *f++ which increments the pointer, not the value INSIDE the pointer (*f)++. Fixes MiDeleteSystemPageableVm. ([[sir_richard]])<br />
* Fix incorrect assumptions that a PDE == PTE which have crept up throughout new ARM3 code. ([[sir_richard]])<br />
* Fix a couple more unportable directly "Hard" PTE field accesses, instead of using portable MI macros. ([[sir_richard]])<br />
* Cleanup some of the pool code that had really messed up PDE vs PTE. ([[sir_richard]])<br />
* Define the number of page directoty levels for ARM. ([[sir_richard]])<br />
* Comment out some ARM3 code that won't be needed now that most of the x86 code is in C. ([[sir_richard]])<br />
* Add MiGetPteOffset for ARM. All of the kernel compiles, but does not link yet. ([[sir_richard]])<br />
* Fix up ARM code to match recent ARM3 changes. ([[sir_richard]])<br />
* Do not use initguid inside every single file to zillionplicate the GUIDs! Why doesn't the x86 linker catch this?!!? ([[sir_richard]])<br />
* Some more ARM build and linker fixes, moving some of the new x86 C code into ARM. This should really be shared later. ([[sir_richard]])<br />
* Totally broke thread context switching on ARM for now. It's a Good Thing. ([[sir_richard]])<br />
* Fix 16-bit interlocked operations on ARM (GCC doesn't provide built-ins). ARM should build now. ([[sir_richard]])<br />
* STATUS_SUCCESS is not the only succesful return code. ([[sir_richard]])<br />
* Seems like cpsr_c doesn't work in this case? Need to investigate. Put an infinite loop in the entrypoint on ARM. ([[sir_richard]])<br />
* Roel Messiant: Fix NtQueryObject to return the required buffer size if the buffer provided was too small. Unimplemented paths behaviour is preserved. ([[Aleksey Bragin]])<br />
* Check that MaximumSize is valid value if the section is being backed by paging file. ([[Michael Martin]])<br />
* Always initialize TrapFrame segment selectors in KiEnterTrap, because further C code relies on at least TrapFrame->SegFs being correct. Running Arwinss on VirtualBox exposed this bug. ([[Aleksey Bragin]])<br />
* I wouldn't find solution for this bug without Timo's great help! ([[Aleksey Bragin]])<br />
* Remove IMAGE_FILE_MACHINE_NATIVE and IMAGE_FILE_MACHINE_ARCHITECTURE definitions, use only the former ([[Timo Kreuzer]])<br />
* Fix incompatibility with newer KiEnterTrap implementation. Should fix spontaneous issues I possibly introduced with my previous commit, and finally fixes that VirtualBox issue. ([[Aleksey Bragin]])<br />
* Fix memory region size calculation in MemoryBasicInformation in certain cases. Spotted by Michael Martin. ([[Aleksey Bragin]])<br />
* Fix a typo in region size calculation of special memory areas, which unbreaks OllyDbg & co. Thanks Michael Martin for the hint. ([[Aleksey Bragin]]; {{bug|5692}})<br />
* Do the required flush when the last reference to a cache stripe is released. ([[Art Yerkes]])<br />
* The installer now completes given enough ram in NEWCC=1, and writes an ([[Art Yerkes]])<br />
* understandable FS. There's at least one more problem preventing the ([[Art Yerkes]])<br />
* resulting installation from booting however. ([[Art Yerkes]])<br />
* Fix a bug in rmap where we were checking the next (unfortunately named ([[Art Yerkes]])<br />
* current) rmap for a segment membership. ([[Art Yerkes]])<br />
* Fix a mistake in cache trim. ([[Art Yerkes]])<br />
* ifdef detection of DirectMapping in section in NEWCC mode in page out. ([[Art Yerkes]])<br />
* Fix copypasta, thanks Victor! ([[Aleksey Bragin]])<br />
* Greatly simplify and fix the incorrect and overcomplicated if condition in IoIsOperationSynchronous(), based on MSDN description. Bug spotted, fix tested by Pierre. ([[Aleksey Bragin]])<br />
* Temporary bring back the old boot image until I or sir_richard commit a proper fix. ([[Aleksey Bragin]])<br />
* Reduce PDE/PTE confusion a little more. ([[Roel Messiant]]; {{bug|5791}})<br />
* MiQueryMemoryBasicInformation: Fall back on MEMORY_AREA data in sections until the MM rewrite also covers these. for more info. ([[Roel Messiant]]; {{bug|5791}})<br />
* Complete rewrite reserving and releasing of System PTEs. ([[Roel Messiant]])<br />
* The previous algorithm, in a nutshell, worked as follows: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by their base address. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping). ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Problems with the previous algorithm: ([[Roel Messiant]])<br />
* While the idea is that all PTEs in clusters are zeroed, which requesters rely on, cluster bookkeeping isn't zeroed on merges. ([[Roel Messiant]])<br />
* The side effect of this was that PTEs that weren't really zeroed were randomly delivered to requesters. ([[Roel Messiant]])<br />
* 99% of the time, allocations are serviced using the first cluster in the list, which is virtually always the first suitable cluster. ([[Roel Messiant]])<br />
* This is so because the ordering is based on the base address of the clusters, and allocations are serviced using the cluster tail. ([[Roel Messiant]])<br />
* Because the first cluster starts out as the whole pool, and the pool is quite sizable, it can deal with virtually allocations.. for a while. ([[Roel Messiant]])<br />
* A corollary of the previous point is *massive fragmentation* because: as long as an allocation isn't released back into the pool, ([[Roel Messiant]])<br />
* the space of previous allocations that have been released isn't reused because the first cluster can't suck them up, and enough allocations remain in use. ([[Roel Messiant]])<br />
* The combined effect of the previous two points: a first cluster that effectively shrinks mostly, with small clusters forming behind it. ([[Roel Messiant]])<br />
* Once the first cluster has shrunk far enough (which of course takes a long time), 90% of the space may still be free, scattered in mostly small clusters. ([[Roel Messiant]])<br />
* This would make decent sized allocations fail because of the heavy fragmentation. ([[Roel Messiant]])<br />
* An implementation detail that caused the head of the list to be treated as a genuine cluster when the first cluster in the list was too small. ([[Roel Messiant]])<br />
* The algorithm (as explained above) made this case quite unlikely until your system has been running for a while, after which it could happily ([[Roel Messiant]])<br />
* corrupt list heads of other pools, depending on where the list head is with respect to its own pool. ([[Roel Messiant]])<br />
* Empirically obtained data revealed that after just *booting to the desktop*, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained roughly 70 (unusable) clusters, blocking 15 to 20% of the pool. These figures increased to roughly 100 ([[Roel Messiant]])<br />
* clusters and 30 to 35% after opening a foxy browser and using it to visit a mathematically inspired search engine. ([[Roel Messiant]])<br />
* The same data also showed that over 95% of allocations requested just a single PTE, and a noticable allocation spike ([[Roel Messiant]])<br />
* also occured in the range of 65-128 PTEs. It should be clear optimizing for small allocations is a good idea, ([[Roel Messiant]])<br />
* and preferably encourage reuse the same PTEs for such allocations. ([[Roel Messiant]])<br />
* And the new algorithm was born: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by increasing cluster size. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping) .. really this time! ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Both in the reservation and release actions, insertions into the list preserve the increasing cluster size order. ([[Roel Messiant]])<br />
* Empirically obtained data now revealed that after just booting to the desktop, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained exactly 2 clusters. This increased to 10 clusters after some minor internet browsing and watching a 5 minute video using a media player. ([[Roel Messiant]])<br />
* Fix a typo in the page fault handler that caused PDEs to be fixed up when they were in fact valid. ([[Roel Messiant]])<br />
* Only update the System Page Directory when expanding the paged pool. Fixes the PointerPde asserts. ([[Roel Messiant]])<br />
* On paged pool expansion, the system page directory and the process page directory of the calling process were updated. ([[Roel Messiant]])<br />
* When updating the process page directory, an assert made sure the PDE that got written was invalid. ([[Roel Messiant]])<br />
* In case of the System process, both page directories are located on the same physical page. ([[Roel Messiant]])<br />
* So when this process expanded the paged pool, the system page directory update automagically ([[Roel Messiant]])<br />
* updated the process page directory too. The assert therefore triggered. ([[Roel Messiant]])<br />
* Not explicitly updating the process page directory will result in a page fault later on, which is ([[Roel Messiant]])<br />
* handled by copying the required PDE from the system page directory to the process page directory. ([[Roel Messiant]])<br />
* Rumour has it this fix is incorrect because "something's wrong with the System PDE stuff". The lack ([[Roel Messiant]])<br />
* of any further info however leads to this change and explanation. ([[Roel Messiant]])<br />
* Remove undocumented defines from winuser.h and include undocuser.h when _WINE is defined. ([[Aleksey Bragin]])<br />
* crt header compatibility update: ([[Timo Kreuzer]])<br />
* define _USE_MATH_DEFINES for dsound, gdiplus, jscript and some win32k files ([[Timo Kreuzer]])<br />
* don't define HAVE_LRINT(F) in libsamplerate ([[Timo Kreuzer]])<br />
* Remove M_PI constants from win32k ([[Timo Kreuzer]])<br />
* Try to fix a winetst crash. ([[Timo Kreuzer]])<br />
<br />
=== NTOS_MM ===<br />
* N ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Initialize Found to FALSE in NtQueryVirtualMemory. I wonder how GCC missed uninitialized var usage? ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Implement case when NtQueryVirtualMemory is called with non-existing virtual address. ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Handle various special cases in NtQueryVirtualMemory (e.g. querying illegal virtual addresses, shared memory area, etc). Example of an app doing this - OllyDbg. ([[Aleksey Bragin]])<br />
* Don't lie about page protection in MiQueryAddressState. Fixes PDFCreator-alike bugs. ([[Aleksey Bragin]]; {{bug|5627}})<br />
* Don't access pfn database directly, there is a function for this. Thanks sir_richard. ([[Aleksey Bragin]])<br />
<br />
=== NTOSKRNL_MM ===<br />
* Acquire rundown protection on process to make sure it is not being terminated and before attempting to do anything with the process. Fixed a rare case of PspDeleteProcess being called twice for a process, resulting in bugcheck. ([[Michael Martin]])<br />
* Fix the use of an uninitialized variable. ([[Amine Khaldi]])<br />
<br />
=== NTOSKRNL_NEWCC ===<br />
* Init Dummy var even if just used for debug to suppress warning ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PPC ===<br />
* Fix index out of bounds ([[Pierre Schweitzer]])<br />
* Fix sizeof() wrong usage ([[Pierre Schweitzer]])<br />
* Fix the fix, spotted by "ThFabba" on IRC ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* PspCreateThread: If thread creation fails, dereference the Process object also to account for the reference taken at the beginning of the function. ([[Michael Martin]])<br />
* Remove mistakenly committed ASSERTs that were used during my tests. ([[Michael Martin]])<br />
* Revert r48857. The Process object is dereferenced when the Thread object is destroyed, so dont dereference it here. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* add a comment so that noone will stumble upon this atrocity a second time. ([[Timo Kreuzer]])<br />
<br />
=== PSDK_DDK ===<br />
* Add more missing definitions. Fix classpnp.h. ([[sir_richard]])<br />
* Last couple of fixes to headers. Classpnp can compile (and link) now. ([[sir_richard]])<br />
<br />
=== PSDK_NDK ===<br />
* Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. ([[sir_richard]])<br />
<br />
=== RTL_DPH ===<br />
* Add core DPH (Debug Page Heap) structures based on Windows 2003/Vista. ([[Aleksey Bragin]])<br />
* Add misc generic support routines. ([[Aleksey Bragin]])<br />
* Implement DPH version of RtlCreateHeap(). ([[Aleksey Bragin]])<br />
* Debug prints match those printed by Windows 2003. ([[Aleksey Bragin]])<br />
* Implement adding a new pool and allocating a new node. ([[Aleksey Bragin]])<br />
* Add a bunch of stubs. ([[Aleksey Bragin]])<br />
* Implement list manipulation routines: pool list, virtual list, unused list. ([[Aleksey Bragin]])<br />
* Implement node removal from an available list. ([[Aleksey Bragin]])<br />
* Implement more support functions: coalescing a node into the list of available nodes, finding a best fitting node for a given size, growing available virtual memory amount. ([[Aleksey Bragin]])<br />
* Implement other support locking/unlocking, handle-related routines. ([[Aleksey Bragin]])<br />
* Fix RtlpDphFreeVm definition. ([[Aleksey Bragin]])<br />
* Node lists related improvements: Add a function for removing a node from a free list, implement coalescing free nodes into an available list. ([[Aleksey Bragin]])<br />
* Implement a non-implemented case in RtlpDphAllocateNode when there is a need to allocate more virtual memory, and fix incorrect size calculation too. ([[Aleksey Bragin]])<br />
* Implement a function for validating the page heap block. ([[Aleksey Bragin]])<br />
* Implement RtlpPageHeapDestroy. Now we have two exported APIs ready: heap create and heap destroy. ([[Aleksey Bragin]])<br />
* Branch for the 0.3.13 release ([[Colin Finck]])<br />
<br />
=== RTL_HEAP ===<br />
* First commit of a heap manager rewrite. It introduces a totally new heap manager, with the following features: ([[Aleksey Bragin]])<br />
* Actually resembles real NT's heap manager; ([[Aleksey Bragin]])<br />
* Based on data structures similar to Windows 2003 and Vista+'s heap structures; ([[Aleksey Bragin]])<br />
* Supporting advanced heap flags (e.g. useful for debugging); ([[Aleksey Bragin]])<br />
* Substantially lower fragmentation rates (and thus speed and reliability) than the existing Wine's implementation. It's going to be further enhanced by adding a frontend allocator (for example, as lookaside lists, or as a Low Fragmentation Heap alike frontend in Vista+ systems); ([[Aleksey Bragin]])<br />
* Real support for user-defined flags and native support for user-defined values; ([[Aleksey Bragin]])<br />
* Native support for a custom commit routine, which is very important for trunk's win32 subsystem; ([[Aleksey Bragin]])<br />
* Reserving, committing, decommitting and freeing on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary; ([[Aleksey Bragin]])<br />
* Support for per process heaps, with a proper lock; ([[Aleksey Bragin]])<br />
* Reserved support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* The committed code is a result of a month of work, and is a heavy work-in-progress one. It already implements the bare minimum required to boot to 3rd stage and run FireFox 3, however many rare codepaths are not implemented yet and there is some maintenance work to do (e.g. move structures and defines to a standalone header file). A list of used references is stated in the header of a source file for now. ([[Aleksey Bragin]])<br />
* Implement missing parts of a virtual block allocations support. ([[Aleksey Bragin]])<br />
* Minor fixes to handling extra stuff in heap blocks. ([[Aleksey Bragin]])<br />
* Wine's heap regression tests now run through the end without crashing and show 277 failures. ([[Aleksey Bragin]])<br />
<br />
=== SPRINTF ===<br />
* Don't compile the new sprintf by default. Requested by Timo. ([[Amine Khaldi]])<br />
<br />
=== USB_USBEHCI ===<br />
* Reorganization code to put hardware related structures and routines in own source files. ([[Michael Martin]])<br />
* Modify ResetPort to correctly reset the port instead of the controller. ([[Michael Martin]])<br />
* Implement allocating chunks of memory from the Common Buffer for use with the rest of source code. ([[Michael Martin]])<br />
* Implement creating and deleting Queue Heads and Transfer Descriptors from common buffer. ([[Michael Martin]])<br />
* Implement linking/unlinking QueueHeads to create a linked list for Asynchronous Schedule traversal. ([[Michael Martin]])<br />
* Implement BuildSetupPacketFromURB for creating a setup packet from a URB. ([[Michael Martin]])<br />
* Implement SubmitControlTransfer. ([[Michael Martin]])<br />
* Remove all hardware related structs from usbehci.h as they are now in hardware.h. ([[Michael Martin]])<br />
* Add debugging routines for usb descriptors, queue heads and transfer descriptors. ([[Michael Martin]])<br />
* This will break building usbehci, but not a problem as it is not included in the default build. Will be fixed with later commit. ([[Michael Martin]])<br />
* Remove all hardware related routines from fdo.c as they are now in hardware.c ([[Michael Martin]])<br />
* Replace ExecuteControlRequest with new SubmitControlTransfer. ([[Michael Martin]])<br />
* For internal control requests (originating from ehci driver) use an event to signal request completion. ([[Michael Martin]])<br />
* When submitting non internal control request save the Irp in the software part of the QueueHead. ([[Michael Martin]])<br />
* For these requests check for errors and complete the Irp with the appropriate URB Status when the QueueHead is complete. ([[Michael Martin]])<br />
* Misc code cleanup and dead code removal. ([[Michael Martin]])<br />
* UsbEhci now works as before and should be ready for some forward progress. ([[Michael Martin]])<br />
* Fix bug in InitializeUsbDevice that caused endpoints to be duplicated in internal config structure. ([[Michael Martin]])<br />
* Fix implementation of UsbRemoveDevice. ([[Michael Martin]])<br />
* Implement SetDeviceHandleData and RestoreUsbDevice. ([[Michael Martin]])<br />
* SubmitControlTransfer: Not all control request need data, in which case dont create a MDL and a PID_CODE_IN_TOKEN TD Descriptor. ([[Michael Martin]])<br />
* Fix bug in ReleaseMemory that caused memory not to be marked as free. ([[Michael Martin]])<br />
* Fix incorrect memory header size that resulted in memory corruption. ([[Michael Martin]])<br />
* Implement URB_FUNCTION_SELECT_INTERFACE. ([[Michael Martin]])<br />
* Add missing IoMarkIrpPending before calling SubmitControlRequest. ([[Michael Martin]])<br />
* Now use BuildSetupPacketFromURB for creating the CtrlSetup data structure. ([[Michael Martin]])<br />
* When selecting configuration, make the ConfigurationHandle from the related UsbDevice instead of always the RootHub device. ([[Michael Martin]])<br />
* Fix typo that caused all pipes to be marked as interrupt type. ([[Michael Martin]])<br />
* Change CompletePendingURBRequest to only complete one SCE request Irp. ([[Michael Martin]])<br />
* EhciDefferedRoutine: Only free Mdl if one was created when the request was added to the queue. ([[Michael Martin]])<br />
* Dont assume that three transfer descriptors need to be freed, use a while moving to each linked and free instead. ([[Michael Martin]])<br />
* Yabba Dabba Doo added to increase size of message. :) ([[Michael Martin]])<br />
<br />
=== VBEMP ===<br />
* Fix rounding error when calculating display size (neoman; {{bug|5790}})<br />
* Loosely based on (neoman; {{bug|5790}})<br />
* Fixes gdi32_winetest:mapping (neoman; {{bug|5790}})<br />
<br />
=== VIDEOPRT_WIN32K ===<br />
* Synchronize and share PEVENT/ENG_EVENT/VIDEO_PORT_EVENT implementation, as these objects are actually the same (and VideoPrt Event* APIs can be used on GRE Event Objects). Use ENG_EVENT structure from ntddvdeo.h instead of re-creating our own. Drivers using these interfaces will no longer explode. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Implement registering event routine which gets called when a topology node (volume / mute node) changes ([[Johannes Anderwald]])<br />
* Implement fetching event changes ([[Johannes Anderwald]])<br />
* Unlock locked pages before freeing the mdl ([[Johannes Anderwald]])<br />
* Fixes assertion hit 'Assertion 'OldRefCount < 2500' failed at ARM³::MDLSUP line 1008' ([[Johannes Anderwald]])<br />
* Fixes playback / recording of longer audio files ([[Johannes Anderwald]])<br />
* Implement support functions which call the provided functions of mmixer library ([[Johannes Anderwald]])<br />
* Fix a bug in device interface request ioctl handler ([[Johannes Anderwald]])<br />
* Midi devices should now be visible, capabilities be retrieved and opened / close ([[Johannes Anderwald]])<br />
* Writing data is not yet supported ([[Johannes Anderwald]])<br />
* Free allocated mdls in the io completion routine. Also free the associated stream header. ([[Johannes Anderwald]])<br />
* Don't free associated stream header anymore ([[Johannes Anderwald]])<br />
* Tested with VBox 3.2.10 + VmWare Player 3.1.2 + WinXP ([[Johannes Anderwald]])<br />
* Update to new mmixer library interface ([[Johannes Anderwald]])<br />
<br />
=== WIN32KSYS ===<br />
* replace nci-generated stubs with a stub file using macros ([[Timo Kreuzer]])<br />
<br />
=== WIN32K|USER32 ===<br />
* Implement NtUserGetMenuIndex, . ([[James Tabor]]; {{bug|5528}})<br />
* Move to the new window structure. Window Object served us well. ([[James Tabor]])<br />
* Rewrite the Event and Hook procedures. ([[James Tabor]]; {{bug|5670}})<br />
* Add fix for KsStudio for Olaf Siejka and debug prints for WH_KEYBOARD_LL. ([[James Tabor]]; {{bug|5670}})<br />
* Fix for DosBOX. Added more data copies in user32 hook.c. ([[James Tabor]]; {{bug|5670}})<br />
* This hook commit fixes the ros regression testing startup, but consider this a hax fix until more research in Global hooks has completed. More pointed Global hook tests are needed. Misc changes, removed unused storage pointers and reordering. For DosBOX, the mouse low level is now working and the keyboard low level should not be so intermittent as before, now sending messages from system desktop not from thread desktop, ([[James Tabor]]; {{bug|5670}})<br />
* Cleanup and added debug prints. ([[James Tabor]])<br />
* Fixed SendNotifyMessage, thanks to Michael Martin callback changes. Fixed DispatchMessage when dealing with thread errors. Fixed all but one of the Get/PeekMessage wine tests. Fixed attaching threads to process information. Plus other fixes. ([[James Tabor]])<br />
* Implemented support for QS bits, ReplyMessage (not fully correct), and others. ([[James Tabor]])<br />
* Tested everything here, please post regressions so I can add more applications to the test list. This patch is synced with 49720 and 49772. After that there are graphic issues. ([[James Tabor]])<br />
* Credits goes to wine for helping with diagnosing issues in the ReactOS message system. ([[James Tabor]])<br />
* Remove the old send message API and use NtUserMessageCall. ([[James Tabor]])<br />
* Send messages do not pass the Ansi bit. This was evident during the hook changes. User32 knows the caller is Ansi and with a Unicode window user32 can make the apropate switch. Win32k on the other hand, assumes, based on the Unicode window the caller is Unicode. Hook tests enabled in send message, forces the call to win32k, and the Ansi product is Unicode data. Using NtUserMessageCall this bit can be passed forward to allow win32k to make the correct switch going to callback. ([[James Tabor]])<br />
* Finish 50030 (work by Giannis), Now PostMessage passes all the correct data based on Get/PeekMessage. Example: Post A, Get/Peek A, Translate A, Dispatch A, should be that simple. FYI: DDE memory handling should be in win32k not user32 and why,,,,, ~see next point~ ([[James Tabor]])<br />
* Patch up problems (at a minimum) going into the SendMessage/Timeout A2U U2A support in win32k and fixed SMTO callback if local. ([[James Tabor]])<br />
* Fix all the user32 wine win test_SetParent tests. ([[James Tabor]])<br />
* Fix mdi class window function Id, now msi message tests do not assert. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 6 failures dealing with rect size. Start A2U and U2A support. ([[James Tabor]])<br />
* Fix copy paste error, which means this code is not used, should have pop up during testing. ([[James Tabor]])<br />
* Add hack to mark desktop window as a desktop window and notes for creating a desktop with tips in win32k. Move user position code from window to winpos. ([[James Tabor]])<br />
<br />
=== WINE32K|USER32 ===<br />
* Implement client thread information for the beginning of QS flag support and signaling synchronization of messages. ([[James Tabor]])<br />
* Set and clear idle event when setting clearing masks. This fixed the idle foreground hook call from user mode. ([[James Tabor]])<br />
* Fixed wine ListBox and ReactOS ComboBox tests. Critical note: SendMessageA/W, when IsThreadHooked is used and any global hooks are affirmed, all messages are sent to Win32k and the result is, A to W and W to A mismatch via UMToKM. Fixing Global hook support exposed a critical bug in ReactOS message system. Enable the appropriate hooks will temporarily remedy this bug. ([[James Tabor]])<br />
* All patches are from a checked out revision from 49475. Upping ntuser.h, win32k and user32 to sync. ([[James Tabor]])<br />
<br />
=== YAROTOWS ===<br />
* Reintegrate the branch. For a brighter future. ([[Timo Kreuzer]])<br />
* Main features: ([[Timo Kreuzer]])<br />
* Implement LDEVOBJ api. Responsible for loading dlls (display drivers, font drivers, keyboard layout, etc), replacing code in different locations. ([[Timo Kreuzer]])<br />
* Implement PDEVOBJ api. A PDEVOBJ represents a physical device and is the core component for handling multiple display devices. ([[Timo Kreuzer]])<br />
* Rewrite device locking. The new method was neccessary to allow dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement support for enumerating display devices and settings. ([[Timo Kreuzer]])<br />
* Implement dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement a number of Eng mapping functions. ([[Timo Kreuzer]])<br />
* Rewrite Eng level surface handling for cleaner code and better compatability. ([[Timo Kreuzer]])<br />
* Rewrite parts of the DIB handling code. ([[Timo Kreuzer]])<br />
* Rewrite DC creation and deletion. Deletion and cleanup is now completely callback based. Now we don't leak the DC objects when terminating a process, like we did before. ([[Timo Kreuzer]])<br />
* Improve the XLATE and BRUSH code, removing several old hacks. ([[Timo Kreuzer]])<br />
* Improve icon code. ([[Timo Kreuzer]])<br />
* Thanks to Jerome Gardou, Kamil Hornicek and everyone helping. ([[Timo Kreuzer]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.13&diff=29257
ChangeLog-0.3.13
2011-02-21T22:35:42Z
<p>CycleGeek: </p>
<hr />
<div>This is the changelog for ReactOS™ [[0.3.13|version 0.3.13]] (released XXXXXXX), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.12|version 0.3.12]] (released 20 October 2010).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core developers ===<br />
* Giannis Adamopoulos<br />
* Johannes Anderwald<br />
* Aleksey Bragin<br />
* Dmitry Chapyshev<br />
* Benedikt Freisen<br />
* Jerome Gardou<br />
* Cameron Gutman<br />
* Kamil Hornicek<br />
* Amine Khaldi<br />
* Eric Kohl<br />
* Timo Kreuzer<br />
* Matthias Kupfer<br />
* Michael Martin<br />
* Ged Murphy<br />
* Sylvain Petreolle<br />
* ReactOS Portable Systems Group<br />
* Daniel Reimer<br />
* Gregor Schneider<br />
* Pierre Schweitzer<br />
* James Tabor<br />
* Christoph von Wittich<br />
* Art Yerkes<br />
<br />
=== Patch submitters ===<br />
* Damir Aliev<br />
* Oleg Baikalow<br />
* Carlo Bramini<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Adam Kachwalla<br />
* Radek Liška<br />
* Roel Messiant<br />
* Love Nystrom<br />
* Igor Paliychuk<br />
* Samuel Serapion<br />
<br />
=== Localization ===<br />
* spb-ivan92 ({{Bug|5685}})<br />
* wojtekkozlo664 AT op DOT pl ({{Bug|5740}})<br />
* Mario Kacmar<br />
* Andres Traks<br />
<br />
=== Support staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.13 changes ==<br />
=== Applications ===<br />
* Paint: Generalize changes related to mirroring rectangular selections to free form selections, solve problem regarding selection contents update<br />
* Winmine: Synced and forked from Wine 1.3.5 winemine.<br />
<br />
=== Control Panel Applets ===<br />
=== Installer ===<br />
=== Services ===<br />
== Tests ==<br />
== Translations ==<br />
<br />
== Wine syncs ==<br />
Libraries synced<br />
* atl<br />
* d3d8<br />
* d3d9<br />
* ddraw<br />
* fusion<br />
* gdiplus<br />
* hlink<br />
* iexplore<br />
* mprapi<br />
* msi<br />
* msiexec<br />
* reg<br />
* shdocvw<br />
* urlmon<br />
* wer.dll<br />
* widl<br />
* wined3d<br />
* winemine<br />
* winhlp32<br />
* winhttp<br />
* wininet<br />
* wordpad<br />
* write<br />
* wtsapi32<br />
* xcopy<br />
<br />
== Third party libraries ==<br />
* DejaVu Fonts Documentation updated to 2.31<br />
* RedHat Liberation Fonts updated to 1.06<br />
* Tahoma Fonts undated to Wine HEAD<br />
* bzip2 updated to 2.06<br />
<br />
== BASE ==<br />
<br />
=== APPLICATIONS ===<br />
<br />
==== CALC ====<br />
* Initialize next field. Fixes CID 11063 ([[Timo Kreuzer]])<br />
<br />
===== DOSKEY =====<br />
<br />
==== CMDUTILS ====<br />
* Fix compilation with msvc by GetProcAddress'ing undocumented functions, TCHAR -> WCHAR in the process ([[Jérôme Gardou]])<br />
<br />
===== XCOPY =====<br />
* Fix compilation with msvc ([[Jérôme Gardou]])<br />
* 1. Someone should send this to wine (this is NOT lazyness) ([[Jérôme Gardou]])<br />
* 2. Someone should tell mingw dev about http://msdn.microsoft.com/en-us/library/aa381050%28v=VS.85%29.aspx ([[Jérôme Gardou]])<br />
* Spanish translation by JasonGenie at gmail dot com ([[Amine Khaldi]]; {{bug|5889}})<br />
* Add stubs for all page heap API functions. ([[Aleksey Bragin]])<br />
* Enable call to RtlpPageHeapDestroy() when necessary. ([[Aleksey Bragin]])<br />
* Reset Parameters==-1 hack after unsuccessful call to RtlpPageHeapCreate(), would be necessary when page heap is implemented.. ([[Aleksey Bragin]])<br />
<br />
==== FINDSTR ====<br />
* Port findstr (incomplete, as author of this patch states, it may satisfy RosBE, .c .h and .rc files) from FreeDOS project. Needed for RosBE-on-ReactOS support. ([[Aleksey Bragin]]; {{bug|5724}})<br />
<br />
===== SOLITAIRE =====<br />
<br />
==== GAMES ====<br />
* do not include already included file in rc files ([[Jérôme Gardou]])<br />
* add missing close for handle ([[Matthias Kupfer]])<br />
* one more fix (on request of Pierre S.) ([[Matthias Kupfer]])<br />
<br />
===== NSLOOKUP =====<br />
<br />
==== NETWORK ====<br />
* Use memcpy with sizeof instead of strncpy with strlen to make sure the destination string will be zero terminated. ([[Timo Kreuzer]])<br />
* CID 1649 ([[Timo Kreuzer]])<br />
<br />
===== PING =====<br />
* Add localization support to ping. (; {{bug|5500}})<br />
* Implement small helper MyLoadString, using FindResource, LoadResource, LockResource and replacing LoadString, so we don't need to link to user32 anymore. ([[Timo Kreuzer]])<br />
* Add German translation. ([[Timo Kreuzer]])<br />
* Polish translation of ping. (Olaf)<br />
* Italian translation of ping. (Vincenzo)<br />
* French translation patch from myself aka Pierre Schweitzer, with deepest love, and so on... ([[Pierre Schweitzer]])<br />
* Fix typos ;) ([[Johannes Anderwald]])<br />
* Fix MyLoadString. (menone7)<br />
<br />
==== REGEDIT ====<br />
* Katayama Hirofumi: Unicodify regedit, add support for import/export of v5 reg files. Based on Wine regedit. ([[Aleksey Bragin]])<br />
* Katayama Hirofumi: Don't leak open handles to keys. ([[Aleksey Bragin]]; {{bug|5547}})<br />
* Fix a bug causing registry entries with names containing a backslash to be displayed incorrectly ([[Cameron Gutman]])<br />
* Adam Kachwalla <geekdundee@gmail.com> ([[Aleksey Bragin]]; {{bug|5711}})<br />
** Load Hive..." and "Unload Hive..." menu items implemented<br />
** Make address bar case-insensitive ([[Aleksey Bragin]]; {{bug|5711}})<br />
** Remove trailing slashes in address bar when at root keys (e.g. "HKEY_LOCAL_MACHINE\" or "HKEY_CURRENT_USER\")<br />
** Address "go" button added<br />
** Removed ~8px slack from bottom of the app (not needed and looks better)<br />
** Factored out error displaying functions into error.c file.<br />
<br />
==== TASKMGR ====<br />
* Fix Russian translation, by spb-ivan92. ([[Aleksey Bragin]]; {{bug|5685}})<br />
* Rafal Harabien: Add support for DELETE key to processes and applications list in taskmgr. ([[Aleksey Bragin]]; {{bug|5646}})<br />
<br />
=== SERVICES ===<br />
* Remove the reference counter from the common handle type as a handle is never shared or duplicated. ([[Eric Kohl]])<br />
* Remove the access right from the service handle as it is not used. ([[Eric Kohl]])<br />
* Dereference service manager handles and service handles in two separate functions that SEH-protect the initial access to the handle and signature check. This will protect SCM from bogus handles. ([[Eric Kohl]])<br />
* Use new handle check functions in RCloseServiceHandle(). ([[Eric Kohl]])<br />
* RControlService: Check if a control request is acceptable for a user mode service before sending it to the service. ([[Eric Kohl]])<br />
* RControlService: Check the current state before sending a control request. ([[Eric Kohl]])<br />
* Merge ScmControlService() and ScmSendStartCommand() into ScmSendServiceCommand(). ([[Eric Kohl]])<br />
* Revert r49366. ([[Eric Kohl]])<br />
* Fix a typo (|| instead of |). Found by clang. ([[Timo Kreuzer]])<br />
<br />
==== EVENTLOG ====<br />
* Rename the EVENTSOURCE struct to LOGHANDLE because it is currently used like a handle object. The EVENTSOURCE struct will be added again in one of the next commits. ([[Eric Kohl]])<br />
<br />
==== UMPNPMGR ====<br />
* Start using XP- and Vista-compatible pipe names for the RPC endpoint. Kick out the ROS-specific \pipe\umpnpmgr one. ([[Roel Messiant]])<br />
* Use only the Vista pipe name for now, using the XP one makes device installation fail.. ([[Roel Messiant]])<br />
* Use the correct PNP interface UUID ([[Roel Messiant]])<br />
<br />
==== USETUP ====<br />
<br />
=== SETUP ===<br />
* Update Ukrainian translation by Igor Paliychuk. ([[Amine Khaldi]]; {{bug|5536}})<br />
* 5540 5604 5614 5617 for more details. ([[Amine Khaldi]]; {{bug|5536}})<br />
* Update Estonian translation by anthrax11. ([[Amine Khaldi]]; {{bug|5625}})<br />
* Fix a really mean bug: wcslen() returns the size in characters whereas MaximumLength has to be in bytes. ([[Pierre Schweitzer]])<br />
* Now, this sets MaximumLength to its appropriate size and prevents some memory issues (and buffers having odd size, which is weird for an unicode string...). ([[Pierre Schweitzer]])<br />
<br />
==== CMD ====<br />
<br />
=== SHELL ===<br />
* Carlo Bramix: MultiByteToWideChar() has just 6 and not 8 parameters, probably it's a forgetten copy/past from WideCharToMultiByte(). ([[Aleksey Bragin]]; {{bug|5678}})<br />
* Carlo Bramix: ConvertULargeInteger() should have its parameter 'Len' declared as UINT rather than 'INT'. This fixes a signed/unsigned mismatch warning. ([[Aleksey Bragin]]; {{bug|5678}})<br />
<br />
==== EXPLORER ====<br />
* Track the only Global Hook ReactOS has. ([[James Tabor]])<br />
* Revert last change. ([[James Tabor]])<br />
<br />
==== EXPLORER-NEW ====<br />
* Fix another "sizeof" usage mistake ([[Cameron Gutman]])<br />
* CID 1631 ([[Cameron Gutman]])<br />
<br />
=== SYSTEM ===<br />
<br />
==== SMSS ====<br />
* Remove the ROS_DOESNT_SUCK hack, and correctly started subsystem processes with the first MB reserved. ([[sir_richard]])<br />
<br />
==== WINLOGON ====<br />
* Add msg constants (by smiley) ([[Johannes Anderwald]])<br />
<br />
== BOOT ==<br />
<br />
=== ARMLLB ===<br />
* Make DbgPrint compatible so we can use debug.h. ([[sir_richard]])<br />
* Add support for ATAG_REVISION. ([[sir_richard]])<br />
* Fix support of ATAG_MEM: there can be multiple tags, one per DRAM bank. ([[sir_richard]])<br />
* Fix the default case not to "return": it should "Break" instead. ([[sir_richard]])<br />
* Only apply the RAMDisk hack on Beagle for now. ([[sir_richard]])<br />
* Add uImage header which uBoot expects on the images it can load nicely (using "go" will not give us ATAGs, "bootm" requires this header). It's a static header instead of requiring the mkImage tool, since we can disable data checksums in uBoot. We basically fake being a Linux kernel and the LLB handles the ATAGs. ([[sir_richard]])<br />
* Add boot stack for Zoom2. ([[sir_richard]])<br />
* Initialize hardware before parsing environment variables. This makes more sense, and also allows debug output from the environment scanning code. ([[sir_richard]])<br />
* Add the MACHINE_TYPE code for the ZOOM2, based on the standard machtype definitions maintained by the various boot loader communities. ([[sir_richard]])<br />
* Forgot to commit this earlier: define the ATAG_REVISION header. ([[sir_richard]])<br />
* Include FreeLoader's keycode mappings (which don't seem standard) in ARMLLB, so we can do correct keypad to keycode translation. ([[sir_richard]])<br />
* Include ReactOS's standard debug.h, which lets us un-redefine DbgPrint, and also gives us goodies like ASSERT and DPRINT1. ([[sir_richard]])<br />
* We made certain assumptions in the "generic" files that are actually board-specific. For example, Versatile does indeed return a strange ULONG as the RTC time (seconds since 1970, I think), but TWL4030 on the ZOOM2 is normal and returns BCD RTC values just like the PC CMOS. Therefore, most of the "Generic" time.c code should move to versatile later. For now, use an IFDEF. ([[sir_richard]])<br />
* Likewise, not all platforms have a PS/2 controller like the Versatile. ZOOM2 for example has a keypad, so the generic "input" file shouldn't assume keyboard-only. As such, most of the code there should also be made specific, but for now, use an ifdef. ([[sir_richard]])<br />
* Although the soothing BSOD blue color is nice for LLB debugging, we'd really prefer to have black so it looks more natural on the eyes when booting to FreeLoader. As such, make the default backcolor black, but keep the old blue color for early testing, if enabled with a define. ([[sir_richard]])<br />
* Split up support between OMAP3 Beagle and ZOOM2. ([[sir_richard]])<br />
* Implement ZOOM2 ARMLLB board support package. TWL4030 read/write implemented (through basic I2C on the HS interface), RTC and Keypad Matrix implemented (through TWL4030), NEC WVGA Panel Initialization (through basic SPI interface on the MBPSI), basic clock setup and GPIO access for DSS/DISPC, setup DSS/DISPC for output on the NEC panel. UART implemented through Quad-UART NS16550 compatible chip (using CPORTlib). ([[sir_richard]])<br />
* Requires having been booted through x-loader+uboot as a kernel image. Will work on directly booting from NAND later. ([[sir_richard]])<br />
* Delete deprecated folder ([[sir_richard]])<br />
* Add missing UART functionality for ZOOM2. Leverages existing CPORT library. ([[sir_richard]])<br />
<br />
=== FREELDR ===<br />
* Fix CDs checksum computation ([[Pierre Schweitzer]])<br />
* Convert most of the trap and blue screen code from asm to C, use KTRAP_FRAME and KSPECIAL_REGISTERS on the stack, instead of using a bunch of global variables. Convert multiply used asm code chunks into macros. Use intel syntax for remaining asm. ([[Timo Kreuzer]])<br />
* 135 lines of C + 178 lines of asm, instead of 942 lines of asm ([[Timo Kreuzer]])<br />
* On ARM, don't turn on maximum, hyper, ultra-slow debugging and analysis features for the heap. This, for example, reduces FreeLoader's size by 32KB+ and speeds up boot by entire seconds, as the entire heap isn't zeroed out on startup. ([[sir_richard]])<br />
* May I humbly suggest you do the same on x86?! ([[sir_richard]])<br />
* Add startup file for ARM builds as well, so that _start can be the first function in the file. ([[sir_richard]])<br />
* Set load address for ZOOM2, and differentiate Beagle vs ZOOM2. ([[sir_richard]])<br />
* Add linker script for ARM as well. We drop the relocation section as it shouldn't be needed. ([[sir_richard]])<br />
* Add more keycodes. ([[sir_richard]])<br />
* Put ARM boot code in .init section to guarantee it goes first in the file, as per the linker script. ([[sir_richard]])<br />
* Define FreeLoader module for ARM. Differences with x86 are mostly due to the fact "bootloader" was unfortunately made an x86-specific module type, so we have to use "kernel" to get around that, which thankfully has remained portable. ([[sir_richard]])<br />
* VaToPa/PaToVa are assuming all architectures have VA at PA | KSEG0_BASE. This is not the case. On ZOOM2, DDR RAM starts at 0x80000000 for example, so KSEG0 == VA == PA. Use an ifdef do handle this. ([[sir_richard]])<br />
* Headless/EMS support is an x86-specific feature (at least for now, until the code is made portable). ([[sir_richard]])<br />
* Use PaToVa to set the Hive and NLS data pointers, instead of assuming that KSEG0_BASE | Pa is the correct answer for all architectures. ([[sir_richard]])<br />
* Cleanup firmware table setup and add support for being booted from a ZOOM2 ARMLLB, and set the correct file system buffer address for that board. ([[sir_richard]])<br />
* For *every single heap allocation*, there was code to request an entire *heap statistic run*! This is ridiculous and slows heap allocations tremendously. Additionally, it also assumes bstats was linked in, which it might not be if the flag wasn't set in bheap.c. Only enable this code if a special MM_DBG define is set. ([[sir_richard]])<br />
* Done originally for ARM, but I think x86 will appreciate the benefit too (and x86 can now go ahead and disable all those ridiculous debug settings that are turned on by default in bheap.c). ([[sir_richard]])<br />
* Fix RAM layout assumptions in ARM code. ([[sir_richard]])<br />
* poor little printf causes boot break, nuff said. ([[Sylvain Petreolle]])<br />
* Conditionally enable heap-related debugging and validation checks by an MM_DBG define for all architectures. Inspired by 49744. ([[Aleksey Bragin]])<br />
* Delete a duplicate line. ([[Dmitry Gorbachev]])<br />
* compile headless support only for x86 ([[Timo Kreuzer]])<br />
* Fix broken release version ([[Timo Kreuzer]])<br />
* Reduce difference with the cmake branch, mostly msvc and amd64 fixes. ([[Amine Khaldi]])<br />
* merge most spec file changes from cmake branch ([[Timo Kreuzer]])<br />
* add stub files to build ([[Timo Kreuzer]])<br />
* Add missing stubs.h ([[Timo Kreuzer]])<br />
* try to fix build ([[Timo Kreuzer]])<br />
<br />
==== FREELDR ====<br />
<br />
===== ARCH =====<br />
<br />
====== AMD64 ======<br />
* Add ksamd64.inc ([[Timo Kreuzer]])<br />
<br />
====== ARM ======<br />
* Our new target is the ZOOM2 OMAP3, instead of Beagle (but we'll keep testing both). ([[sir_richard]])<br />
* The text section is called ".text", not "text". This caused any ARM assembly to create a new section in the PE and waste 4KB. ([[sir_richard]])<br />
<br />
===== CACHE =====<br />
* The cache manager rewrite I started years ago has finally appeared in ([[Art Yerkes]])<br />
* ReactOS' trunk and although at this point it's not quite perfectly ([[Art Yerkes]])<br />
* integrated, it's enough to boot up the bootcd or livecd. To check out ([[Art Yerkes]])<br />
* the more mature original, check out arty-newcc-reactos, branch ([[Art Yerkes]])<br />
* arty-newcc on bitbucket.org . Amine Khaldi encouraged me quite a bit ([[Art Yerkes]])<br />
* to not give up on it, and was able to reach out and be an advocate ([[Art Yerkes]])<br />
* when i really wasn't able to. Others agree that the time has come to ([[Art Yerkes]])<br />
* begin removing the old cache manager. I expect the remaining problems ([[Art Yerkes]])<br />
* in the version going to trunk will be taken care of relatively ([[Art Yerkes]])<br />
* quickly. ([[Art Yerkes]])<br />
* The motivation for this effort lies in the particularly hairy ([[Art Yerkes]])<br />
* relationship between ReactOS' cache manager and data sections. This ([[Art Yerkes]])<br />
* code completely removes page sharing between cache manager and section ([[Art Yerkes]])<br />
* and reimagines cache manager as being a facility layered on the memory ([[Art Yerkes]])<br />
* manager, not really caring about individual pages, but simply managing ([[Art Yerkes]])<br />
* data section objects where caching might occur. ([[Art Yerkes]])<br />
* It took me about 2 years to do the first pass of this rewrite and most ([[Art Yerkes]])<br />
* of this year to fix some lingering issues, properly implement demand ([[Art Yerkes]])<br />
* paging in ReactOS (code which didn't come with this patch in a ([[Art Yerkes]])<br />
* recognizable form), and finish getting the PrivateCacheMap and ([[Art Yerkes]])<br />
* SharedCacheMap relationship correct. ([[Art Yerkes]])<br />
* Currently, the new ntoskrnl/cache directory contains an own ([[Art Yerkes]])<br />
* implementation of data file sections. After things have settled down, ([[Art Yerkes]])<br />
* we can begin to deprecate and remove the parts of ReactOS' section ([[Art Yerkes]])<br />
* implementation that depend on a close relationship with cache ([[Art Yerkes]])<br />
* manager. Eventually, I think that the extra code added to ([[Art Yerkes]])<br />
* ntoskrnl/cache/section will be removed and ReactOS' own sections will ([[Art Yerkes]])<br />
* replace the use of the special MM_CACHE_SECTION_SEGMENT in the cache ([[Art Yerkes]])<br />
* path. ([[Art Yerkes]])<br />
* Note also, that this makes all cache manager (and new section parts) ([[Art Yerkes]])<br />
* use wide file offsets. If my section code were to take over other ([[Art Yerkes]])<br />
* parts of the ReactOS memory manager, they would also benefit from ([[Art Yerkes]])<br />
* these improvements. ([[Art Yerkes]])<br />
* I invite anyone who wants to to peek at this code and fix whatever ([[Art Yerkes]])<br />
* bugs can be found. ([[Art Yerkes]])<br />
* KSUSER, KS, SYSAUDIO] ([[Johannes Anderwald]])<br />
* Make pin / node / allocator create requests compatible to ms by removing obsolete slash before object class ([[Johannes Anderwald]])<br />
* Return correct error code in ksuser's KsCreatePin ([[Johannes Anderwald]])<br />
* ReactOS KS is now able to create audio pins in Windows XP, though playback is not yet working ([[Johannes Anderwald]])<br />
* All changes except ksuser change has been verified to work with VBox 3.2.10 ([[Johannes Anderwald]])<br />
* KS user changes not tested yet as KSStudio not working in trunk ([[Johannes Anderwald]])<br />
<br />
===== DISK =====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Also added support for IOCTL_DISK_GET_DRIVE_GEOMETRY_EX. ([[Pierre Schweitzer]])<br />
* Hackplemented support for IOCTL_DISK_GET_PARTITION_INFO_EX. It will work fine for MBR partitions but will fake returns for GPT partitions. ([[Pierre Schweitzer]])<br />
* Implemented support for IOCTL_DISK_GET_LENGTH_INFO ([[Pierre Schweitzer]])<br />
<br />
===== RTL =====<br />
* Fixed a really stupid (and old) bug in RtlComputeCrc32(): ([[Pierre Schweitzer]])<br />
* First parameter is initial CRC32 checksum. And it's complete and not partial, thus it needs to be an ULONG and not an USHORT. ([[Pierre Schweitzer]])<br />
* This fixes CRC32 checksum computation with initial checksum (tested again Windows 2003 & Seven). ([[Pierre Schweitzer]])<br />
* Fix heap code to actually use the new lock instead of using RTL_CRITICAL_SECTION. ([[Aleksey Bragin]])<br />
* Fix a ROUND_UP and ROUND_DOWN macros: it is a *rule* to wrap every argument in braces in a macro, otherwise shit happens. A couple of days were lost fighting a strange bug in the new heap manager code where it was doing ROUND_UP(Heap + 1, PAGE_SIZE)... ([[Aleksey Bragin]])<br />
* Change RtlLockBootStatusData prototype according to http://cookp.com/%2F/thread/1111206/how%20can%20i%20detect%20last%20boot%20success ([[Eric Kohl]])<br />
* Carlo Bramini <carlo DOT bramix AT libero DOT it> ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix for render status bar after changing line wrap and flicker issue. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* for details. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix RtlSetUserFlagsHeap declaration and definition. ([[Aleksey Bragin]])<br />
* Fix a bug introduced Mon Dec 6 00:25:14 1999 UTC (10 years, 10 months ago) in revision 828. NtFreeVirtualMemory takes a pointer to the address to free, not the address instead. For the last 11 years, freeing the process parameter block resulted in freeing whatever the first value in the structure is, which is MaximumLength and initialized to 0x1000. ReactOS would then free whatever random address was in that area. In real Windows, it is illegal to free an allocation in the middle of the base address, and this call failed with the new VAD code. ReactOS either leaked the memory or freed random data, who knows. ([[sir_richard]])<br />
* Make the PPB live in the Heap instead of having its own virtual allocation, fixing the issue above. Stop rounding it to a PAGE_SIZE, and just use the space required. ([[sir_richard]])<br />
* Roel Messiant: Specify proper byte length of a unicode string. Fixes out of bounds access in actctx.c support code. No more half-cut active context stuff in debug logs. ([[Aleksey Bragin]])<br />
* Minor code changes to RTL (one would call them "optimisation"). Added some missing paged code. ([[Pierre Schweitzer]])<br />
* Plus added useful asserts (used to catch r50615 bug!) ([[Pierre Schweitzer]])<br />
* Merge changes to rtl from cmake branch. Mostly use portable interlocked functions ([[Timo Kreuzer]])<br />
* Merge MSVC fixes from cmake branch ([[Timo Kreuzer]])<br />
* Move page heap related code to heappage.c. ([[Aleksey Bragin]])<br />
<br />
===== SRC =====<br />
<br />
====== DRIVERS ======<br />
<br />
==== MESA32 ====<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Add missing breaks. (Samuel)<br />
<br />
=== CPL ===<br />
<br />
==== TIMEDATE ====<br />
* Fix French translation. ([[Sylvain Petreolle]])<br />
<br />
==== DDRAW ====<br />
<br />
=== DIRECTX ===<br />
* Jerome Gardou: Almost all of the ddraw->refcount winetests pass. One remains, due to the fact that IdirectDrawSurface::SetPalette is unimplemented. IDirectDraw::Createpalette is implemented too, but needs testing. There are no parameter checks. ([[Aleksey Bragin]]; {{bug|4909}})<br />
* Comments from me: The patch is not build-tested, however I did my best to merge it to existing ddraw and I prefer the actual code to be in the repository rather than hanging in bugzilla for years (last comment to the patch is dated 29.10.2009). ([[Aleksey Bragin]]; {{bug|4909}})<br />
<br />
===== D3D =====<br />
* Preparations for update to widl 1.3.4. ([[Eric Kohl]])<br />
<br />
==== WINE ====<br />
* Add iscntrlW() definition ([[Cameron Gutman]])<br />
* Fix non-x86 versions of Wine's push/pop exception frame macro. ([[sir_richard]])<br />
<br />
===== WINED3D =====<br />
* Update wined3d, ddraw, d3d8 and d3d9 to Wine 1.3.4. ([[Kamil Hornicek]])<br />
* Our CRT causes duplicate definitions, when trying to use it as fallback for missing msvcrt imports. Work around this limitation by adding powf and sqrtf wrappers for amd64 builds ([[Timo Kreuzer]])<br />
<br />
=== NTDLL ===<br />
* Use LOCK instead of lock for SList assembly functions, this is a conditional such that on UP, "lock" instruction won't be generated. ([[sir_richard]])<br />
* Apply the special begin/fault/resume lablels to the user-mode SList functions. Access faults can happen there due to a bug in the Windows algorithm, and Mm will need to handle that. ([[sir_richard]])<br />
* Fix loading of GlobalFlags in Image File Execution Options. I really wonder who had that brilliant idea that bitwise flags would be stored as a string in the registry. ([[Aleksey Bragin]])<br />
* If there is a GlobalFlags value specified in the registr for that specific image, it means that value should overwrite NtGlobalFlags. Fix that too (previously it was ORing which made no sense). ([[Aleksey Bragin]])<br />
* Respectively fix incorrect data type for GlobalFlags in ReactOS registry. ([[Aleksey Bragin]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* LoadImageFileExecutionOptions() improvements: ([[Aleksey Bragin]])<br />
* Apply certain heap flags if the process is being debugged (only if NtGlobalFlags is not overridden). ([[Aleksey Bragin]])<br />
* Implement enabling page heap and reading image-specific configuration values. ([[Aleksey Bragin]])<br />
* Add page heap configuration values to the Heap Manager. ([[Aleksey Bragin]])<br />
* Fix a typo which always set page heap enabled to true. ([[Aleksey Bragin]])<br />
* Load image execution options before creating process heap (so that GlobalFlag overrides can be taken into account). ([[Aleksey Bragin]])<br />
* Make LdrQueryImageFileExecutionOptions avoid heap usage when possible (and when it's not possible, fail with out of memory status). ([[Aleksey Bragin]])<br />
* Fixes a dramatic count of ~100 failures in "kernel32_winetest heap". ([[Aleksey Bragin]])<br />
* Fixed build ([[Pierre Schweitzer]])<br />
* Don't access unitialized memory. Caught thanks to a new heap manager, and this fixes all weird actctx exceptions in kernel32_winetest heap. ([[Aleksey Bragin]])<br />
* Fix amd64 build. ([[Kamil Hornicek]])<br />
* Attempt nr. 2: link wined3d to crt on amd64 build. ([[Kamil Hornicek]])<br />
* Fix LdrVerifyImageMatchesChecksum() prototype. ([[Aleksey Bragin]])<br />
* Move RtlPcToFileHeader to rtl/libsupp.c ([[Timo Kreuzer]])<br />
* Raise harderror and terminate process when the image is of a foreign architecture. ([[Timo Kreuzer]])<br />
* Fix harderror status on machine type mismatch and pass file name. ([[Timo Kreuzer]])<br />
<br />
==== ADVAPI32 ====<br />
<br />
=== WIN32 ===<br />
* Roel Messiant: Properly handle STATUS_BUFFER_TOO_SMALL in RegEnumValueW implementation. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Katayama Hirofumi: Use DataLength field in RegEnumValueW instead of DataOffset. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Roel Messiant: Test behaviour in Vista and apply same fix to RegEnumValueA. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Implement LsaCreateAccount(), LsaOpenAccount() and LsaSetInformationPolicy(). ([[Eric Kohl]])<br />
* Implement LsaAddPrivilegesToAccount(), LsaCreateTrustedDomain(), LsaDeleteTrustedDomain() and LsaOpenTrustedDomainByName(). ([[Eric Kohl]])<br />
* Move the Encrypted File System (EFS) functions into their own file. ([[Eric Kohl]])<br />
* Roel Messiant: Fix short-circuit evaluation. ([[Aleksey Bragin]]; {{bug|5677}})<br />
* Implement LsaAddAccountRights(), LsaQueryTrustedDomainInfoByName() and LsaRemoveAccountRights(). ([[Eric Kohl]])<br />
* ConvertStringSidToSidW: Stop writing 1 subauthority too much. Fixes a DWORD sized buffer overflow. Should fix bug #5764. ([[Roel Messiant]])<br />
* ConvertStringSidToSidW: Don't leak an allocated SID in case of failure. ([[Roel Messiant]])<br />
* Move file encryption functions from crypt/crypt.c to misc/efs.c. ([[Eric Kohl]])<br />
<br />
==== ATL ====<br />
* Ettl Martin: Make CComCriticalSection destructor virtual. ([[Aleksey Bragin]]; {{bug|4975}})<br />
<br />
==== AUTHZ ====<br />
* Fix AuthzReportSecurityEvent, AuthzInitializeObjectAccessAuditEvent and AuthzInitializeObjectAccessAuditEvent2 prototypes. ([[Amine Khaldi]])<br />
* Missed these. ([[Amine Khaldi]])<br />
* Another dll addition to cmake, another rc file fix. ([[Daniel Reimer]])<br />
<br />
==== AVIFIL32 ====<br />
* Split utf8 resources into theit own file (MSVC compatibility) ([[Timo Kreuzer]])<br />
<br />
==== CFGMGR32 ====<br />
* Add missing functions. ([[Eric Kohl]])<br />
* Add forwarders to functions that are exported by setupapi.dll. ([[Eric Kohl]])<br />
* Mark deprecated functions. ([[Eric Kohl]])<br />
<br />
==== COMCTL32 ====<br />
* Fix bitmap resources. They were not very valid. Windows didn't even load them. Probably created with some linux tool *cough* ([[Timo Kreuzer]])<br />
* Fixes part of the broken icons. Not the pink ones though. ([[Timo Kreuzer]])<br />
* Revert 45676 ([[Johannes Anderwald]])<br />
* It appears that the definitions for IID_IUnknown differ for kernel mode COM and user mode COM ([[Johannes Anderwald]])<br />
<br />
==== DEVMGR ====<br />
* DisplayDevicePropertyText: Use full DWORD value, not just one byte of it (CID 1803). ([[Roel Messiant]])<br />
<br />
==== GDI32 ====<br />
* Don't make the wrong assumption that POINT and POINTL are identical. ([[Timo Kreuzer]])<br />
* remove useless memory reallocation : the buffer size must be dword aligned, we have no way to guarantee the buffer location will be. ([[Jérôme Gardou]])<br />
* pass BITMAPINFO pointer size to NtGdiGetDIBitsInternal ([[Jérôme Gardou]])<br />
* Consistent formatting, no code change. ([[Jérôme Gardou]])<br />
* Implement GdiGetDcAttr. Just for convenience / cleaner code. ([[Timo Kreuzer]])<br />
* Move EFLOAT handling in seperate file, its x86 specific ([[Timo Kreuzer]])<br />
* Implement CombineTransform fully in usermode instead of forwarding to NtGdiCombineTransform ([[Timo Kreuzer]])<br />
* Implement MatrixToXForm ([[Timo Kreuzer]])<br />
* Implement GdiTransformPoints ([[Timo Kreuzer]])<br />
* GDI32] ([[Timo Kreuzer]])<br />
* Check paramters in CombineTransform ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf, 2nd try :) ([[Timo Kreuzer]])<br />
<br />
==== IPHLPAPI ====<br />
* Rewrite name server enumeration routines ([[Johannes Anderwald]])<br />
* Check if static dns entries are present before checking for dynamic dns entries ([[Johannes Anderwald]])<br />
* Fixes static dns entries ([[Johannes Anderwald]])<br />
* Remove conditional redefine of DPRINT. Wine debug channels at this point, and we have NDEBUG. ([[Roel Messiant]])<br />
* Use TRACE instead of DbgPrint. Gets rid of the "Status 2" spam when no static nameserver is in the registry. ([[Roel Messiant]])<br />
<br />
==== KERNEL32 ====<br />
* Winnls.h can be included now. ([[Kamil Hornicek]])<br />
* Igor Paliychuk: Fix properly showing genitive names from NLS data by applying a missed Wine sync. ([[Aleksey Bragin]]; {{bug|5556}})<br />
* NtCreateSection should not be called with merely SEC_FILE: this says nothing about what kind of operation should be done (a commit, a reserve, etc?). Use SEC_COMMIT instead to specify correct operation. This works in ReactOS as of now, but would've failed after the NtSection* API rewrite. ([[sir_richard]])<br />
* CreateFileMappingW should also accept/allow SEC_LARGE_PAGES, even if we don't suppport it yet. ([[sir_richard]])<br />
* Revert incorrect changes from 34404 and 40910: RtlSetUserFlagsHeap() doesn't set usual heap flags, it sets special user-settable heap entry flags. With the new heap manager such usage corrupts heap integrity (not to say prototype of this function is incorrect). ([[Aleksey Bragin]])<br />
* RtlReAllocateHeap() is supposed to copy user values and flags so there is no need to set them afterwise again. ([[Aleksey Bragin]])<br />
* Fix a typo in comments. ([[Aleksey Bragin]])<br />
* Print delphi exception with the Exception code 0xeedfade, we were previously only checking for 0xeedface, maybe an older value. ([[Timo Kreuzer]])<br />
* Remove the old version of WaitNamedPipeW. ([[Eric Kohl]])<br />
* This patch fixes the broken wait pipe code. It was written and tested on r49458 because later revisions do not work for me. ([[Eric Kohl]])<br />
* Added real implementation of SetLastError() (instead of forwarding to NTDLL) ([[Pierre Schweitzer]])<br />
* Implemented BaseSetLastNTError() ([[Pierre Schweitzer]])<br />
* Renamed Basep8BitStringToCachedUnicodeString() to Basep8BitStringToStaticUnicodeString() and sightly changed its implementation ([[Pierre Schweitzer]])<br />
* Fixed implementation of LoadLibraryExA() & DisableThreadLibraryCalls() using those changes ([[Pierre Schweitzer]])<br />
* This is matching w2k3 implementation. This is of course a WIP. ([[Pierre Schweitzer]])<br />
* Revert r49761 on Pierre's request ([[Timo Kreuzer]])<br />
* Fix heap corruptions in MoveFileWithProgress ([[Johannes Anderwald]])<br />
* Fixes kernel32_winetest change crash ([[Johannes Anderwald]])<br />
* Introduced in rev 18073 (25.Sept 2005) ([[Johannes Anderwald]])<br />
* ReadDirectoryChangesW: Treat the OVERLAPPED structure as an IO_STATUS_BLOCK, not one of its fields. ([[Roel Messiant]])<br />
<br />
==== LSASRV ====<br />
* Add ServiceInit() stub and call it from lsass. ([[Eric Kohl]])<br />
* Change the calling convention of all LSA-RPC function to stdcall. ([[Eric Kohl]])<br />
* Export some of the LSA-RPC functions. ([[Eric Kohl]])<br />
<br />
==== MSI ====<br />
* Fix freed memory access and fix freeing of invalid pointer. (from http://www.winehq.org/pipermail/wine-patches/2010-October/094849.html ) ([[Aleksey Bragin]]; {{bug|3755}})<br />
<br />
==== MSVCRT ====<br />
* Don't export _matherr ([[Timo Kreuzer]])<br />
* Apply a hack to msvcrt spec file to avoid duplicate definition of atexit. Mingw-w64 has an identical hack. ([[Timo Kreuzer]])<br />
* No reason for wcsxfrm to be a stub when code is here. ([[Sylvain Petreolle]])<br />
<br />
==== NETCFGX ====<br />
* GetPerAdapterInfo requires IP_PER_ADAPTER_INFO struct ([[Johannes Anderwald]])<br />
* Fix reading static dns entries ([[Johannes Anderwald]])<br />
* Delete static name server key, when changing dns servers to automatic (dhcp) ([[Johannes Anderwald]])<br />
* Don't delete DhcpNameServer key yet, as more interaction is needed with dhcp service when changing from static dns to dynamic dhcp ([[Johannes Anderwald]])<br />
* Should finally fix static dns when dhcp is active ([[Johannes Anderwald]])<br />
* Fix case where there is only one static dns server set ([[Johannes Anderwald]])<br />
<br />
==== OLEACC ====<br />
* Use an actual entrypoint. Needed to record the instance handle, used by various function that access resources of the module. Should fix oleacc:main winetest. ([[Roel Messiant]])<br />
<br />
==== RPCRT4 ====<br />
* Add a missing format type to unmarshall_discriminant(). ([[Eric Kohl]])<br />
<br />
==== SETUPAPI ====<br />
* Implement CM_Get_Device_ID_List_ExW(). ([[Eric Kohl]])<br />
* SetupDiClassNameFromGuidExW: Rewrite to prevent a buffer overflow and pass additional winetests. Should fix bug #5474. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExA: Return the required buffer size in failure cases. ([[Roel Messiant]])<br />
* Bind to the PNP service using the Vista-compatible pipe. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExW: Simplify interaction with registry. ([[Roel Messiant]])<br />
* SetupDiCreateDeviceInfoW: Check for correct error value. ([[Roel Messiant]])<br />
* SetupDiGetClassDescriptionExW: Rewrite to return the correct required size and prevent WCHAR sized buffer overflow. ([[Roel Messiant]])<br />
* SetupDiGetClassDevsExW: Return INVALID_HANDLE_VALUE instead of NULL in failure case. ([[Roel Messiant]])<br />
* Implement CMP_WaitServicesAvailable(). ([[Eric Kohl]])<br />
* CM_Get_First_Log_Conf_Ex(): Create a LOG_CONF_INFO struct only if plcLogConf is not NULL. ([[Eric Kohl]])<br />
* Fix a warning. ([[Eric Kohl]])<br />
* Implement CM_Is_Version_Available and CM_Is_Version_Available_Ex. ([[Eric Kohl]])<br />
* Add resource descriptor function stubs. ([[Eric Kohl]])<br />
<br />
==== SHELL32 ====<br />
* Enable code as we support now IOCTL_DISK_GET_LENGTH_INFO ([[Johannes Anderwald]])<br />
* IOCTL_DISK_GET_LENGTH_INFO implemented in 49369 ([[Johannes Anderwald]])<br />
* Implement copy / paste for files when tree view is present ([[Johannes Anderwald]])<br />
* Don't add shortcuts / executables to recent file list ([[Johannes Anderwald]])<br />
* Add NULL checks in IShellView and IDropTarget implementations. Should fix bug #5780. ([[Roel Messiant]])<br />
<br />
==== SHLWAPI ====<br />
* Explicitly add msvcrt before ntdll to use it's *sprintf functions. Fixes bug 5557 ([[Timo Kreuzer]])<br />
<br />
==== SYSSETUP ====<br />
* SC Manager needs SC_MANAGER_ENUMERATE_SERVICE access right to be able to open a service ([[Jérôme Gardou]])<br />
* Add debug prints to help tracking down the "EnableUserModePnpManager()" issue ([[Jérôme Gardou]])<br />
<br />
==== USER32 ====<br />
* Remove the last reactos-only export from user32 (PrivateCsrssManualGuiCheck) ([[Giannis Adamopoulos]])<br />
* One more leftover to add. Now we test for both Local and Global hooks in user32. This will force any message sent to win32k if there are any Global hookers so we loose in performance. We need to rethink our usage of these Global hookers in our code. ([[James Tabor]])<br />
* Fix an over site and copy the return data back to the kernel. ([[James Tabor]])<br />
* Sync up with wine 1.2 rc6 menu so it will pass the tests from rev 47939. ([[James Tabor]])<br />
* Fixed export for PrintWindow and 5609. ([[James Tabor]]; {{bug|5466}})<br />
* Remove a bunch of uneeded code in GetMessage and PeekMessage that copyied the lparam in a new buffer and did unicode to ansi convertions. It is not needed because they don't receive messages with pointers any more ([[Giannis Adamopoulos]])<br />
* Fix all the user32 wine win test_parent_owner tests. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 30 failures dealing with rect size, Class and Title names. ([[James Tabor]])<br />
* Controls: Set fnids for the user client controls. ([[James Tabor]])<br />
* Start creeping in more Left to Right support, readying up for the next wine User32 controls port and test sync. Code is based on wine, credit them for any breakages. 8^P Our positions are off by 103 x 122 in some test cases, anyone having an idea please chime in. ([[James Tabor]])<br />
* Happy New Year! ([[Aleksey Bragin]])<br />
* Dear ReactOS team, you're the best. ([[Aleksey Bragin]])<br />
* Use new wsprintf library, remove old code (536 lines) ([[Timo Kreuzer]])<br />
* Fixes output of %I64, for example dxdiag ([[Timo Kreuzer]])<br />
* Implement sending EVENT_SYSTEM_DIALOGSTART event. It will be used by rosautotest ([[Giannis Adamopoulos]])<br />
* Fix bug in CreateIconIndirect ([[Timo Kreuzer]])<br />
* implement get_icon_size ([[Timo Kreuzer]])<br />
* use unmodified wine code for STATIC_PaintIconfn ([[Timo Kreuzer]])<br />
* Fix CreateIcon and CreateIconIndirect. Fixes user32_winetest:cursoricon. (Yes we execute less tests, but that is correct! wine probably only passes these tests by chance) ([[Timo Kreuzer]])<br />
* TRANSLATION: fix typo in shutdown. ([[Sylvain Petreolle]])<br />
<br />
==== WINHTTP ====<br />
<br />
==== WININET ====<br />
* Add a ROS-specific change that was missed during the last winesync to fix winsock error handling ([[Cameron Gutman]])<br />
* Remove the CP_UNIXCP definition ([[Cameron Gutman]])<br />
* Use WSASetLastError instead of errno in inet_ntop.c ([[Cameron Gutman]])<br />
* Thanks to IRC:igorko for pointing out the bug ([[Cameron Gutman]])<br />
<br />
==== WINMM ====<br />
* MCI_Close: Use UINT instead of UINT16 for the device id (CID 1804). ([[Roel Messiant]])<br />
<br />
==== NMIDEBUG ====<br />
<br />
== DRIVERS ==<br />
<br />
=== BASE ===<br />
* Fix and cleanup some code, and enable NMI support on the boot/install CD as well. ([[sir_richard]])<br />
<br />
==== ACPI ====<br />
<br />
=== BUS ===<br />
* Fix ACPI warnings (Love)<br />
* Based on a (Love)<br />
<br />
==== FASTFAT ====<br />
<br />
=== FILESYSTEMS ===<br />
* Fix for a buffer overflow and then a buffer overrun (if ever it fixes something) ([[Pierre Schweitzer]])<br />
* The way filenames are handled for FAT entries should be REALLY simplified. This would prevent such errors. ([[Pierre Schweitzer]])<br />
* Thus, there are more magic values in fastfat driver than everywhere else in ReactOS which makes proper fixing hard (impossible?). ([[Pierre Schweitzer]])<br />
* Finally, the code for that fix is crappy, but I don't care, it fits the rest of the fastfat driver code. ([[Pierre Schweitzer]])<br />
* pissed off* ([[Pierre Schweitzer]])<br />
* Fixes CID #2502 ([[Pierre Schweitzer]])<br />
* MagicValue--; ([[Pierre Schweitzer]])<br />
* ThanksTo(James, Amine); ([[Pierre Schweitzer]])<br />
* EOF */ ([[Pierre Schweitzer]])<br />
* Remove unused vars ~ ([[Pierre Schweitzer]])<br />
<br />
==== FASTFAT_NEW ====<br />
* Substantially improve FatiCreate routine, to handle previously unhandled cases, fix wrong code structure in some places, add a stub for further implementation of a new file creation branch. ([[Aleksey Bragin]])<br />
* Hackskip setting delay-on-close for a file for now (with a debug print reminder!) ([[Aleksey Bragin]])<br />
* Some fixes to the previous commit. ([[Aleksey Bragin]])<br />
* Don't use same name for a local boolean var and global enum. Spotted by Pierre. ([[Aleksey Bragin]])<br />
<br />
==== NPFS ====<br />
* Rename DEVICE_EXTENSION to NPFS_VCB. ([[Eric Kohl]])<br />
* Add a type variable to distinguish FCBs and CCBs for device, directory or pipe. ([[Eric Kohl]])<br />
* Attach an FCB to the VCB that represents the root directory of the file system and implement an open routine for the root directory. ([[Eric Kohl]])<br />
* Make NpfsWaitPipe work when it is called for the root directory. ([[Eric Kohl]])<br />
* Add an FCB that represents the file system (volume/device) and support absolute and relative open, cleanup and close. ([[Eric Kohl]])<br />
* Read and write IRPs must fail if the caller is not a pipe but a directory or a device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a directory or device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a pipe by the client. ([[Eric Kohl]])<br />
* Enable the driver to open a directory using a relative path name. ([[Eric Kohl]])<br />
* Add NpfsDirectoryControl routine in order to enumerate pipes. ([[Eric Kohl]])<br />
* Use NpfsGetFcb and NpfsGetCcb to retrieve the FCB or CCB and use SEH to protect these routines. ([[Eric Kohl]])<br />
* Add support for FileFullDirectoryInformation and FileBothDirectoryInformation. ([[Eric Kohl]])<br />
* Fix an off-by-one bug in the buffer size calculation. ([[Eric Kohl]])<br />
* Zero-initialize the return buffer. ([[Eric Kohl]])<br />
* Initialize only the required parts of the return buffer. This will enable the driver to return information about multiple pipes in a single request. ([[Eric Kohl]])<br />
* Check if the whole pipe name fits into the return buffer. Return STATUS_BUFFER_OVERFLOW if it does not fit and copy only a part of the file name in this case. ([[Eric Kohl]])<br />
* Return multiple file entries in a single request. ([[Eric Kohl]])<br />
<br />
==== I8042PRT ====<br />
<br />
=== INPUT ===<br />
* Fix potential buffer overflow ([[Johannes Anderwald]])<br />
* Calculate packet type according to PS/2++ spec (CID 1810). ([[Roel Messiant]])<br />
* Fix technical detail in comment to match spec. ([[Roel Messiant]])<br />
<br />
==== KS ====<br />
<br />
=== KSFILTER ===<br />
* Simplify KsTopologyPropertyHandler by using KspReadMediaCategory helper ([[Johannes Anderwald]])<br />
* Return correct status code in case of an overflow ([[Johannes Anderwald]])<br />
* Fix PciFindParentPciFdoExtension bug found by sir_richard "Early break would leave the lock held" ([[evb]])<br />
* Fix PciGetHackFlags for setup found by sir_richard "Setup currently doesn't have a correct registry" ([[evb]])<br />
* Fix DriverEntry for setup like PciGetHackFlags ([[evb]])<br />
* Fix DriverEntry PciOpenKey check found by sir_richard "PciOpenKey returns a BOOLEAN, not an NTSTATUS" ([[evb]])<br />
* Stop call PciGetAcpiTable found by sir_richard "PciGetAcpiTable is really broken, can lead to infinite loops, and also corrupts memory. We need to fix stefan's bugs" ([[evb]])<br />
* Implement not root FDO code in PciScanBus and support PCI_HACK_ONE_CHILD ([[evb]])<br />
* Implement multiple FDO exist code in PciAddDevice so PCI Bridge support now ([[evb]])<br />
* Implement PciAreBusNumbersConfigured for PCI Bridge support ([[evb]])<br />
* Hack FDO Start Device by sir_richard "The root FDO does send boot resources if PCIX is installed properly, this code will be needed" ([[evb]])<br />
* Do PCI_BUS_DRIVER_INTERNAL bugcheck by sir_richard "I have hacked KeBugCheckEx to ignore this for now, until PnP is fixed" ([[evb]])<br />
* Implement not root FDO code in PciInitializeArbiters ([[evb]])<br />
* Implement PciCacheLegacyDeviceRouting, PciFindPdoByLocation used by PciAssignSlotResources ([[evb]])<br />
* Make PciTranslateBusAddress do the stub work ([[evb]])<br />
* PciAssignSlotResources disabled because ReactOS not support IoAssignResources ([[evb]])<br />
* Implement PPBridge_ChangeResourceSettings ([[evb]])<br />
* PCIX driver nearly working now. ([[evb]])<br />
* Fix KSPROPERTY_PIN_CATEGORY handler when no category is provided ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_PIN_NAME handler when there is no name provided. Use fallback pin category. If there is no category provided, fail with correct error code ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_TOPOLOGY_NAME handler by checking if there is a node name provided. If not use node type as fallback. ([[Johannes Anderwald]])<br />
* Return correct error code when property request id is out of bounds ([[Johannes Anderwald]])<br />
* Fix property set support handler for topology nodes ([[Johannes Anderwald]])<br />
* Check if the driver supports a basic support handler. In that case return the basic support handler ([[Johannes Anderwald]])<br />
* Replace all ms portcls hacks by one. ([[Johannes Anderwald]])<br />
* MS Portcls is now working in ReactOS (which is nice for testing audio related bugs) ([[Johannes Anderwald]])<br />
* Fix several bugs in KsProbeStreamIrp ([[Johannes Anderwald]])<br />
* If requestor is KernelMode - just save a pointer in Irp->AssociatedIrp.SystemBuffer (currently not used) ([[Johannes Anderwald]])<br />
* If requestor is UserMode mark irp as buffered. Also set Flag IRP_INPUT_OPERATION when the ioctl is IOCTL_KS_READ_STREAM. This is important to propagate modifications to KSSTREAM_HEADERS (in particular DataUsed member) ([[Johannes Anderwald]])<br />
* ReactOS KS can now be used in WinXP in combination with KSStudio. In order to make it fully work, ks needs to implement software bus functions ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Perform irp completion in dedicated function ([[Johannes Anderwald]])<br />
* Move Software Bus function into own file ([[Johannes Anderwald]])<br />
* Remove debugging code which caused crashes ([[Johannes Anderwald]])<br />
* Partly implement IKsProcessingObject interface for filter ([[Johannes Anderwald]])<br />
* Fix check in FindMatchingCreateItem function ([[Johannes Anderwald]])<br />
* Implement software bus enumerator functions ([[Johannes Anderwald]])<br />
* Less spam, more information ([[Johannes Anderwald]])<br />
* Robert Horvath: Always limit destLen to MAX_PATH (modified to an if condition by me). ([[Aleksey Bragin]]; {{bug|5861}})<br />
* Robert Horvath: Modify GetFullPathName to follow Windows behaviour more closely. Reduces kernel32:path winetests by 4, and fixes all GetFullPathName tests. ([[Aleksey Bragin]]; {{bug|5865}})<br />
* Oleg Baikalow: TDI exported function prototypes are documented in WDK 7, so use them in our driver instead of old, probably NT4-aged stubs full of unknown variables. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't use psdk's tdi.h but use a real tdikrnl.h (adding a _TDI_ global define so it's recognized as a tdi driver itself). ([[Aleksey Bragin]])<br />
<br />
==== SWENUM ====<br />
* Implement SwDispatchPower, SwDispatchPower ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Fix build ([[Johannes Anderwald]])<br />
<br />
=== MULTIMEDIA ===<br />
<br />
==== AUDIO ====<br />
* Add i/o completion routine, which delivers the number of bytes written / read ([[Johannes Anderwald]])<br />
* Close event handle, after the overlapped request has been handled. ([[Johannes Anderwald]])<br />
* Audio stack no longer leaks ~ 50 event handles per second ([[Johannes Anderwald]])<br />
<br />
===== SNDBLST.OLD =====<br />
<br />
==== NDIS ====<br />
<br />
=== NETWORK ===<br />
* Disable timer queuing code (hackfix for various network driver failures) ([[Cameron Gutman]])<br />
* Also needs to be merged into 0.3.12 ([[Cameron Gutman]])<br />
* Add a missing spin lock release in a failure case ([[Cameron Gutman]])<br />
* Fix incomplete copying of NDIS 5.1 miniport characteristics ([[Cameron Gutman]])<br />
* Fix sizeof typo ([[Cameron Gutman]])<br />
* CID 10400 ([[Cameron Gutman]])<br />
<br />
==== TDI ====<br />
* Oleg Baikalow: Implement basic event and delayed event support functions for CTE. Structure names are made up, but their contents should be compatible with what Windows 2003 tdi.sys uses. Formatting and coding style fixes by the committer. ([[Aleksey Bragin]])<br />
* Move CTE routines into corresponding events.c and timer.c source code files before further applying Oleg's patches. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Finish CTE timers. CTE implementation is complete now. ([[Aleksey Bragin]])<br />
* Define M_PI_4 too. ([[Aleksey Bragin]])<br />
<br />
===== CDROM =====<br />
<br />
=== STORAGE ===<br />
<br />
==== CLASS ====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Add Windows Server 2003 DDK Cdrom Sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* They both build and run fine, but PCIIDE(x) must be completed/enabled, and atapi must be rewritten to be WDM-compliant. ([[sir_richard]])<br />
* The previous commit message had a typo, these are the Windows XP DDK Samples, not the Server 2003 DDK samples !!! ([[sir_richard]])<br />
<br />
===== CLASS2 =====<br />
* Switch use from DISK_GEOMETRY to DISK_GEOMETRY_EX. It's needed to handle some Windows 2003's kernel routines. ([[Pierre Schweitzer]])<br />
<br />
==== CLASSPNP ====<br />
* Add Windows Server 2003 DDK ClassPNP sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* Convert to spec ([[Timo Kreuzer]])<br />
* basetsd.h] ([[Timo Kreuzer]])<br />
* add POINTER_SIGNED, POINTER_UNSIGNED, SPOINTER_32, UPOINTER_32 ([[Timo Kreuzer]])<br />
* Fix a typo in the spec file ([[Timo Kreuzer]])<br />
* remove debug prints ([[Johannes Anderwald]])<br />
* dedicated to christoph ([[Johannes Anderwald]])<br />
* Use correct type in sizeof expression (CID 1646 and 10401). ([[Roel Messiant]])<br />
* Simplify signature define (CID 3653 and 3654). ([[Roel Messiant]])<br />
* Remove funky 0xFF characters. ([[Roel Messiant]])<br />
<br />
==== IDE ====<br />
<br />
===== UNIATA =====<br />
* Update uniata to 0.40a1. Prepared by Samuel Serapion, edited by me. ([[Aleksey Bragin]]; {{bug|5762}})<br />
* RTL} ([[Timo Kreuzer]])<br />
* Replace RtlMoveMemory x86 asm code with the code from CRT's memmove, which is better. Now we can close bug #1941 ([[Timo Kreuzer]])<br />
* Marco Radossevich <fwdprojects=at=email=dot=it>, a.k.a. forart: ([[Dmitry Gorbachev]])<br />
* Just two important examples that involved my contributions: UniATA & FullFAT." ([[Dmitry Gorbachev]])<br />
* No code changes. ([[Dmitry Gorbachev]])<br />
* See thread <http://www.reactos.org/forum/viewtopic.php?f=14&t=8809> for more details. ([[Dmitry Gorbachev]])<br />
<br />
==== SCSIPORT ====<br />
* Remove some code duplication and fix a bug of copying the same interrupt information twice for a device with 2 interrupts (instead of the info for interrupt 1 then the info for interrupt 2) effectively making initialization fail because the resource allocation code will detect a conflict with itself ([[Cameron Gutman]])<br />
* Add apitests to reactos.dff ([[Timo Kreuzer]])<br />
* Implement support for 2 interrupts ([[Cameron Gutman]])<br />
* Halfplement support for 2 DMA channels ([[Cameron Gutman]])<br />
* Set/Read the CM_RESOURCE_DMA flags ([[Cameron Gutman]])<br />
* Remove a duplicate spin lock initialization ([[Cameron Gutman]])<br />
* Partially tested with 2 interrupts in use but UniATA seems to be broken because it registers both interrupts for each channel even though they are not sharable which causes it to fail when initializing the secondary IDE channel ([[Cameron Gutman]])<br />
* Fix a couple of typos in the DMA code from my last commit ([[Cameron Gutman]])<br />
* ScsiPortConvertPhysicalAddressToUlong takes an ULONG_PTR as input, fix function accordingly and do the "calculation" directly instead of calling RtlConvertUlongToLargeInteger ([[Timo Kreuzer]])<br />
* Spotted by Samuel. ([[Timo Kreuzer]])<br />
* ScsiPortDeviceControl: Slight improvement to buffer length validation. Return failure status on a handful of failure cases. Prevents buffer overruns in user code. ([[Roel Messiant]])<br />
<br />
=== USB ===<br />
<br />
==== NT4COMPAT ====<br />
<br />
===== USBDRIVER =====<br />
* Fix a bug that resulted in us only copying half of the old keyboard data ([[Cameron Gutman]])<br />
* CID 10402 ([[Cameron Gutman]])<br />
<br />
==== DISPLAYS ====<br />
<br />
=== VIDEO ===<br />
<br />
===== VGA_NEW =====<br />
* avoid buffer overrun, CID 11049 ([[Jérôme Gardou]])<br />
* Brought to light by vicmarcal ([[Jérôme Gardou]])<br />
* Use strlen() istead of sizeof() to get the string length from a pointer. CID 10403. ([[Timo Kreuzer]])<br />
<br />
==== MINIPORT ====<br />
<br />
===== VMX_SVGA =====<br />
* Convert a pointer to a WCHAR string to an array of WCHARs to fix sizeof calculation. CID 10404 ([[Timo Kreuzer]])<br />
<br />
==== VIDEOPRT ====<br />
* Add sanity checks ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Implement VideoPortGetCommonBuffer, VideoPortLockPages ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Yugoslavia no longer exists for some time, replaced by Serbia as successor of country code (phone) ([[Matthias Kupfer]])<br />
* Add parameter checks to DeleteEvent and WaitForSingleObject. ([[sir_richard]])<br />
* Fix WaitForSingleObject. It was waiting on the Object paramter itself -- which is the VideoPrt/ENG Event, not a real object, we have to wait on ->pKEvent instead. ([[sir_richard]])<br />
* Fix WaitForSingleObject round two, it was returning the NT_STATUS, while VideoPrt should return VP_STATUS/Win32 error codes. ([[sir_richard]])<br />
<br />
=== WDM ===<br />
<br />
==== AUDIO ====<br />
<br />
===== BACKPLN =====<br />
<br />
====== PORTCLS ======<br />
* Store Miniport object in the device descriptor ([[Johannes Anderwald]])<br />
* Fixes assert in NVidia NForce Audio Driver ([[Johannes Anderwald]])<br />
* Fix check if the pin can be instantiated another time ([[Johannes Anderwald]])<br />
* Remove hack to close old ([[Johannes Anderwald]])<br />
* Add function FreePin to remove its old reference ([[Johannes Anderwald]])<br />
* Fix memory leaks / reference leaks in WavePci pin implementation ([[Johannes Anderwald]])<br />
* Fix memory / reference leaks in WavePci Close implementation ([[Johannes Anderwald]])<br />
* Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM ([[Johannes Anderwald]])<br />
* Remove silence buffer hack ([[Johannes Anderwald]])<br />
* Stub DRM Property Handler ([[Johannes Anderwald]])<br />
* Before stopping the audio pin, fill the dma buffer with silence samples ([[Johannes Anderwald]])<br />
* create a subdevice descriptor for instantiated pins too ([[Johannes Anderwald]])<br />
* Rewrite the topology filter / pin / node property handling ([[Johannes Anderwald]])<br />
* Store property sets of filter / pins / nodes in a common property set array ([[Johannes Anderwald]])<br />
* Write a common dispatch function, which serves as a trampoline for filter / pin / node property requests ([[Johannes Anderwald]])<br />
* Private property handlers of the drivers are now accessible ([[Johannes Anderwald]])<br />
* Fix multiple bugs in round buffer implementation ([[Johannes Anderwald]])<br />
* Should result in less audio glitches, especially when playing audio files with low sample rates. Please report any regressions! ([[Johannes Anderwald]])<br />
* Fix a comment ([[Timo Kreuzer]])<br />
* Disable driver specific filter / pin / node property handlers until bug leading to crashes has been found ([[Johannes Anderwald]])<br />
* Fix stupid bug which lead to access an invalid buffer. ([[Johannes Anderwald]])<br />
* dedicated to igorko ([[Johannes Anderwald]])<br />
* Do not leak KSSTREAM_HEADER (48 bytes) for each IOCTL_KS_WRITE_STREAM / IOCTL_KS_READ_STREAM request ([[Johannes Anderwald]])<br />
* Audio stack should now leak less memory ([[Johannes Anderwald]])<br />
* Revert 49356 ([[Johannes Anderwald]])<br />
* This change breaks portcls on WinXP ([[Johannes Anderwald]])<br />
* Add MPU-401 Uart miniport driver from DDK 2003 sample ([[Johannes Anderwald]])<br />
* Add license header ([[Johannes Anderwald]])<br />
* Dear lawyers / worried developers, this is the XP DDK Version. ([[Johannes Anderwald]])<br />
* ASM] ([[Timo Kreuzer]])<br />
* Remove superfluous .code64 ([[Timo Kreuzer]])<br />
* Add some macros for MSVC ([[Timo Kreuzer]])<br />
* Portcls does not need to set the size of the audio buffer for completed irps. This is done in a completion callback in wdmaud. Verified with WinXP portcls ([[Johannes Anderwald]])<br />
* Rewrite internal irp queue handling ([[Johannes Anderwald]])<br />
* It now supports multiple KSSTREAM_HEADERs per Irp, variable sized KSSTREAM_HEADERs per irp. ([[Johannes Anderwald]])<br />
* Store the mapped virtual address not in the KSSTREAM_HEADER, as user programs will receive then invalid addresses ([[Johannes Anderwald]])<br />
* Add checks whether this irp is for an sink pin or source pin ([[Johannes Anderwald]])<br />
* Fix multiple bugs when the pin is looped buffer mode (How did this work before?) ([[Johannes Anderwald]])<br />
* ReactOS portcls + WinXP now properly works with audio recording ([[Johannes Anderwald]])<br />
* Merge from the audio branch ([[Johannes Anderwald]])<br />
* Fix node property handler ([[Johannes Anderwald]])<br />
* Take advantage of IPinCount interface ([[Johannes Anderwald]])<br />
* Try fix msvc issues for cmake branch ([[Johannes Anderwald]])<br />
* Fix more msvc issues. ([[Amine Khaldi]])<br />
<br />
== HAL ==<br />
* Fix amd64 build ([[Timo Kreuzer]])<br />
* Implement HalStopProfileInterrupt and add required RTC register and flag definitions. ([[Eric Kohl]])<br />
* Fix build failure from r48863. ([[Eric Kohl]])<br />
* Check that the interrupt line is not 255 ([[Cameron Gutman]])<br />
* Check that the interrupt pin is not 0 ([[Cameron Gutman]])<br />
* Fixes a failed assertion that Caemyr experienced with an ATI Rage graphics card ([[Cameron Gutman]])<br />
* HalpEnableInterruptHandler: Set the IDT_LATCHED flag if the caller requested a latched interrupt ([[Cameron Gutman]])<br />
* Fix a broken loop that resulted in us registering the resources of multiple COM ports as our KD port ([[Cameron Gutman]])<br />
* Fixes bug #5530 ([[Cameron Gutman]])<br />
* Add INIT_FUNCTION where needed. Will save 860KB later. ([[sir_richard]])<br />
* Disable INIT_FUNCTION to see whether it's responsible for Qemu broken status. Some are complaining of unworking trunk since r49463. ([[Pierre Schweitzer]])<br />
* This will be reverted after tests. ([[Pierre Schweitzer]])<br />
* Make directory/buildfiles for OMAP3-specific HAL. Shared between ZOOM2 and Beagle for now. ([[sir_richard]])<br />
* Convert while (TRUE); to ASSERT(FALSE); on unimplemented pathes. ([[Timo Kreuzer]])<br />
<br />
=== CRT ===<br />
<br />
== INCLUDE ==<br />
* Add powf() wrapper ([[Timo Kreuzer]])<br />
* Remove empty file ([[Gregor Schneider]])<br />
* New implementation of all printf functions. It's stream based (like MS one is) rather than buffer based (like our old is). Floating point is not 100% finished, but current implementation is good enough to boot. It can be enabled by a config switch. ([[Timo Kreuzer]])<br />
* Fix build ([[Timo Kreuzer]])<br />
* Fix a bug in streamout(), that could cause a buffer overrun and made msvcrt_winetest crash. ([[Timo Kreuzer]])<br />
* In streamout() handle %%, negative fieldwidth and negative precision. ([[Timo Kreuzer]])<br />
* In streamout(): fix a number of formatting bugs, round floats, fix issue with large unsigned values that were treated as signed, simplify some code. ([[Timo Kreuzer]])<br />
* Define JBLEN and JBTYPE for ARM, based on the Windows ARM CRT source code (public). ([[sir_richard]])<br />
* _assert should use DbgRaiseAssertionFailure which is (a) correct and (b) portable, instead of __debugbreak. ([[sir_richard]])<br />
* Fix typos ([[Timo Kreuzer]])<br />
* Fix another typo ([[Timo Kreuzer]])<br />
* Fix bugs in converted asm file. Fixes Firefox color issues. ([[Timo Kreuzer]])<br />
* rename pow_asm.c to powl.c to reflect it's content. ([[Timo Kreuzer]])<br />
* Update "slightly less than all" IDLs to Wine-1.3.9. (Except for shlobj, shobjidl and shtypes.h, and DirectX stuff). ([[Aleksey Bragin]])<br />
* import MSVCRT_I10_OUTPUT from wine ([[Christoph von Wittich]])<br />
* import strtoi64 from wine 1.3.10 ([[Christoph von Wittich]])<br />
* Add missing _A_VOLID definition. ([[Amine Khaldi]])<br />
* Fix bugs in new printf implementation: use buffer size in _snprintf and check for the right failure return value of streamout_char. ([[Timo Kreuzer]])<br />
* Proper fix for r50248 ;-) ([[Colin Finck]])<br />
* Happy New Year from my side as well! ([[Colin Finck]])<br />
* Improve new printf implementation: ([[Timo Kreuzer]])<br />
* remove duplicated code and implement a generic function for all (v)s(w)(n)printf ([[Timo Kreuzer]])<br />
* don't call _flsbuf for string streams, while this works on windows, it doesn't work correctly on reactos (bug!) ([[Timo Kreuzer]])<br />
* Fix return error codes ([[Timo Kreuzer]])<br />
* Fix several bugs in new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a bug in _ecvt that makes msvcrt_winetest::printf crash ([[Timo Kreuzer]])<br />
* Enable new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a number of errors in floating point output. ([[Timo Kreuzer]])<br />
* fix build ([[Timo Kreuzer]])<br />
* Set errno when a overflow occurs in strtoull ([[Johannes Anderwald]])<br />
* Fixes 2 wine tests failures in msvcrt:string ([[Johannes Anderwald]])<br />
* Fix build ([[Johannes Anderwald]])<br />
* Rewrite broken _flsbuf and implement _flswbuf ([[Timo Kreuzer]])<br />
* use _flswbuf in wstreamout ([[Timo Kreuzer]])<br />
* Fixes broken text output in dwnl etc ([[Timo Kreuzer]])<br />
* Fix build ([[Timo Kreuzer]])<br />
* Fix _flsbuf return value ([[Timo Kreuzer]])<br />
* Improve code readability a bit ([[Timo Kreuzer]])<br />
* Get rid of the old printf code and some unused functions. 3346 lines of code less. ([[Timo Kreuzer]])<br />
* Remove deprecated <if>. ([[Timo Kreuzer]])<br />
* undocuser.h] ([[Giannis Adamopoulos]])<br />
* gather several undocumented definitions for user32 that were defined in several different files, sometimes in the source, sometimes in headers and sometimes defined several times here and there ([[Giannis Adamopoulos]])<br />
* This file should not contain internal user32 definitions but undocumented public definitions ([[Giannis Adamopoulos]])<br />
* fix build ([[Giannis Adamopoulos]])<br />
* fix build ([[Giannis Adamopoulos]])<br />
* Add user32_wsprintf library, with all the wsprintf functions, generated from the same codebase ([[Timo Kreuzer]])<br />
* simplify handling of ll modifier in streamout ([[Timo Kreuzer]])<br />
* Fix miscalculation of number of decimal points to shift for %f format. Should fix shlwapi:string tests and bug 5818. ([[Timo Kreuzer]])<br />
* Fix uninitialized warning ([[Timo Kreuzer]])<br />
* Replace isinf with !_finite and isnan with _isnan ([[Timo Kreuzer]])<br />
* Cleanup math.h from unixism. For now move everything that doesn't belong there into mingw_math.h. ([[Timo Kreuzer]])<br />
* Fix build of wined3d ([[Timo Kreuzer]])<br />
* effects dialog doesn't affect the color scheme (commented out until fixed finally) ([[Matthias Kupfer]])<br />
* save the KeyboardCues value correctly ([[Matthias Kupfer]])<br />
<br />
=== DDK ===<br />
* Add missing classpnp.h ([[Amine Khaldi]])<br />
* classpnp.h: Add FUNCTIONAL_DEVICE_EXTENSION, SET_FLAG, CLEAR_FLAG and TEST_FLAG ([[Amine Khaldi]])<br />
* Add some more missing definitions. ([[Amine Khaldi]])<br />
* Fix a typo and introduce some minor formatting changes. ([[Amine Khaldi]])<br />
* Add missing min and max macros. ([[Amine Khaldi]])<br />
* Add misisng MmLockPagableCodeSection. ([[sir_richard]])<br />
* Fix ClassDebugPrint prototype. ([[Amine Khaldi]])<br />
* Fix RtlStringCbPrintf prototypes. ([[Amine Khaldi]])<br />
* Add dmusprop header ([[Johannes Anderwald]])<br />
* Add IMP_PowerNotify macro to portcls.h ([[Johannes Anderwald]])<br />
* Add IID_IMusicTechnology guid to portcls.h ([[Johannes Anderwald]])<br />
* Add GTI_XXX macros to portcls.h ([[Johannes Anderwald]])<br />
* Remove broken definitions of KSPROPSETID_Synth, KSPROPSETID_Synth_Dls. They are defined in dmusprop.h ([[Johannes Anderwald]])<br />
* Add KSDATARANGE_MUSIC to ksmedia.h ([[Johannes Anderwald]])<br />
* Add KSMUSIC_TECHNOLOGY, KSDATAFORMAT_SUBTYPE_MIDI_BUS, KSAUDFNAME_MIDI, KSNODETYPE_SYNTHESIZER to ksmedia.h ([[Johannes Anderwald]])<br />
* FsRtlRemoveBaseMcbEntry() return is VOID ([[Pierre Schweitzer]])<br />
* Oleg Baikalow: Fix NDIS macros. ([[Aleksey Bragin]])<br />
<br />
=== NDK ===<br />
* Fixed build ([[Pierre Schweitzer]])<br />
* Add MMVAD_SHORT. ([[sir_richard]])<br />
* Fix definition of ARM PTE/PDE structure. ([[sir_richard]])<br />
* Add IMAGE_FILE_MACHINE_NATIVE ([[Timo Kreuzer]])<br />
* Add RTL_TRACE_BLOCK structure definition. ([[Aleksey Bragin]])<br />
<br />
=== PSDK ===<br />
* Add some missing structures in ioevent.h ([[Amine Khaldi]])<br />
* Add some missing IOCTL_* definitions. ([[Amine Khaldi]])<br />
* Add missing ntddmmc.h definitions. ([[Amine Khaldi]])<br />
* Add CDROM_TOC_SESSION_DATA structure. ([[Amine Khaldi]])<br />
* Add missing header's header. ([[Amine Khaldi]])<br />
* Fixed build ([[Pierre Schweitzer]])<br />
* Add missing SEC_XXX definitions for Server 2003 (Vista ones still missing). ([[sir_richard]])<br />
* Add more track popup menu types. ([[James Tabor]])<br />
* Add INET_E_USE_DEFAULT_SETTING definition ([[Cameron Gutman]])<br />
* Add ICONINFOEX* definitions and GetIconInfoEx* declarations from Wine. ([[Aleksey Bragin]])<br />
* Add NOMIRRORBITMAP definition. ([[Aleksey Bragin]])<br />
* Add DecryptFileA/W prototype. ([[Eric Kohl]])<br />
* add TrustedDomainAuthInformationInternal and TrustedDomainFullInformationInternalFix to _TRUSTED_INFORMATION_CLASS. ([[Jérôme Gardou]])<br />
* Fixes build ([[Jérôme Gardou]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* reverts the previous revert, fixed definition of NULL to __null in stddef.h ([[Timo Kreuzer]])<br />
* Don't define __in and __null on c++ build. as long as we keep using host headers, this won't work ([[Timo Kreuzer]])<br />
* Comment out specstrings.h inclusion in windef.h as per Timo's request. ([[Sylvain Petreolle]])<br />
* Fixes build. ([[Sylvain Petreolle]])<br />
* Add missing DbgRaiseAssertionFailure inline to winnt.h header. ([[sir_richard]])<br />
* Oleg Baikalow: Add missing definitions to ipexport.h. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't call TDIEntityID structure and type with the same name. ([[Aleksey Bragin]])<br />
* Bug 5756: TRANSLATION: multiple modules: Bulgarian by CCTAHEB ([[Daniel Reimer]])<br />
* Bug 5761: TRANSLATION: Czech translation update by Radek Liska ([[Daniel Reimer]])<br />
* Fix for Fox Audio Player. Newest Version and leading to a Setup with libmpg ([[Daniel Reimer]])<br />
* Add missing definitions. ([[Aleksey Bragin]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Remove svn:merge info ([[Johannes Anderwald]])<br />
<br />
=== REACTOS ===<br />
<br />
==== LIBS ====<br />
<br />
===== PSEH =====<br />
* Allow configuration of native SEH vs PSEH vs dummy PSEH with macro definitions (USE_NATIVE_SEH, USE_DUMMY_PSEH) ([[Timo Kreuzer]])<br />
<br />
===== CSRSS =====<br />
<br />
==== SUBSYS ====<br />
* Should use MEM_COMMIT | MEM_RESERVE, not just MEM_COMMIT when requesting a range of adress space that wasn't already reserved. This works in ReactOS because, well, no reason to explain why, but it wouldn't work on Windows or with a VAD-based kernel. ([[sir_richard]])<br />
* Initialise PPB to zero. (Roel)<br />
* The change from NtAllocateVirtualMemory to RtlAllocateHeap causes the memory to (Roel)<br />
* be not automatically initialised to zero anymore. (Roel)<br />
* Not every field of the PPB (for which the memory is allocated) gets explicitly (Roel)<br />
* initialised, meaning this results in them having bogus values. (Roel)<br />
* One of the now uninitialised fields is DebugFlags, which results in (Roel)<br />
* DbgBreakPoint being called in NtProcessStartup. Simply ensuring the memory is (Roel)<br />
* zeroed makes it all better again. (Roel)<br />
* Katayama Hirofumi: ([[Sylvain Petreolle]])<br />
* Add / update Japanese translations. ([[Sylvain Petreolle]])<br />
* Fix typos in calc en-US resource. ([[Sylvain Petreolle]])<br />
* Bug #5673,5674,5675,5676. ([[Sylvain Petreolle]])<br />
<br />
==== WIN32K ====<br />
* Coding for PrintWindow support for bug 5609. This does not fix the export, which should be a direct call to win32k. ([[James Tabor]])<br />
* Cleanup UserSetCursorPos ([[Giannis Adamopoulos]])<br />
* UserSetCursorPos: set the new position after sending WM_MOUSEMOVE message ([[Giannis Adamopoulos]])<br />
* now we pass all tests for SetCursorPos ([[Giannis Adamopoulos]])<br />
* fix GeoID bug (forgotten \0) ([[Matthias Kupfer]])<br />
* clean up EXLATEOBJ before error path in NtGdiBitBlt ([[Jérôme Gardou]])<br />
* Implement win32k support functions for Get and Set process default layout. ([[James Tabor]])<br />
* Due to changes with wine it will be difficult to sync when RTL support is being added to ComCtl32. ([[James Tabor]])<br />
* Fix future wine sync user32 win test for get process default layout with null parameter. ([[James Tabor]])<br />
* Return the correct complexity, pass all user32 wine test_winregion tests. ([[James Tabor]])<br />
* PSDK ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Edison Henrique Andreassy <ehasis@hotmail.com>: Add FILEMUIINFO definition. ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Fixed ValidateTimerCallback, always returning true and just spinning in the loop. ([[James Tabor]])<br />
* Add one more process information flag with a point type and capturing the hit test in desktop structure. ([[James Tabor]])<br />
* Reduce duplicated code in co_UserCreateWindowEx, co_IntSetParent and co_WinPosSetWindowPos ([[Giannis Adamopoulos]])<br />
* based on wine ([[Giannis Adamopoulos]])<br />
* Don't place new windows with default position at the top left corner of the screen ([[Giannis Adamopoulos]]; {{bug|5484}})<br />
* Send WM_PARENTNOTIFY message when a window is destroyed ([[Giannis Adamopoulos]])<br />
* co_UserDestroyWindow: Send WM_PARENTNOTIFY message in correct order ([[Giannis Adamopoulos]])<br />
* Roel Messiant: Return correct address in the user heap commit routine. Should fix boot with the new heap manager. ([[Aleksey Bragin]])<br />
* Fix an ancient FIXME in PATH_PathToRegion ([[Giannis Adamopoulos]])<br />
* Move checks for active hooks in co_HOOK_CallHooks ([[Giannis Adamopoulos]])<br />
* Remove the FreeLParam 'feature' from win32k. This hack allowed us to post messages that contain pointers. However we don't do it anymore so we can also remove this as well ([[Giannis Adamopoulos]])<br />
* Add keyboard messages to the list with Hardware messages and not in the list with post messages ([[Giannis Adamopoulos]])<br />
* Disable checking if a hook is active. It is safe to disable it for now because it is just an optimization. If we try to call a hook when it is not active, it will fail anyway when it tries to find the hook. Fixes calling low level hooks ([[Giannis Adamopoulos]])<br />
* When we try to call a hook with null hook proc will cause a crash in user32. Add an assertion in win32k in order to catch the problem a bit earlier ([[Giannis Adamopoulos]])<br />
* Clean up co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* Renove some unneccessary casts ([[Timo Kreuzer]])<br />
* Fix an exception when set condition * first always is used then moving the mouse. There seems to be an initialization issue (The Init Bug) and not setting a desktop. ([[James Tabor]])<br />
* Fix typos found by Mephisto on IRC, also add some debug prints in SetWindowsHookEx to see what hooks are installed. ([[James Tabor]])<br />
* Do not override WH_JOURNALPLAYBACK results if zero. ([[James Tabor]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereferences. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Improve the code to enumerate monitors. ([[Timo Kreuzer]])<br />
* Don't use custom MIN / MAX / ABS macros ([[Timo Kreuzer]])<br />
* Calculate distance by r^2 = x^2 + y^2 ([[Timo Kreuzer]])<br />
* Use RECTL_bIntersectRect instead of code duplication ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference ([[Timo Kreuzer]])<br />
* pass bottom-right exclusive rect to IntGetMonitorsFromRect from NtUserMonitorFromPoint ([[Timo Kreuzer]])<br />
* Don't handle MONITOR_DEFAULTTOPRIMARY and MONITOR_DEFAULTTONEAREST twice ([[Timo Kreuzer]])<br />
* Use unsigned variables for unsigned values ([[Timo Kreuzer]])<br />
* Don't check the result of a UINT returning function for < 0 ([[Timo Kreuzer]])<br />
* Improve readability ([[Timo Kreuzer]])<br />
* message.c: ([[Giannis Adamopoulos]])<br />
* Don't use RETURN macro ([[Giannis Adamopoulos]])<br />
* Correctly use SEH. Use _SEH2_YIELD ([[Giannis Adamopoulos]])<br />
* Roel Messiant: ([[Aleksey Bragin]])<br />
* Heap corruption fixes. ([[Aleksey Bragin]])<br />
* remove rtl dependency ([[Johannes Anderwald]])<br />
* thanks to mephisto! ([[Johannes Anderwald]])<br />
* Fix mdl probe access rights ([[Johannes Anderwald]])<br />
* Fix possible use of uninitialized variable. Spotted by Amine. ([[Timo Kreuzer]])<br />
* Remove obsolete code ([[Johannes Anderwald]])<br />
* Thanks to Amine ([[Johannes Anderwald]])<br />
* Fix a bug in InitVideo: when looping through the adapters, reinitialize the cbValue before querying the registry. ([[Timo Kreuzer]])<br />
* Also handle failure. ([[Timo Kreuzer]])<br />
* Lock thread when removing hooks. ([[James Tabor]])<br />
* Track end of life thread when removing hooks. ([[James Tabor]])<br />
* Disable GDI_DEBUG. It's using > 20 MB memory. Too much for some people ;-) ([[Timo Kreuzer]])<br />
* Change all Init functions to be NTAPI instead of FASTCALL, return NTSTATUS, and be an INIT_FUNCTION (saving incredible 2k). Simplify the initialization sequence by using a simple macro. Delete a comment that is not true anymore. ([[Timo Kreuzer]])<br />
* Move some globals to appropriate file. ([[Timo Kreuzer]])<br />
* Make InitVideo return NTSTATUS and properly handle failure ([[Timo Kreuzer]])<br />
* Silence a DPRINT, improve a DPRINT ([[Timo Kreuzer]])<br />
* Turn off debug prints. ([[James Tabor]])<br />
* Fixed WaitForInputIdle, finally!, passed all the wine tests for it. ([[James Tabor]])<br />
* Moved Get/Peek message to the new all in one support routine. ([[James Tabor]])<br />
* Foreground hook hits one out of five, this needs more research. ([[James Tabor]])<br />
* Attempted to workout synchronizing issues with low level and regular hooks. ([[James Tabor]])<br />
* Simplify co_IntPeekMessage even more ([[Giannis Adamopoulos]])<br />
* Rename MsqInsertSystemMessage to MsqInsertMouseMessage ([[Giannis Adamopoulos]])<br />
* Bug 5726: PATCH: regedit: Language File skeleton strings (geekdundee<A_T>gmail.com) ([[Daniel Reimer]])<br />
* Bug 5735: PATCH: updated slovak translations by Mario Kacmar ([[Daniel Reimer]])<br />
* Bug 5740: TRANSLATION: rapps: polish (wojtekkozlo664<A_T>op.pl) ([[Daniel Reimer]])<br />
* Updated the Rapps Versions, too. ([[Daniel Reimer]])<br />
* Fix hooks, do not cleanup hooks when any window from the same thread is destroyed. ([[James Tabor]])<br />
* Tweaks to hook and event timeouts. Increase performance with DOSBox when using mouse and keyboard. ([[James Tabor]])<br />
* Some more cleanup ([[Giannis Adamopoulos]])<br />
* Test for hooks before setting up for a hook call. This eliminates overhead. ([[James Tabor]])<br />
* Fix style, use client style. ([[James Tabor]])<br />
* Fix one of the greatest hacks in message handling: do not wake up every message queue when there is mouse or keyboard input ( wake only the thread that must take input) ([[Giannis Adamopoulos]])<br />
* rewrite co_WinPosWindowFromPoint, co_MsqInsertMouseMessage and co_MsqPeekHardwareMessage ([[Giannis Adamopoulos]])<br />
* port co_IntProcessMouseMessage and MsqSendParentNotify from wine ([[Giannis Adamopoulos]])<br />
* call co_IntProcessHardwareMessage from co_MsqPeekHardwareMessage, and not from co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* move co_IntProcessHardwareMessage, co_IntProcessKeyboardMessage and co_IntProcessMouseMessage to msgqueue.c ([[Giannis Adamopoulos]])<br />
* Apply workaround for POINT / POINTL, like for the others ([[Timo Kreuzer]])<br />
* Restore capturing the hit test in the desktop structure. Move journal record hook before sending the mouse hook. ([[James Tabor]])<br />
* revert r49718 ([[Timo Kreuzer]])<br />
* Remove some unused functions ([[Giannis Adamopoulos]])<br />
* move several user stubs in ntstubs.c ([[Giannis Adamopoulos]])<br />
* More fixes to In Send and Reply message support. ([[James Tabor]])<br />
* More fixes to In Send message support. One more case fixed in looping back. ([[James Tabor]])<br />
* Amend to r41772. Allow PostMessage to handle DDE messages ([[Giannis Adamopoulos]])<br />
* In FNID_SENDMESSAGECALLBACK use SEH before accesing the user-mode buffer ([[Giannis Adamopoulos]])<br />
* Merge r49994 and r49995 from reactx branch ([[Timo Kreuzer]])<br />
* Use the new version of NtUserGetMessage and NtUserPeekMessage written by Jim. It is possible to use them now because GetMessage and PeekMessage don't return messages that contain pointers. As a result they don't need to do any extra work to copy the message to user mode. All messages that contain pointers are sent messages and this means that they don't get into the message loop. Instead they are passed directly to the window proc. ([[Giannis Adamopoulos]])<br />
* DispatchMessage works only if the target window belongs to the current thread. This lets us remove uneeded copies of lparam to user mode. ([[Giannis Adamopoulos]])<br />
* Remove an unneeded debug message ([[Giannis Adamopoulos]])<br />
* remove some more unnecessary debug output ([[Giannis Adamopoulos]])<br />
* Silence 3 DPRINTs ([[Timo Kreuzer]])<br />
* NtGdiGetDIBitsInternal: Copy the requested amount of scanlines into the return buffer, not the whole bitmap. Should fix bug #5766. ([[Roel Messiant]])<br />
* Remove co_IntPostOrSendMessage and use co_IntSendMessageNoWait where possible ([[Giannis Adamopoulos]])<br />
* Improve "not enough memory" check when creating a bitmap ([[Jérôme Gardou]])<br />
* use correct function to set the last error. ([[Jérôme Gardou]])<br />
* Make sure to initialize our page operation mutex. ([[Art Yerkes]])<br />
* Scan the whole range of the MemoryArea for pages to evict. ([[Art Yerkes]])<br />
* This fixes cache section page eviction. ([[Art Yerkes]])<br />
* IntCreateWindow: Fill out MaximumLength field of the window name. Fixes potential buffer overflow in at least NtUserDefSetText. ([[Roel Messiant]])<br />
* Fix EngGetLastError and EngSetLastError ([[Timo Kreuzer]])<br />
* Remove SetLastWin32Error and use EngSetLastError instead ([[Timo Kreuzer]])<br />
* Fixes bug 5792 and Get/PeekMessage tests. I noticed co_IntPostOrSendMessage to co_IntSendMessageNoWait changes when it should have been changed to co_IntSendMessage. Same as co_IntSendMessage to co_IntSendMessageNoWait when it should have not changed.... I'm sorting it out. ATM win test locks up and the system shutdown box is not present only the text message. ([[James Tabor]])<br />
* Use SendNotifyMessage for broadcasting these messages and SendMessageNoWait when not broadcasting. ([[James Tabor]])<br />
* Fix all the user32 wine win test_CreateWindow tests. ([[James Tabor]])<br />
* Fix all the user32 wine win test_enum_thread_windows tests. ([[James Tabor]])<br />
* Update note after 50205. ([[James Tabor]])<br />
* NtUserSetWindowFNID, sets user client side window function Ids, expands to ghost. ([[James Tabor]])<br />
* Allocate/free GRE events directly from pool, instead of using Eng APIs. Use documented tag for GRE Events (Dfsm), found in pooltag.txt ([[sir_richard]])<br />
* Implement EngMapEvent and EngUnmapEvent. ([[sir_richard]])<br />
* Improve LDEVOBJ_bLoadImage, use ExportSectionPointer from the GdiDriverInfo structure instead of calling RtlImageDirectoryEntryToData ([[Timo Kreuzer]])<br />
* Implement NtGdiGetBoundsRect and NtGdiSetBoundsRect. (Samuel)<br />
* Access the DC member directly instead of using IntGdiGetDCOrg ([[Timo Kreuzer]])<br />
* Remove unused IntGdiGetDCOrg, GdiSetDCOrg, GdiGetDCOrgEx ([[Timo Kreuzer]])<br />
* Simplify error checks, by reordering code in NtGdiScaleViewportExtEx ([[Timo Kreuzer]])<br />
* Simplify exception handling, use _SEH2_YIELD ([[Timo Kreuzer]])<br />
* Change function order ([[Timo Kreuzer]])<br />
* Minor code improvements ([[Timo Kreuzer]])<br />
* Fix type of DCLEVEL::prgnClip / prgnMeta (PVOID -> PREGION) ([[Timo Kreuzer]])<br />
* Move NtGdiGetRandomRgn to dcobjs.c ([[Timo Kreuzer]])<br />
* TRANSLATION: Fix browseui bulgarian resource filename. ([[Sylvain Petreolle]])<br />
* Fix a bug in FLOATOBJ_DivLong ([[Timo Kreuzer]])<br />
* Use if, instead of switch to handle flags in XFORMOBJ_bXformFixPoints ([[Timo Kreuzer]])<br />
* Define XFORMOBJ to EXFORMOBJ, a stack object that links to the matrix ([[Timo Kreuzer]])<br />
* There is no spoon. ([[Timo Kreuzer]])<br />
* Improve NtGdiStretchDIBitsInternal, use _SEH2_YIELT instead of saving an NTSTATUS and handle the fast path in place instead of setting a BOOL variable. Fixes warnings about uninitialized variables. ([[Timo Kreuzer]])<br />
* In BitmapFormat, allow intermediate bpp values, use ULONG as parameter type, instead of WORD and DWORD ([[Timo Kreuzer]])<br />
* In NtGdiCreateBitmap get the real bpp value from the gajBitsPerFormat array ([[Timo Kreuzer]])<br />
* Add back check of too large nWidth (needed to make sure, cjWidthBytes didn't overflow) ([[Timo Kreuzer]])<br />
* Merge all parameter checks ([[Timo Kreuzer]])<br />
* Check cPlanes and cBitsPixel paramters explicitly ([[Timo Kreuzer]])<br />
* Use GreCreateBitmapEx ([[Timo Kreuzer]])<br />
* Remove BITMAP_GetRealBitsPixel ([[Timo Kreuzer]])<br />
* In GreCreateBitmapEx handle allocation failure in the rle hack path and set LastError, when failed to allocate bitmap bits. ([[Timo Kreuzer]])<br />
* Cleanup pooltags a little, use official tags where known and applicable. ([[Timo Kreuzer]])<br />
* Fix use of XFORMOBJ. Should fix gdi32_winetest clipping regression and release breakage. ([[Timo Kreuzer]])<br />
* Win32k implementation of GetCharacterPlacementW, work is dedicated to the late Professor John Collins. ([[James Tabor]])<br />
* Implement NtGdiCreateMetafileDC. ([[James Tabor]])<br />
* Since most of the gdi work I committed is being reverted or if'ed out of existence, this will be the last. ([[James Tabor]])<br />
* Remove debugging code. ([[Timo Kreuzer]])<br />
* Don't trat BI_BITFIELDS as compressed format in DIB_CreateDIBSection. Fixes KSStudio. Why it was introduced by r48359? I don't know. It was broken before. I refrain from making any more comments about that piece of ... code. ([[Timo Kreuzer]]; {{bug|5781}})<br />
* Don't leak the memory for DIB sections. we set BMF_DONT_FREE in SURFACE_bSetBitmapBits, when the caller provides bits. This needs to be reconsidered. ([[Timo Kreuzer]])<br />
* In UserSetCursor, return a pointer to the old cursor, not the handle ([[Timo Kreuzer]]; {{bug|5722}})<br />
* really delete the pointer shape when NULL cursor is set, instead of just hiding it. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Move reference handling completely to NtUserSetCursor ([[Timo Kreuzer]]; {{bug|5722}})<br />
* In UserChangeDisplaySettings, set NULL cursor before change and restore old cursor after change to make sure we have the right color format. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Reset monitor size after mode switch. (rafalh; {{bug|5727}})<br />
* Go back to hiding the cursor with GreMovePointer, instead of setting NULL bitmaps. While MSDN states that psoColor and psoMask can both be NULL in DrvSetPointerShape, it doesn't explicitly say anything about both being NULL at the same time. VBox driver doesn't expect that and will crash, so most likely windows doesn't do this. ([[Timo Kreuzer]])<br />
* Set correct error value on failure in NtUserSetCursor. (Victor)<br />
* Portability bugfixes ([[Thomas Bluemel]])<br />
* Create a security descriptor for the desktops rather than passing the ACLs in as a security descriptor ([[Thomas Bluemel]])<br />
* Fix draw of cursors in static controls ([[Matthias Kupfer]])<br />
* Last part of fix for bug #4874 ([[Matthias Kupfer]])<br />
* Implement GetClassLongPtrA/W ([[Thomas Bluemel]])<br />
* Fix replaced by more flexible code for arbitrary cursor sizes ([[Matthias Kupfer]])<br />
* Fix crash with standalone win test_hind_message test. ([[James Tabor]])<br />
* Fix buggy mechanism of pushing and popping free gdi handle slots. The old mechanism unneccessarily locked the entry and it was prone to the ABA problem as it didn't use a sequence number. ([[Timo Kreuzer]])<br />
* Fix a bug in calculation of the background color for 32bpp -> 1bpp color translations. ([[Timo Kreuzer]])<br />
* Fixes bug 2372 ([[Timo Kreuzer]])<br />
* add missing file ([[Timo Kreuzer]])<br />
* Add GetTransform declaration. (until we have undocgdi.h). ([[Aleksey Bragin]])<br />
* Enable simple FontSmoothing by default. It matters for arwinss, trunk just ignores this value and always smoothes the fonts. ([[Aleksey Bragin]])<br />
* Robert Horvath: LocalUnlock has to be different from GlobalUnlock. The subtle difference between LocalUnlock and GlobalUnlock, is, that the former will return FALSE and set ERROR_NOT_LOCKED on LMEM_FIXED allocations. Fixes 1 kernel32:heap failure. ([[Aleksey Bragin]]; {{bug|5869}})<br />
* Robert Horvath: Add GlobalFlag entry in hivesys_{arch}.inf with the default value 0x0. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Add a missing ORing of the registry-loaded GlobalFlags value in ExpInitializeExecutive. Thanks to Robert Horvath for spotting the issue. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Merge all amd64 related changes from cmake branch ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 1 ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 2 ([[Timo Kreuzer]])<br />
* fix taskmgr build ([[Timo Kreuzer]])<br />
* Fix build of shlwapi ([[Timo Kreuzer]])<br />
* Edijs: Properly load window size and position. ([[Aleksey Bragin]]; {{bug|5872}})<br />
* Merge CRT changes from cmake branch (mainly MSVC compilation fixes) ([[Timo Kreuzer]])<br />
* Handle BITMAPV4HEADER and BITMAPV5HEADER, when creating a DIB palette. Detect PAL_RGB like done with PAL_BGR in PALETTE_AllocPalette (optimization). ([[Timo Kreuzer]])<br />
* Fixes pink icons. ([[Timo Kreuzer]])<br />
* Remove some artifact from ARM build. ([[Pierre Schweitzer]])<br />
* Would it fix build? ([[Pierre Schweitzer]])<br />
* Fix initialization of XLATEOBJ, when source and dest format are equal. (Thomas; {{bug|5828}})<br />
* Remove gexloTrivial, it was never used ([[Timo Kreuzer]])<br />
* Remove EXLATEOBJ_vInitTrivial and move the code into EXLATEOBJ_vInitialize ([[Timo Kreuzer]])<br />
* Properly set XO_TABLE ([[Timo Kreuzer]])<br />
* Set ppalDstDc in EXLATEOBJ_vInitXlateFromDCs ([[Timo Kreuzer]])<br />
<br />
=== 3RDPARTY ===<br />
<br />
== LIB ==<br />
==== FREETYPE ====<br />
===== INCLUDE =====<br />
====== FREETYPE ======<br />
======= CONFIG =======<br />
* Instead of having 4 template rbuild configuration files that must be kept in-sync, maybe there should be a generic one that they all inherit from? ([[sir_richard]])<br />
* Add new property settings that exist in x86, but not ARM because nobody added them there. For example, nor cc, nor cache were being built on ARM, because NEWCC was undefined (which isn't treated as 0 by rbuild). ([[sir_richard]])<br />
* How I long for CMAKE. ([[sir_richard]])<br />
<br />
======= DATA =======<br />
<br />
======== XML ========<br />
<br />
===== ICU =====<br />
<br />
====== SOURCE ======<br />
<br />
==== ICU4ROS ====<br />
* Silence a warning on MSVC ([[Timo Kreuzer]])<br />
<br />
==== MINGW ====<br />
* Don't compile atonexit.c. atexit is exported from msvcrt. ([[Timo Kreuzer]])<br />
* Revert r50267 ([[Timo Kreuzer]])<br />
<br />
==== SOUND ====<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
* Getting device capabilities requires the unicode version of the structure ([[Johannes Anderwald]])<br />
* Implement MIDM_OPEN, MIDM_CLOSE, MIDM_START, MIDM_STOP ([[Johannes Anderwald]])<br />
* Implement MODM_OPEN, MODM_CLOSE ([[Johannes Anderwald]])<br />
* Refactor MmeOpenWaveDevice into MmeOpenDevice add add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Refactor MmeCloseWaveDeivce into MmeCloseDevice and add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Handle mixers identified by id, not by handle ([[Johannes Anderwald]])<br />
* Fix opening of mixer devices ([[Johannes Anderwald]])<br />
* Waveformat struct is only provided when type is wave device ([[Johannes Anderwald]])<br />
* Implement wave reset routine, fixes audio recording on ReactOS SndRec, AudaCity etc. Also fixes random hang in WinAmp when skipping audio bytes ([[Johannes Anderwald]])<br />
* Implement wave pausing / restarting, should lead to smoother playback ([[Johannes Anderwald]])<br />
<br />
===== MMIXER =====<br />
* Rewrite topology node enumeration algorithm ([[Johannes Anderwald]])<br />
* Old algorithm didnt properly take in account sum/mux nodes, may assign nodes to multiple lines and was not able to detect circuits which may lead to infinite loops ([[Johannes Anderwald]])<br />
* New algorithm properly partitions the nodes and also checks if nodes has already been assigned. As a plus, it is also faster ([[Johannes Anderwald]])<br />
* Algorithm based on msdn http://msdn.microsoft.com/en-us/library/ff538873(v=VS.85).aspx ([[Johannes Anderwald]])<br />
* Tested on VBox 3.28 (AC97) ([[Johannes Anderwald]])<br />
* Please retest supported soundcards for regressions ([[Johannes Anderwald]])<br />
* Implement support routines which get called when a topology node changes its state ([[Johannes Anderwald]])<br />
* Volume changes / mute on/off changes should now be broadcasted again to all listening applications ([[Johannes Anderwald]])<br />
* Add support for topologies where pins directly connect to other pins without nodes in between ([[Johannes Anderwald]])<br />
* Check if the topology contains node. Fixes assert hit in VmWare Player(sound is not working) ([[Johannes Anderwald]])<br />
* Thanks to Caemyr for testing ([[Johannes Anderwald]])<br />
* Disable assert for now ([[Johannes Anderwald]])<br />
* Amendment to rev. 49167 requested by Caemyr. ([[Kamil Hornicek]])<br />
* Apply a hack to filter out pins, which are not part of filter node processing path ([[Johannes Anderwald]])<br />
* The hack filters out all pins which have a physical connection. Ideally the code should check if the pin is part of a different rendering path and in that case remove the pin. ([[Johannes Anderwald]])<br />
* Revert 49167 ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Kernel streaming pins need to transit states from Run -> Pause -> Acquire -> Stop. ([[Johannes Anderwald]])<br />
* Fixes SB Live playback hang on last tone when stopping playback ([[Johannes Anderwald]])<br />
* Enumerate MIDI devices and provide all necessary functions to deal with them ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Tons of fixes to enumeration of mixerlines, controls / etc ([[Johannes Anderwald]])<br />
* Fix mixer event notification callbacks ([[Johannes Anderwald]])<br />
* For more info, read audio-bringup log ([[Johannes Anderwald]])<br />
<br />
=== LSALIB ===<br />
* Fix compiler warnings for AMD64 build. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
* Fix PCI group key ([[Johannes Anderwald]])<br />
<br />
== NTOSKRNL ==<br />
* IoRegisterPlugPlayNotification: Do not fail if no Interface can be found for the given GUID. Just do not call the Callback-Routine in this case. The Interface could be created later. ([[Eric Kohl]])<br />
* disable some locale IDs because they are not supported yet ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 417 Rhaeto-Romanic ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 445 Bengali (India) ([[Matthias Kupfer]]; {{bug|5636}})<br />
* or still unknown ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 48f ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 490 ([[Matthias Kupfer]]; {{bug|5636}})<br />
* this fixes multiple entries () ([[Matthias Kupfer]]; {{bug|5636}})<br />
* Implement NtQueryOpenSubKeys. ([[Eric Kohl]])<br />
* Add amd64 versions of MI_MAKE_PROTOTYPE_PTE and MiProtoPteToPte ([[Timo Kreuzer]])<br />
* Remove outdated external declarations ([[Timo Kreuzer]])<br />
* disable deprecated amd64 code ([[Timo Kreuzer]])<br />
* use MiFillSystemPageDirectory only for 2 paging levels ([[Timo Kreuzer]])<br />
* Fixes amd64 build ([[Timo Kreuzer]])<br />
* remove svn:merginfo ([[Timo Kreuzer]])<br />
* Alternative workaround for pentium lock errata: Instead of burdening the page fault handler, just mark the IDT page as Write-Through if the bug is present. According to http://www.rcollins.org/Errata/Dec97/F00FBug.html it shall prevent the lock up. Please test. Dedicated to elhoir. ([[Timo Kreuzer]])<br />
* Fix ARC names accordingly ([[Pierre Schweitzer]])<br />
* Fix indentation. No code changes. ([[Eric Kohl]])<br />
* Don't ignore IopCreateArcNames() return while booting. ([[Pierre Schweitzer]])<br />
* At the moment, it's just returning STATUS_SUCCES but it will be changed later. ([[Pierre Schweitzer]])<br />
* Fixed a FIXME in ARC names by implementing IopStoreSystemPartitionInformation(). This make ReactOS writing boot paths to registry. ([[Pierre Schweitzer]])<br />
* On boot, while loading drivers, make starting Loader Block available to the whole kernel to let drivers calling on-boot functions that may need it. ([[Pierre Schweitzer]])<br />
* One of them will be implemented later. ([[Pierre Schweitzer]])<br />
* Implement SeImpersonateClientEx() and simplify SeImpersonateClient(). ([[Eric Kohl]])<br />
* Replace \" with "" in resource files. This makes CMAKE build way more silent. Needs to be merged. ([[Daniel Reimer]])<br />
* TBD find a way to silent warnings happening due to \n in strings. ([[Daniel Reimer]])<br />
* Implemented FstubAllocateDiskInformation(), FstubDbgGuidToString(), FstubDbgPrintDriveLayoutEx(), FstubDbgPrintPartitionEx(), FstubDetectPartitionStyle(), FstubFreeDiskInformation(), FstubGetDiskGeometry(), FstubReadPartitionTableMBR(), FstubReadSector() ([[Pierre Schweitzer]])<br />
* Stubbed FstubReadPartitionTableEFI() ([[Pierre Schweitzer]])<br />
* This leads to a correct & working implementation of IoReadPartitionTableEx(). As this state, it only handles MBR partition tables as EFI/GPT as been stubbed out. ([[Pierre Schweitzer]])<br />
* EFI/GPT support will come later. ([[Pierre Schweitzer]])<br />
* Implemented IopFetchConfigurationInformation(), IopCreateArcNamesCd(), IopCreateArcNamesDisk(), IopVerifyDiskSignature() ([[Pierre Schweitzer]])<br />
* Removed IopApplyRosCdromArcHack(), IopGetDiskInformation(), IopAssignArcNamesToCdrom() ([[Pierre Schweitzer]])<br />
* Finally, rewritten IopCreateArcNames() ([[Pierre Schweitzer]])<br />
* To make it short, this is the rewrite of ARC names handling in the kernel. ([[Pierre Schweitzer]])<br />
* This brings our kernel to a higher state of existence. Indeed, it's leaving NT4 design for a proper NT5.2 design, with less hacks, less ROS specific stuff and such. ([[Pierre Schweitzer]])<br />
* This code handles the mount manager we don't have yet. ([[Pierre Schweitzer]])<br />
* Implemented FstubAdjustPartitionCount(), FstubConvertExtendedToLayout(), FstubCopyEntryEFI(), FstubCreateDiskMBR(), FstubCreateDiskEFI(), FstubCreateDiskRaw(), FstubDbgPrintSetPartitionEx(), FstubReadHeaderEFI(), FstubReadPartitionTableEFI(), FstubSetPartitionInformationEFI(), FstubVerifyPartitionTableEFI(), FstubWriteBootSectorEFI(), FstubWriteEntryEFI(), FstubWriteHeaderEFI(), FstubWritePartitionTableEFI(), FstubWritePartitionTableMBR(), FstubWriteSector() ([[Pierre Schweitzer]])<br />
* Implemented IoCreateDisk(), IoGetBootDiskInformation(), IoReadDiskSignature(), IoSetPartitionInformationEx(), IoVerifyPartitionTable(), IoWritePartitionTableEx() ([[Pierre Schweitzer]])<br />
* To sum up, this commit finishes FSTUB API implementation in the ReactOS kernel. This means one important thing: now ReactOS kernel knows about a bit about EFI and about GPT. No need to say that it's the first step into EFI support. But a lot more work is needed. Especially since the kernel is the only real entity in ReactOS to handle GPT. All the rest of the OS doesn't know anything about GPT. ([[Pierre Schweitzer]])<br />
* A small note about FstubVerifyPartitionTableEFI(). This function is supposed to check whether a disk formated with GPT is valid, and if it's not, to fix it. First step is implemented. Second step isn't yet supported. ([[Pierre Schweitzer]])<br />
* A general note about all that stuff: on GPT, backup table isn't properly handled for the moment, as ReactOS is experiencing disk geometry issues. That means it's not having the proper disk sectors count and then, can't find the backup table (which is located on last disk sector). ([[Pierre Schweitzer]])<br />
* References: ([[Pierre Schweitzer]])<br />
* http://www.intel.com/technology/efi/ ([[Pierre Schweitzer]])<br />
* http://developer.apple.com/library/mac/#technotes/tn2006/tn2166.html ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.h;hb=HEAD ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.c;hb=HEAD ([[Pierre Schweitzer]])<br />
* Rewrite the resource map code to fix a regression, several failures cases, and a few memory leaks ([[Cameron Gutman]])<br />
* Remove an incorrect definition of IopDetectResourceConflict in pnpreport.c (no idea how this didn't trigger an onslaught of warnings) ([[Cameron Gutman]])<br />
* Partially implement IoAssignResources so that it creates a non-conflicting resource list from the requirements but it doesn't claim the resources for the device in the registry ([[Cameron Gutman]])<br />
* Partially implement IoReportResourceUsage so that it checks the resource list for conflicts but doesn't claim the resources in the registry ([[Cameron Gutman]])<br />
* Please test this revision with a variety of hardware and drivers because it activates several code paths in the PnP manager ([[Cameron Gutman]])<br />
* If this causes problems, look for "Denying an attempt to claim resources currently in use by another device!" in the debug log and report the bug to me ([[Cameron Gutman]])<br />
* Fix a critical bug in the conflict detection code ([[Cameron Gutman]])<br />
* Don't unconditionally skip conflict detection for shared resources, instead it should be done on a descriptor-by-descriptor basis (if both descriptors are shared) ([[Cameron Gutman]])<br />
* This check wasn't removed when I initially wrote this code and added the proper check below ([[Cameron Gutman]])<br />
* Add IoWMIDeviceObjectToProviderId and IoIs32bitProcess stubs for 64bit builds ([[Timo Kreuzer]])<br />
* Comment out some deprecated amd64 code ([[Timo Kreuzer]])<br />
* Add MmProtectToValue ([[Timo Kreuzer]])<br />
* Fix a typo ([[Timo Kreuzer]])<br />
* Minor stuff. ([[Pierre Schweitzer]])<br />
* Here is your commit Timo ;) ([[Pierre Schweitzer]])<br />
* Fix a bug. ([[Timo Kreuzer]])<br />
* Initialize the Zero variable ([[Timo Kreuzer]])<br />
* Don't corrupt the Color value in case we didn't have any page on MmZeroedPageListHead. ([[Timo Kreuzer]])<br />
* Fixes boot. ([[Timo Kreuzer]])<br />
* Use appropriated macros ([[Pierre Schweitzer]])<br />
* Simplify code, which should bring some fixing ([[Pierre Schweitzer]])<br />
* Fix potential buffer overflow ([[Pierre Schweitzer]])<br />
* Get back INIT_FUNCTION on lassy's polite request. ([[Pierre Schweitzer]])<br />
* Previously, in ReactOS' stories: ([[Pierre Schweitzer]])<br />
* ReactOS was broken since more a hundred of commits when two devs decided it was enough. One (we will name him Timo) fixed the context switch. The second, with the help of a third dev (Pierre & Hervé) decided to run tests by disabling some stuff (ie INIT_FUNCTION). This magically made testbot going back to life. ([[Pierre Schweitzer]])<br />
* But, some complains came from the ML, so trying to appease world, Pierre decided to revert half of his changes, thinking this would be OK. ([[Pierre Schweitzer]])<br />
* Now, after a night. It appears that half revert was a pretty bad idea. Testbot keeps being broken. ([[Pierre Schweitzer]])<br />
* So, this commit reverts r49665 (which was half reverting r49662). That way, testbot should be back, able to run tests. BUT, due to a NPFS issue, some tests are broken. Eric has been nicely mailed about that issue, with an idea of fix (thanks go here to Aleksey). ([[Pierre Schweitzer]])<br />
* For those who like that, drama to follow on ML. ([[Pierre Schweitzer]])<br />
* I turn into being S/M... ([[Pierre Schweitzer]])<br />
* Add missing PAGED_CODE() where needed ([[Pierre Schweitzer]])<br />
* Removed a wrong ASSERT in FsRtlIsNameInExpressionPrivate() and replace it by the right one ([[Pierre Schweitzer]])<br />
* Mark FsRtlIsDbcsInExpression() as halfplemented ([[Pierre Schweitzer]])<br />
* Renamed MmIsFileAPagingFile() to MmIsFileObjectAPagingFile() its appropriated name ([[Pierre Schweitzer]])<br />
* Added it to internal headers ([[Pierre Schweitzer]])<br />
* Implemented FsRtlIsPagingFile() ([[Pierre Schweitzer]])<br />
* Implemented FsRtlLookupPerStreamContextInternal(), FsRtlInsertPerStreamContext(), FsRtlRemovePerStreamContext(), FsRtlTeardownPerStreamContexts() ([[Pierre Schweitzer]])<br />
* Based on my previous work on pierre-fsd branch. ([[Pierre Schweitzer]])<br />
* Add missing prototype and define ([[Pierre Schweitzer]])<br />
* Implemented FsRtlPTeardownPerFileObjectContexts(), FsRtlLookupPerFileObjectContext(), FsRtlInsertPerFileObjectContext(), FsRtlRemovePerFileObjectContext() ([[Pierre Schweitzer]])<br />
* Stubplemented IoGetFileObjectFilterContext(), IoChangeFileObjectFilterContext() ([[Pierre Schweitzer]])<br />
* Add support of per file object filter context to IopDeleteFile() ([[Pierre Schweitzer]])<br />
* As ReactOS doesn't support file objects extensions, this doesn't work (blame Aleksey) - yet ([[Pierre Schweitzer]])<br />
* Forgotten comments... ([[Pierre Schweitzer]])<br />
* That's not because ARM will rule the world on a day that you're obliged to break x86 build. ([[Pierre Schweitzer]])<br />
* Fixed build. Will it work? Only God knows. ([[Pierre Schweitzer]])<br />
* Fix the fix, ie fix x86. ([[Pierre Schweitzer]])<br />
* Everything should work now ~ ([[Pierre Schweitzer]])<br />
* Never read code & commit while being tired... ([[Pierre Schweitzer]])<br />
* Implement MemorySectionName case for NtQueryVirtualMemory. Protect buffer access with SEH. (Samuel; {{bug|5753}})<br />
* revert accidental change from r49499 ([[Timo Kreuzer]])<br />
* Fixed FsRtlIsNameInExpression() according to r50018 tests ([[Pierre Schweitzer]])<br />
* Rewritten FsRtlIsDbcsInExpression() using FsRtlIsNameInExpression() pattern. ([[Pierre Schweitzer]])<br />
* This fixes all failing tests from kmtest.sys and make this function definitely tastier to MS fastfat.sys ([[Pierre Schweitzer]])<br />
* Merge some changes from r50021 to FsRtlIsNameInExpression() to make code easier to read and understand... ([[Pierre Schweitzer]])<br />
* Silent FstubEx* debug prints on popular demand (ie, Timo) ([[Pierre Schweitzer]])<br />
* commit base for new vga display miniport driver, is svn copy of framebuf_new as many codes identical ([[evb]])<br />
* Will than commit and document differences to make into vga driver ([[evb]])<br />
* Add the new vga miniport to build ([[evb]])<br />
* Replace the framebuf_new spec rc rbuild with vga_new spec rc rbuild ([[evb]])<br />
* Delete pointer.c ([[evb]])<br />
* Start make changes, driver.h new fields for VGA, change driver short/long name/tag, add macros and in enable.c remove hw pointer support ([[evb]])<br />
* fix now palette.c for vga, by copy logPalVGA/VGALOGPALETTE from NT4 DDK VGA sample drv and turn off codes for allocate 256 color pallette, instead use fix 16 color logPalVGA ([[evb]])<br />
* fix header of debug.c ([[evb]])<br />
* Finish make enable.c work full on vga, main change force 4BPP (disable other codes), create 4BPP bitmap surfobj, associate and lock ([[evb]])<br />
* Easy part done, now hard part ([[evb]])<br />
* Mode detect look for 4BPP, planar, graphics < 0x800 mode now ([[evb]])<br />
* Add GDIINFO from NT4 VGA DDK sample driver ([[evb]])<br />
* Set 4BPP prefer DIB format ([[evb]])<br />
* No graphics caps set for VGA driver ([[evb]])<br />
* Put static palette/color buffer for when VGA IOCTL send later ([[evb]])<br />
* Convert almost done, bInitSURF is last ([[evb]])<br />
* Fix an assign where a comparison was intended. CID 2626. ([[Amine Khaldi]])<br />
* Actually, code was correct, but ugly (who said "normal, that's a hack). ([[Pierre Schweitzer]])<br />
* So, when that code is called from SetupLDR, KeyHandle is required to be to 1. This what code does. Thing we do in the if condition when it appears we are called from SetupLDR. ([[Pierre Schweitzer]])<br />
* To avoid any further question, or warning, adding more parenthesis to show that we know what we do. ([[Pierre Schweitzer]])<br />
* So, to sum up, there's no comparaison for KeyHandle ([[Pierre Schweitzer]])<br />
* Fix CID 3454 ([[Pierre Schweitzer]])<br />
* Remove all #line 15 "ARM³::BLA" ([[Timo Kreuzer]])<br />
* Reasons: ([[Timo Kreuzer]])<br />
* It doesn't provide any benefits, its only purpose was to "look cool" ([[Timo Kreuzer]])<br />
* It never looked cool, instead a character mess appeared ([[Timo Kreuzer]])<br />
* It makes finding the related file harder, especially when the file is named differently then the description or when multiple files have the same tag ([[Timo Kreuzer]])<br />
* It effectively breaks Coverity scans ([[Timo Kreuzer]])<br />
* Make definitions of ExpChangeRundown, ExpChangePushlock and ExpSetRundown 64 bit safe (have one portable definition and use it accordingly) ([[Timo Kreuzer]])<br />
* Apply consistent formatting to CcMapData ([[Pierre Schweitzer]])<br />
* Hoover a bit in CC part 1. Should make MM happier. ([[Pierre Schweitzer]])<br />
* But MS fastfat driver not yet ([[Pierre Schweitzer]])<br />
* Plumber work part 1. To prevent leaks ([[Pierre Schweitzer]])<br />
* Hoovering part 2... ([[Pierre Schweitzer]])<br />
* Fix typo ~ ([[Pierre Schweitzer]])<br />
* Remove broken definition of SharedUserdata and use correct SharedUserData instead. Fixes a crash on real Hardware. (Daniel; {{bug|5650}})<br />
* Simplify SepPrivilegeCheck. (Timo)<br />
* Fix comments and reduce code complexity. ([[Timo Kreuzer]])<br />
* MiAddressToPte translates a virtual address to the corresponding PTE, MiAddressToPde to the corresponding PDE. MiPteToAddress is the inverse of MiAddressToPte and translates from a PTE to the virtual address. MiPdeToAddress broke this scheme and didn't calculate the corresponding virtual adress, but the adress of the page table. Fix this inconsistency by renaming the macro to MiPdeToPte and adding a fixed MiPdeToAddress. All references fixed accordingly. ([[Timo Kreuzer]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Remove useless checks ([[Pierre Schweitzer]])<br />
* Move redundant sum before loop, so it's done only once ([[Pierre Schweitzer]])<br />
* Fix handling of * wildcard ([[Pierre Schweitzer]])<br />
* This fixes failing kmtest tests added in r50614 ([[Pierre Schweitzer]])<br />
* Fix a bug where a spinlock was acquired on not initialized local variable ([[Johannes Anderwald]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Get back "useless checks" (tests show they weren't that useless) ([[Pierre Schweitzer]])<br />
* Prevent code redundancy ([[Pierre Schweitzer]])<br />
* This fixes 4 failing kmtest tests added in r50679 ([[Pierre Schweitzer]])<br />
* Improved * WC handling for both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression ([[Pierre Schweitzer]])<br />
* This fixes all failing tests in kmtest ([[Pierre Schweitzer]])<br />
<br />
=== IO ===<br />
<br />
==== PNPMGR ====<br />
* Check that we got a valid vector back from HAL when translating an interrupt resource ([[Cameron Gutman]])<br />
* Add some debugging messages for failure paths in device resource handling code ([[Cameron Gutman]])<br />
<br />
=== CSR ===<br />
<br />
==== CSRSRV ====<br />
<br />
== SUBSYSTEMS ==<br />
* CSRSS was started with a free address space, and was able to map 0xA0000 into it by luck, because the ReactOS Mm allocator picks address ranges randomly, and it somehow managed to avoid the low 1MB addresses. Were this algorithm to change, or perhaps, were we to implement VADs for VM allocations, the 0xA0000 region might already be allocated (by an early-process-initialization allocation, such as the heap). This is what the flag referenced above was designed for, but it was not used. Using this flag, on the other hand, now makes CSRSS fail, because it attempts to map the RAM into 0xA0000, which fails since you can map a section on top of reserved memory. To work around this Brobdingnagian annoyance, CSRSS simply releases the first MB of memory that SMSS has nicely reserved for it, and then proceeds with the mapping. This fixes the issue of getting 0xA0000 by luck and now guarantees it can be mapped. ([[sir_richard]])<br />
<br />
=== WIN32 ===<br />
<br />
==== CSRSS ====<br />
<br />
===== WIN32CSR =====<br />
* Move PrivateCsrssManualGuiCheck from user32 to win32csr ([[Giannis Adamopoulos]])<br />
<br />
== TOOLS ==<br />
<br />
=== RBUILD ===<br />
* Fix "format not a string literal and no format arguments" build warnings. ([[Eric Kohl]])<br />
<br />
== Uncategorized ==<br />
<br />
=== 0 ===<br />
* Use the full name we get from SearchForExecutable when building the command line for CreateProcess so we get proper name in argv later. ([[Kamil Hornicek]])<br />
<br />
=== ADVAPI32_LSASRV ===<br />
* Prepare LsapValidateDbHandle for access checks. ([[Eric Kohl]])<br />
* Move the functionality of LsaQueryInformationPolicy (advapi32.dll) into the new function LsarQueryInformationPolicy (lsasrv.dll). ([[Eric Kohl]])<br />
* Remove dead code from advapi32.dll. ([[Eric Kohl]])<br />
<br />
=== APPS ===<br />
* Damir Aliev: Properly convert encoding in cmdline tools. ([[Aleksey Bragin]]; {{bug|3487}})<br />
<br />
=== ARMDDK ===<br />
* Oh, right, forgot how this was laid out. should fix ARM build. ([[sir_richard]])<br />
* Define some spinlock functions. ([[sir_richard]])<br />
<br />
=== ASM ===<br />
* Merge asm related changes from cmake branch. ([[Timo Kreuzer]])<br />
* revert r49824 ([[Timo Kreuzer]])<br />
* Add include guards to asm.inc and comment out broken ljmp macro ([[Timo Kreuzer]])<br />
* Add syscalls.inc, containing assembler macros to generate syscall stubs (all supported architectures) ([[Timo Kreuzer]])<br />
* Change the macros to prefix the labels with Nt or Zw depending on whether we build usermode or kernel mode stubs ([[Timo Kreuzer]])<br />
* Create zw.S using the macros ([[Timo Kreuzer]])<br />
* try to fix build. ([[Timo Kreuzer]])<br />
* How did it work before? Probably by chance. "As usual"(tm) ([[Timo Kreuzer]])<br />
<br />
=== CLASSPNP_CDROM_NEW ===<br />
* Remove useless files. ([[sir_richard]])<br />
<br />
=== EXPLORER_NEW ===<br />
* Provide the ability to query version info (needed for task (DavidErceg; {{bug|4386}})<br />
* grouping). (DavidErceg; {{bug|4386}})<br />
* Open a context menu, when a task is right clicked. (greenie; {{bug|4671}})<br />
* Implement resizing the work area. (greenie; {{bug|5846}})<br />
<br />
=== FORMATTING ===<br />
* Apply consistent indentation of 4 spaces and ansi style formatting. ([[Timo Kreuzer]])<br />
* Remove the long GPL header ([[Timo Kreuzer]])<br />
* Fix formatting in message.c ([[Giannis Adamopoulos]])<br />
* Replace big file header with small header ([[Timo Kreuzer]])<br />
* apply consistent indentation of 4 spaces ([[Timo Kreuzer]])<br />
* No code change ([[Pierre Schweitzer]])<br />
* Apply indentation of 4 spaces. ([[Timo Kreuzer]])<br />
* Apply indentation of 4 spaces. ([[Timo Kreuzer]])<br />
<br />
=== FREELDR_NTFS ===<br />
* Some fixes and addings to the NTFS header. ([[Pierre Schweitzer]])<br />
* To be used later in order to fix NTFS driver in FreeLdr ([[Pierre Schweitzer]])<br />
<br />
=== HEAP ===<br />
* Move on to using a real HEAP_LOCK structure for a heap lock. ([[Aleksey Bragin]])<br />
* Implement kernel-mode counterparts of this lock too. Right now these don't introduce much of a difference, but they are going to be properly used by the new heap manager code. ([[Aleksey Bragin]])<br />
* Fix allocated/free memory fillers to match those Windows uses (winetests) ([[Aleksey Bragin]])<br />
* Add missing coalesce-on-free flag check in RtlCreateHeap ([[Aleksey Bragin]])<br />
* Turn on tail check/pattern filling in RtlAllocateHeap. ([[Aleksey Bragin]])<br />
* Add extra stuff storage support in RtlAllocateHeap and its helpers. ([[Aleksey Bragin]])<br />
* Set win32 statuses where necessary. ([[Aleksey Bragin]])<br />
* Return success in RtlValidateHeap to reduce spam when running winetest. ([[Aleksey Bragin]])<br />
* Roel Messiant: Remove old-style Peb->ProcessHeaps assignment from RTL, it's already done by MM. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix a typo (missing else) between two if branches, which fixes commit routine support. ([[Aleksey Bragin]])<br />
* Properly save requested size if 0 was given (1 should be allocated, but 0 saved as a requested amount). Fixes winetests. ([[Aleksey Bragin]])<br />
* Remove unnecessary dprints. ([[Aleksey Bragin]])<br />
* Set proper heap flags (tail and free checking) in case heap validation is enabled. Fixes another bunch of winetests. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix infinite loop in RtlDestroyHeap if heap contained big blocks. ([[Aleksey Bragin]])<br />
* Implement setting/getting heap user values and flags (very easy provided heap design is now proper). Amount of winetest failures is down to 12 (but 3 crashes in child processes). ([[Aleksey Bragin]])<br />
* Move (and cleanup) private heap definitions and structure to a standalone header file heap.h. It's explicitly included in heap_rewrite.c and heapdbg.c to prevent conflicts with the existing heap manager in heap.c. ([[Aleksey Bragin]])<br />
* Add 64 bit compatibility. ([[Aleksey Bragin]])<br />
* Properly set HEAP_GROWABLE flag if dwMaximumSize is 0 in HeapCreate. Also check for dwMaximumSize validity. Fixes out-of-memory problems when running "heavy" applications like Office 2003 setup with a new heap manager (which actually respects HEAP_GROWABLE flag). ([[Aleksey Bragin]])<br />
* More resource fixes making warnings vanish when built with cmake. ([[Daniel Reimer]])<br />
* RC file fixes for inconsistences shown up by the recent dll work in r49105. ([[Daniel Reimer]])<br />
* Fix RtlQuery/SetHeapInformation prototypes, move them to an appropriate place. ([[Aleksey Bragin]])<br />
* Implement RtlQuery/SetHeapInformation. ([[Aleksey Bragin]])<br />
* Implement in-place block growing. ([[Aleksey Bragin]])<br />
* Amount of winetest heap failures is down to 6 (3 exceptions still happen). ([[Aleksey Bragin]])<br />
* Fix DWORD -> ULONG in function definitions too. ([[Aleksey Bragin]])<br />
* Implement heap validation support. ([[Aleksey Bragin]])<br />
* Add ability to dynamically allocate UCR descriptors when preallocated amount is exhausted. ([[Aleksey Bragin]])<br />
* Fix a few bugs in RtlpFindAndCommitPages and in deactivated RtlpDecommitFreeBlock. ([[Aleksey Bragin]])<br />
* Enable free blocks decommitting. ([[Aleksey Bragin]])<br />
* New heap manager would now be ready to replace the old one. ([[Aleksey Bragin]])<br />
* Add special debug heap function declarations and stubs. ([[Aleksey Bragin]])<br />
* Add a useful inline for detecting whether a special or normal heap is going to be used. ([[Aleksey Bragin]])<br />
* Implement parameters validation ("DebugHeap") in all used RTL heap APIs. Winetests failures down to 4. ([[Aleksey Bragin]])<br />
* Hackfixed build by stubbing RtlpValidateHeapHeaders(), RtlpValidateHeapEntry() and hackplementing RtlpValidateHeap(). ([[Pierre Schweitzer]])<br />
* To be properly fixed. ([[Pierre Schweitzer]])<br />
* Fix a typo which lead to incorrect flags being forced. Fixes last remaining major winetest failures (only 1 GlobalAlloc/Free implementation related one is left to be fixed). ([[Aleksey Bragin]])<br />
* Time has come to get rid of a slightly modified implementation of WINE's heap, which is a hack based on Windows 95's heap implementation, itself a hack of DOS memory management. It supported 3 out of the 18 possible NT Heap Flags, did not support custom allocation/deallocation routines, and was about 50-80x slower with fragmentation rates up to 500x higher when compared to NT's LFH (WINE is lucky because the advanced NT Heap features are used in kernel-mode usually, not in user-mode, and they are crossing their fingers for this being the same). Several high-end SQL/Database applications would significantly benefit from custom heap features provided by NT. Not to say about removing crappy support for a custom Commit routine and crappy support for User-defined flags and the User-defined value. ([[Aleksey Bragin]])<br />
* So, the glorious moment for a new heap manager, which is (to remind you) a totally new heap manager, resembling real NT heap manager, based on data structures similar to Windows 2003 and Vista+'s heap structures, supporting advanced heap flags (e.g. useful for debugging), having substantially lower fragmentation rates (and thus speed and reliability), having native support for user-defined flags and user-defined values, also native support for a custom commit routine, which is very important for trunk's win32 subsystem. It also reserves, commits, decommits and frees memory on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary. Not to say about support for per process heaps, with a proper lock, and a further support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* Yeah, I'm not a fun person :D ([[Aleksey Bragin]])<br />
* Fix a typo (assignment) in the ASSERT, spotted by Johannes Anderwald. ([[Aleksey Bragin]])<br />
* Peer review rocks. ([[Aleksey Bragin]])<br />
* RtlpInsertFreeBlockHelper: Don't validate the Previous Size of the next Heap Entry when inserting a free Heap Entry into a free list. Should solve bug #5843 and may affect bug #5857. ([[Roel Messiant]])<br />
* All callers of this function already perform this check, except for RtlpInsertFreeBlock, a function used during Heap Segment creation/expansion. ([[Roel Messiant]])<br />
* RtlpInsertFreeBlock creates multiple free Heap Entries (using the helper function) if the free space is too big to be contained in a single Heap Entry. ([[Roel Messiant]])<br />
* In such a case however, it creates a Heap Entry and calls the helper before creating the next Heap Entry, which triggers this assert. ([[Roel Messiant]])<br />
* FontSmoothing" system parameter registry key should be REG_SZ (as it is in Windows, and as other SPIs are). ([[Aleksey Bragin]])<br />
<br />
=== INTRIN ===<br />
* Implement _mm_sfence, _mm_lfence, __faststorefence (for amd64) ([[Timo Kreuzer]])<br />
* Don't use __sync_synchronize() for _ReadWriteBarrier, as it issues an mfence instruction and this is not what we want ([[Timo Kreuzer]])<br />
* Remove "BUGBUG" comment, because the fact that _ReadBarrier and _WriteBarrier are full (compiler) barriers isn't critical. ([[Timo Kreuzer]])<br />
<br />
=== NCI ===<br />
* Ue macros for the other nci generated files, too and delete nci-tool. ([[Timo Kreuzer]])<br />
<br />
=== NPFS_KERNEL32 ===<br />
* Switch back to the old pipe wait code but keep the new code in place (disabled). ([[Eric Kohl]])<br />
<br />
=== NTOS ===<br />
* Lookup the special labels from above when initializing the System DLL. Only lookup INT2E vs SYSENTER on x86, other architectures don't need a stub. ([[sir_richard]])<br />
* Bitmap resources start at index 1, not 0. Also make sure we don't go past the maximum IDB_ resource index for no reason, and check the size of the resource instead of assuming it's going to be one page. ([[sir_richard]])<br />
* Stop using MiInsertInListTail and MiRemoveHeadList in the deprecated ReactOS page functions. Those two functions do not adequately support the semantis needed for page insertion/removal and should've never been used. MmAllocPage now uses MiRemoveAny/ZeroPage, and MmDereferencePage uses MiInsertPageInFreeList. Should help with some corruptions. More is coming. ([[sir_richard]])<br />
* Don't use dangerous MiRemoveHeadList in MDL page allocation, use MiRemoveAnyPage instead. ([[sir_richard]])<br />
* Don't repurpose pages from the zero/free page list without actually unlinking the page first! This should fix even more corruptions. ([[sir_richard]])<br />
* Adding colored page lists means we need to start using the OriginalPte field as a forward/back link. This is shared with AweReferenceCount, which ReactOS uses as the RMAP list head. However, RMAPped pages shoudl never be free/zero, and non-free-zero pages will never have a color backlink in OriginalPte, so it should theoretically be safe to do this. However, it's possible for the RMAP "get" function to be called on a free/zero page (which would normally return NULL), but with color chaining enabled, the "get" function would misinterpret the backlink as an RMAP entry. Therefore, we overload the ParityError bit to signify "there is an RMAP". The get/set functions now handle this, and the color linkage will ASSERT this later. This way, a colorlink with ParityError == FALSE is not treated as an rmap list head. ([[sir_richard]])<br />
* Remove MiZeroPage, use MiZeroPhysicalPage instead. They work pretty much the same except the needless raise to DISPATCH_LEVEL. ([[sir_richard]])<br />
* Get rid of the messed up MiMapPageToZeroInHyperSpace which was hacking into MiMapPagesToZeroInHyperSpace. Now MiMapPagesToZeroInHyperSpace is properly implemented to use chained PFNs, and the MmZeroPageThread code has been modified to correctly use the new mechanism. ([[sir_richard]])<br />
* Zero page mapping now happens at PASSIVE trough MiMapPAgesToZeroInHyperSpace, not DISPATCH anymore. ([[sir_richard]])<br />
* More fixes are coming to remove the remaining MiRemoveHeadList and rewrite the zero page loop. Should fix more possible corruptions. ([[sir_richard]])<br />
* One last fix to the zero page thread before we move to ARM3: use MiRemoveAnyPage instead of dangerous MiRemoveHeadList. The code works on the assumption (validated by Windows through a bug check) that MiRemoveAnyPage always returns the first free page, and we also manually grab the first free page, and compare this is true. Nice way to detect PFN database corruption. ([[sir_richard]])<br />
* Fix MiInsertZeroAtBack to increment the MmAvailablePage count, since MiRemoveAnyPage decrements it (MiRemoveHeadList did not). ([[sir_richard]])<br />
* Zeroed pages should go at the front, not the back of the zero list. Going to the back is a special boot-only case on MP, which isn't supported. Implement zero-only version of MiInsertPageInList, remove MiInsertZeroPageAtBack. ([[sir_richard]])<br />
* Remove many other deprecated functions. Physical memory consistency should now be higher than in the past. ([[sir_richard]])<br />
* The RMAP entry only has a valid process if the address is in user-space, otherwise process is NULL. Only attempt to acquire the process rundown lock if a process actually exists. Fixes crashes caused by 48905. ([[sir_richard]])<br />
* Switch to using an ARM3, much more correct MmZeroPageThread. Stub support for discarding sections and listening to the Power Manager Idle Timer. ([[sir_richard]])<br />
* Use a synchronization (auto-reset) instead of notification event for the zero page thread, this way we don't have to reset it manually and query its state. Instead, a boolean MmZeroingPageThreadActive is checked instead. ([[sir_richard]])<br />
* Once we switch to colored lists, major improvements can be done for speed. ([[sir_richard]])<br />
* Write missing color code in certain PFN functions, and fix existing code where needed. Add some debugging. For now, turned off until testing succeeds. ([[sir_richard]])<br />
* Redocument which MMPFN fields are violated by ReactOS-internal values. This has gotten much better than before. ([[sir_richard]])<br />
* Fix straggling bugs in color table algorithms. ([[sir_richard]])<br />
* Enable color tables! Right now pages are merely entering and exiting the tables, the tables themselves are never used for allocations. This will change with further commits. ([[sir_richard]])<br />
* Add MiRemoveZeroPageSafe helper function, when a zero page is required, but the inline zeroing of MiRemoveZeroPage is not. This function will only try grabbing a zero page if one exists, otherwise a free page will be grabbed and zeroed with custom code of the caller's choosing. ([[sir_richard]])<br />
* Add concept of process color and system color. Compute correct color to use whenever requesting a page. ([[sir_richard]])<br />
* Uncondtionally enable the color code when inserting/removing pages. ([[sir_richard]])<br />
* For now, when requesting a page, colors are still ignored, and the global PFN lists are scanned instead. If there are no regressions, we are one patch away from that. ([[sir_richard]])<br />
* Fix a bug in MiRemoveAnyPage: it was always checking the colored zero page list, instead of checking the colored free page list the second time around. ([[sir_richard]])<br />
* Add definition for size of a page directory, and size of all page directories required per process (some architectures have more than one page directory per process/address space). ([[sir_richard]])<br />
* MiSetConsumer no longer achieves anything. Remove it. ([[sir_richard]])<br />
* Use SYSTEM_PD_SIZE instead of assuming that this is PAGE_SIZE, since this is not the case on (future) ARM and (current) AMD64 ports. ([[sir_richard]])<br />
* Remove some magic numbers in the pool code, using PTE_COUNT, MiAddressToPde, when needed. Also, the expansion code uses PDEs, not PTEs, so differentiate this, because on some systems (ARM), there are different structures for both. ([[sir_richard]])<br />
* Use MI_WRITE_INVALID_PTE. ([[sir_richard]])<br />
* ARM3 paged pool now works, the expansion bug has been fixed (and the code is more portable). Expect to see it gradually enabled soon. ([[sir_richard]])<br />
* He's climbing in yo PFN database, he snatching yo pages up, tryin to page em so y'all need to hide your pool hide your cache, and hide your working set cuz they grabbin' all the pages out there. We gonna page you, we gonna page you, so you can run and fault on that, run and fault on that, home boy, homeboy, home homeboy. ([[sir_richard]])<br />
* Enable ARM3 Paged Pool and remove all related deprecated code. Install tested on several VMs, it might cause new regressions. Let's fix them before 0.3.13 instead of reverting. ([[sir_richard]])<br />
* This is why you shouldn't let Antoine Dodson commit code. ([[sir_richard]])<br />
* Move all the Nt*Section API interfaces into ARM3 and rewrite most of the code to perform the same parameter validation and input checks as Windows does. Support all protection masks. Use correct section object access mask. Use appropriate SEH where needed. Pass 0-initialized local instead of NULL when needed. Don't assume certain parameters are OPTIONAL when they are not. Don't return SEH failures at the end of the system call, the kernel usually returns the result of the system call proper. Call DbgkMapViewOfSection in scenarios where it would not have gotten called before. Protect against certain kinds of kernel-mode access from user-mode. ([[sir_richard]])<br />
* Move unimplemented Mm*Section APIs into ARM3 as well. ([[sir_richard]])<br />
* Go ahead and now fill out the OriginalPte field for PFNs initialized with MiInitializePfn(ForOtherProcess). They should only belong to ARM3 so they'll never have SwapEntry/RMAP associated with them. This functionality is important for future Prototype PTE support, among other things, as it lets us get the original PTE value written for a given PFN entry. ([[sir_richard]])<br />
* Define MI_MAKE_PROTOTYPE_PTE macro to make a real prototype PTE from a PTE. Define counter-part MiProtoPteToPte to recover the true PTE from a given Prototype PTE. ([[sir_richard]])<br />
* Define MI_PTE_LOOKUP_NEEDED instead of using 0xFFFF. The name was found in checked build assertion strings. ([[sir_richard]])<br />
* Add MM_VIEW (used for System-mapped Section Views) and MM_SESSSION (used to define the system/session view mappings) structure definitions. ([[sir_richard]])<br />
* Initialize system views by calling MiInitializeSystemSpaceMap. This sets up the lock, bitmap, and hash table. ([[sir_richard]])<br />
* Implement/fixup the code paths during page faults that are needed to succesfuly resolve a demand page associated with a pagefile backed ARM3 section (which uses Prototype PTEs). A lot of the code was already there but assumed we were using Prototype PTEs only for the shared user data page. By combining that code with the typical demand-zero fault code, we obtain the needed paths. For now, only tested with ARM3 sections that are page-filed backed (not image or data-file backed) mapped into system view space (MmMapViewOfSectionInSystemSpace), not user-mode addresses (which need VADs). The code to actually create/map these doesn't exist in trunk yet, the purpose of this checkin is to test the new fault changes to make sure they don't cause negative effects to already-working faults. ([[sir_richard]])<br />
* Implement MmCreateArm3Section, which creates ARM3-backed sections, but only for pagefile-backed memory at the moment. It uses MiCreatePagingFileMap and creates the expected Segment, Subsection, ControlArea and Section objects described in Windows kernel internals literrature. It's surprisingly easy and only takes 200 lines of code. ([[sir_richard]])<br />
* Implement MiMapViewInSystemSpace, all it took was another 250 lines and we can now map ARM3 sections into memory. Accessing them causes a fault, which we correctly handle with the prototype PTE fault code. ([[sir_richard]])<br />
* Added a bogus allocation flag that can be used with Nt/MmCreateSection and MmMapViewInSystemSpace to take the ARM3 path instead. Only for internal testing at the moment. ([[sir_richard]])<br />
* Now we need to look at how to allow mapping these into user-space as well... ([[sir_richard]])<br />
* Nobody reads/checks for MEMORY_AREA_CACHE_SEGMENT. Might as well just call this zero (no logical change). ([[sir_richard]])<br />
* We don't support SEC_BASED for ARM3 sectios either, ASSERT that. ([[sir_richard]])<br />
* Nobody actually writes TRUE for WriteCopyView in the MEMORY_AREA data structure, so this field is useless (always false). Remove all instances of its use. ([[sir_richard]])<br />
* Nobody uses MEMORY_AREA_SYSTEM anymore, call these MEMORY_AREA_OWNED_BY_ARM3 for now. We'll have to sync this code with x86 later anyway. ([[sir_richard]])<br />
* Use the Spare flag in the VAD as a ReactOS/MemoryArea specific flag to signify that this VAD is associated with a MEMORY_AREA and should be unlinked at process exit, but not freed. This is because MemoryAreas themselves are cleaned up later, and in the future their associated VADs (not yet in Trunk) will also be parsed. In the process death scenario, those VADs will be freed, but not unlinked (since it would already have been unlinked). ([[sir_richard]])<br />
* Add a _64K macro definition so we can stop typing out 65536 all the time. ([[sir_richard]])<br />
* Delete deprecated handling of MEMORY_AREA_IO_MAPPING. Delete all MEMORY_AREA definitions except the ones for SEGMENT_VIEW and VIRTUAL_MEMORY. All other memory is now owned by ARM3! ([[sir_richard]])<br />
* Delete WriteCopyView flag from MEMORY_AREA (unused, and was taking up 4 bytes due to alignment), and add a Vad pointer (takes up 4 bytes -- no actual size change). ([[sir_richard]])<br />
* For VM and Section MEMORY_AREAs mapped in user-mode, build a "fake" VAD and insert it into the VAD Root of the Process. This means there is now a consistent view between ARM3 and RosMm in terms of user-mode address space layout, which will come in handy later. ([[sir_richard]])<br />
* Destroy the MEMORY_AREA's VAD when the MEMORY_AREA itself is deleted. Watch out for the scenario explained in a previous check-in, where the VAD was caught by the MmCleanProcessAddressSpace vad-cleanup-loop. ([[sir_richard]])<br />
* Implement MiInsertVad to restore the old functionality of MiInsertNode when the current parent and insertion result is not yet known. It obtains the information and calls MiInsertNode. ([[sir_richard]])<br />
* Add the tiny little bit of code required to correctly handle user-mode faults on ARM3 mapped sections in certain limited scenarios. ([[sir_richard]])<br />
* Implement ARM3 version of MmMapViewOfSection, only for ARM3 pagefile-backed sections, and without any special flag support. Tested and works great, with the new pagefault code correctly finding the Prototype PTE for the VAD. ([[sir_richard]])<br />
* Make every VAD insert also create a MEMORY_AREA. Now the two address space views should be completely synchronized and we can try removing the hack that was done for PEB/TEB support (which will remove the 200 thread regression). ([[sir_richard]])<br />
* Implement MiGetNextNode and MiFindEmptyAddressRangeInTree. ([[sir_richard]])<br />
* When shutting down, call Cc to flush the dirty cached pages, otherwise these might've gotten lost (and lead to lost/corrupted data on disk). ([[sir_richard]])<br />
* Don't assume that CcFlushDirtyPages will run with APCs disabled. Go ahead and actually enter/leave a critical region (Acquire/ReleaseForLazyWrite depend on this). The guarded mutex does disable APCs, but it's released when the actual flush happens. ([[sir_richard]])<br />
* Delete a bunch of junk, 5 less files in Mm now (also moved some functions around). Delete unused functions where found. ([[sir_richard]])<br />
* The modified page writer should run at a high priority such as 27, not in idle mode at priority 1 -- otherwise dirty pages never get flushed out. ([[sir_richard]])<br />
* Reimplement MmGetFileNameForAddress, MmGetFileNameForSection, MmGetFileObjectForSection to also support ARM3 sections. Shouldn't affect anything other than the user-mode debugging support. ([[sir_richard]])<br />
* Fix whitespace typo in comment (two spaces instead of one). ([[sir_richard]])<br />
* That's right. I'm not a fun person. ([[sir_richard]])<br />
* Build fix. ([[sir_richard]])<br />
* High-level interface fixes to NtAllocateVirtualMemory/NtFreeVirtualMemory: ([[sir_richard]])<br />
* Validate MEM_LARGE_PAGES, MEM_PHYSICAL flags. Check for permission to use MEM_LARGE_PAGES. ([[sir_richard]])<br />
* Validate protection mask. ([[sir_richard]])<br />
* Validate MEM_RELEASE and MEM_DECOMMIT. ([[sir_richard]])<br />
* Perform correct SEH in NtFreeVirtualMemory. ([[sir_richard]])<br />
* Protect against overflows past VAD/User address ranegs. ([[sir_richard]])<br />
* Only reference the process by handle if this isn't already the current process. ([[sir_richard]])<br />
* If this isn't the current process, attach to it during the duration of the VM operation. ([[sir_richard]])<br />
* Temporary debugging. ([[sir_richard]])<br />
* Implement monitor bitmap support for the display dialog (Carlo; {{bug|3158}})<br />
* Fix incorrect codepage values (Carlo; {{bug|3158}})<br />
* Look for applets in windows dir as well as system dir (Carlo; {{bug|3158}})<br />
* Fix bugs in the VAD algorithms, we should be rounding up, not down. ([[sir_richard]])<br />
* My attempt at making bugchecks a thing of the past has failed, someone has caught the typo. Bugchecks will now happen in ReactOS again instead of being ignored. Maybe you can "forget" to merge this one with the release branch? ;-) ([[sir_richard]])<br />
* Add support for user-mode VAD faults on page tables (just a couple lines of extra code). ([[sir_richard]])<br />
* Add support for user-mode VAD demand zero faults. ([[sir_richard]])<br />
* Remove broken ASSERT. ([[sir_richard]])<br />
* Hackfix a hack. Should get rid of the recent VAD assert in user32/bpp changes. ([[sir_richard]])<br />
* Fix copy/paste error. ([[sir_richard]])<br />
* Add MmProtectToValue array to convert MM/PTE protection values to Win32 protection flags. ([[sir_richard]])<br />
* Handle faults on non-demand-zero PTEs (and/or demand-zero PTEs that are not READWRITE (such as EXECUTE_READWRITE)). ([[sir_richard]])<br />
* Use MI_SET_PFN_DELETED where we missed it. ([[sir_richard]])<br />
* Implement support for deleting user-mode pageable VM addresses. Now when cleaning up the process address space, MiDeleteVirtualAddresses is called for the VADs, so this will now actually free the PEB/TEB pages that were previously getting leaked for each thread/process (a known regression I introduced when moving to VADs for PEB/TEB). ([[sir_richard]])<br />
* Fix brainfart (an interesting bug we would've never hit, but a bug nevertheless). ([[sir_richard]])<br />
* Complete the VAD-to-MAREA Synchronization hack by removing fake MAREAs that were added when inserting real VADs. To do this, we have to track the fake MAREA associated with a VAD, so we overload the FirstProtoTypePte field in the VAD, if this is NOT a section VAD (which we don't use yet). We'll figure something out for section VADs later. ([[sir_richard]])<br />
* Now that VAD and MAREA views are synchronized, remove the VAD limit and let VADs be created at any address. Also do not create an arbitrary 16MB VAD memory area anymore. This basically now allows for as many PEB/TEBs as can fit in the address space, fixing the recent known regression that limited the number of threads a process could have. ([[sir_richard]])<br />
* Store the protection mask in the Fake VADs as well, we can read/convert this from the MAREA protection value. ([[sir_richard]])<br />
* Reimplement NtQueryVirtualMemory to use VAD information instead. Even though Alloc/Free are still MAREA-based, the fake VADs we build ought to be enough to make the query API work for certain limited scenarios. Only some paths are implemented and it's lacking SEH, but it's good enough for the install/boot requirements. If there are any regressions, please file bugs. ([[sir_richard]])<br />
* Remove the Bavarian hack, I no longer think it is needed. ([[sir_richard]])<br />
* Remove the "35314 sginsberg /* REACTOS Mm Hack of Doom */". Apocalypse averted? ([[sir_richard]])<br />
* Clean up Mm initialization, there is now no-more RosMM stuff done in Phase 0 of MmInit, only ARM3 runs. The kernel address space and memory areas are only initialized in Phase 1, because that's where sections are started up, and they're the only thing other than VM which still use memory-areas. ([[sir_richard]])<br />
* Implement MiDecrementReferenceCount and rewrite large parts of the ProbeAndLock/Unlock MDL API to fully use ARM3 APIs, dropping MmReference/DereferencePage behind. ([[sir_richard]])<br />
* Fix many MDL API bugs: correctly check for I/O pages, use LIST_HEAD instead of -1, track system-wide locked pages, use the process working set lock instead of the address space lock, add check for cross-ring MDL mappings, and make some small optimizations. ([[sir_richard]])<br />
* Make some more fixes in MmAllocatePagesForMdl, MmFreeMdlPages to make the PFN entries more "correct". ([[sir_richard]])<br />
* Had a little breakthrough: instead of complicating our lives and hiding certain ReactOS-Mm fields inside legitimate ARM3/MMPFN fields, differentiate between "legacy" (RosMm) and ARM3 pages. The legacy allocator (MmAllocPage/MmRequestPageMemoryConsumer) will use the non-paged pool to allocate a MMROSPFN add-on (8 bytes), in which the RMAP list head and SWAPENTRY are stored. When a legacy "free" is done, this data is deleted. Additionally, we can now tell apart between ARM3 and RosMm pages, so appropriate ASSERTs have been added to make sure the two never cross paths (which should safely let us use all the PFN fields now and implement working sets, etc...). I don't know why I didn't think of this sooner. ([[sir_richard]])<br />
* Get rid of MC_NPPOOL and MC_PPOOL memory consumers since those are not managed by RosMm anymore. Use MC_SYSTEM for the page table stuff that RosMm still handles, and keep MC_USER and MC_CACHE for the current Section/VirtualMemory/Cache RosMm code. ([[sir_richard]])<br />
* Implement the MAREA<->VAD hack for section VADs as well. ([[sir_richard]])<br />
* Use allocation attribute 0x1 instead of 0xC0000000 to let RosMm know this is an ARM3 section. 0xC0000000 is actually a valid combination of SEC_ flags, 0x1 is illegal and thus recognized. ([[sir_richard]])<br />
* Add support for unmapping ARM3 sections, destroying segments and control areas, and clearing out subsection PTEs. ([[sir_richard]])<br />
* Add support to MiDeletePte/MiDeleteVirtualAddresses to handle Section VADs. ([[sir_richard]])<br />
* Add support to MiDeletePte to handle valid, prototype PTEs. ([[sir_richard]])<br />
* Add MEM_TOP_DOWN support to ARM3 section code. ([[sir_richard]])<br />
* Add support for unmapping currently mapped ARM3 section views at process termination. ([[sir_richard]])<br />
* Use the new ARM3 section code for mapping the NLS section in the system (tests the system-view mapping code) and in each new process (tests the data-mapping code). Section is correctly unmapped at process termination time! ([[sir_richard]])<br />
* C Pointer Math will bite even the most experienced programmer in the ass. Fix wrong calculation which led to ASSERTs and memory corruption (since the last revision). ([[sir_richard]])<br />
* Fix multiple math/logic bugs in the PrototypePTE paths. Caught while trying to switch the Win32k GDI Handle Table to ARM3 sections. ([[sir_richard]])<br />
* Go back to using RosMm for the NLS section since supposedly this causes issues on some systems. This is the only actual change in r206/208/209, so if Caemyr's data is correct, this fill fix it. ([[sir_richard]])<br />
* Protect Arty's changes with #ifdef NEWCC, otherwise this code ASSERTs and crashes as soon as a pageout operation is required. Since your advanced test/regression systems boot into configurations with 1GB+ RAM, you never even test these paths and one could put an ASSERT(FALSE) and you wouldn't even notice it (as proven). ([[sir_richard]])<br />
* Remove merge artifact from newcc. ([[sir_richard]])<br />
* Make sure we don't get a user-pointer back from MmMapInSystemSpace. ([[sir_richard]])<br />
* Sanity checks when dealing with creating/cleaning process address space. ([[sir_richard]])<br />
* Set the VmDeleted flag when the process address space is being nuked. ([[sir_richard]])<br />
* Fix typos. ([[sir_richard]])<br />
* Assert nobody tries to touch the sharecount of a non-ARM3 page. ([[sir_richard]])<br />
* ASSERT nobody tries to put ARM3 pages into the MC_USER LRU. ([[sir_richard]])<br />
* You can't just set MDL_LOCKED_PAGES without actually... locking the page. Add a MmReferencePage when doing so, so when that a paging read/write IRP gets completed (and MmUnlockPages is called), the page gets handled correctly. Can now boot with 64MB RAM without ASSERTs. ([[sir_richard]])<br />
* Fix one of the MDL code paths that isn't getting called frequently. ([[sir_richard]])<br />
* Fix a bug in MmFindGapBottomUp which could make it return an address lower than what the caller said should be the lowest address. ([[sir_richard]])<br />
* Fix a bug in the MDL Code which would dereference a completely bogus page frame index. ([[sir_richard]])<br />
* Misc typo and cleanup fixes. ([[sir_richard]])<br />
* CR3 should be PDE_BASE, not PTE_BASE! ([[sir_richard]])<br />
* Define DemandZeroPte. ([[sir_richard]])<br />
* Define an array of MI_USAGE integers to track what a PFN is used for. ([[sir_richard]])<br />
* Extend the MMPFN structure for ReactOS-specific PFN tracing mechanism. ([[sir_richard]])<br />
* Add macros to track page usage and process/extra-data (not yet used). ([[sir_richard]])<br />
* Add page-tracking macro calls wherever needed. MI_TRACE_PFNS is still off, though, so this code won't be called. ([[sir_richard]])<br />
* Mark all initialization functions INIT_FUNCTION. ([[sir_richard]])<br />
* This will save ~280KB of RAM once we dump INIT from RAM in a future patch. ([[sir_richard]])<br />
* Display current free RAM at certain checkpoints. ([[sir_richard]])<br />
* Implement the idle loop in C. ([[sir_richard]])<br />
* Make idle loop portable. Can be moved out of /i386 now. ([[sir_richard]])<br />
* Context switch in C instead of ASM. Can be made more portable, but it's a good start. Unless Timo rewrites it. ([[sir_richard]])<br />
* KiDispatchInterrupt (the DPC handler) in C, instead of ASM. ([[sir_richard]])<br />
* Optimize new context switching code to avoid wasted cycles. ([[sir_richard]])<br />
* Assign a working set to the system process and correctly initialize its address space. ([[sir_richard]])<br />
* Assign the working set list address, system-wide, but per-process (in hyperspace). ([[sir_richard]])<br />
* Give every process its working set page, and store it. Build a bogus working set list (MMWSL). ([[sir_richard]])<br />
* Use the process working set list (MMWSL) to track page table references during faults, just as Windows does. ([[sir_richard]])<br />
* Correctly initialize the colored page list heads and assert their validity. ([[sir_richard]])<br />
* Fix bugs in MiAllocateContiguousPages. Fixes an ASSERT Caemyr was seeting a lot (the cont-able ASSERT). ([[sir_richard]])<br />
* Part 1 of fixes: For some reason beyond me, I had abbreviated ([[Art Yerkes]])<br />
* MiCowSectionPage to always assume CoW rather than always not ([[Art Yerkes]])<br />
* CoW for cache sections. ([[Art Yerkes]])<br />
* Make sure we're looking for cache type sections rather than ([[Art Yerkes]])<br />
* as we were in the branch) data file sections. More needed. ([[Art Yerkes]])<br />
* Fix another bug in the continuous memory allocation code, which would go off-by-one while looping the PFN entries for the allocation, and corrupt the PteFrame/PteAddress of an unrelated PFN entry. If this PFN was in the active lists, it would cause page table leaks and faults, if the page was on a free list, it would override the colored list backlink and corrupt the list, later causing unlinked pages to remain linked to the list. ([[sir_richard]])<br />
* Fix a bug in MiRemovePageByColor which caused corruption of the page list and could lead to crashes, re-use of freed memory, assuming active memory was free, etc. ([[sir_richard]])<br />
* Use MI_PFN_ELEMENT in this code, as the extra checks done by MiGetPfnEntry are irrelevant and slow things down. ([[sir_richard]])<br />
* Remove some old ReactOS hacks before we had MMROSPFNDATA. ([[sir_richard]])<br />
* Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the way page allocations are given out and creates a less uniform physical memory layout. The fact this now works means that the PFN lists are finally now sane. ([[sir_richard]])<br />
* Bugfixes for the I/O Controller Object. ([[sir_richard]])<br />
* Define portable MI_MAKE_ACCESSED_PAGE macro. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to account ARM, where the PDE and PTE formats are different. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to use portable PTE macros instead of hard-coding x86-only fields. ([[sir_richard]])<br />
* Don't put boot.s in "arch" anymore, it's part of "boot" now. ([[sir_richard]])<br />
* Erm, why is it that the ARM compiler detects this obvious bug, but x86 does not? Fix missing ShareCount zeroing when unlocking an MDL. ([[sir_richard]])<br />
* Errr... wow! Another one caught by ARM GCC. I can swear x86 GCC used to catch these. Did someone change warning settings? Anyhow, fix a *f++ which increments the pointer, not the value INSIDE the pointer (*f)++. Fixes MiDeleteSystemPageableVm. ([[sir_richard]])<br />
* Fix incorrect assumptions that a PDE == PTE which have crept up throughout new ARM3 code. ([[sir_richard]])<br />
* Fix a couple more unportable directly "Hard" PTE field accesses, instead of using portable MI macros. ([[sir_richard]])<br />
* Cleanup some of the pool code that had really messed up PDE vs PTE. ([[sir_richard]])<br />
* Define the number of page directoty levels for ARM. ([[sir_richard]])<br />
* Comment out some ARM3 code that won't be needed now that most of the x86 code is in C. ([[sir_richard]])<br />
* Fixes all but one build error. ([[sir_richard]])<br />
* Add MiGetPteOffset for ARM. All of the kernel compiles, but does not link yet. ([[sir_richard]])<br />
* Fix up ARM code to match recent ARM3 changes. ([[sir_richard]])<br />
* Do not use initguid inside every single file to zillionplicate the GUIDs! Why doesn't the x86 linker catch this?!!? ([[sir_richard]])<br />
* Some more ARM build and linker fixes, moving some of the new x86 C code into ARM. This should really be shared later. ([[sir_richard]])<br />
* Totally broke thread context switching on ARM for now. It's a Good Thing. ([[sir_richard]])<br />
* Fix 16-bit interlocked operations on ARM (GCC doesn't provide built-ins). ARM should build now. ([[sir_richard]])<br />
* STATUS_SUCCESS is not the only succesful return code. ([[sir_richard]])<br />
* Seems like cpsr_c doesn't work in this case? Need to investigate. Put an infinite loop in the entrypoint on ARM. ([[sir_richard]])<br />
* Roel Messiant: Fix NtQueryObject to return the required buffer size if the buffer provided was too small. Unimplemented paths behaviour is preserved. ([[Aleksey Bragin]])<br />
* Check that MaximumSize is valid value if the section is being backed by paging file. ([[Michael Martin]])<br />
* Always initialize TrapFrame segment selectors in KiEnterTrap, because further C code relies on at least TrapFrame->SegFs being correct. Running Arwinss on VirtualBox exposed this bug. ([[Aleksey Bragin]])<br />
* I wouldn't find solution for this bug without Timo's great help! ([[Aleksey Bragin]])<br />
* Remove IMAGE_FILE_MACHINE_NATIVE and IMAGE_FILE_MACHINE_ARCHITECTURE definitions, use only the former ([[Timo Kreuzer]])<br />
* Fix incompatibility with newer KiEnterTrap implementation. Should fix spontaneous issues I possibly introduced with my previous commit, and finally fixes that VirtualBox issue. ([[Aleksey Bragin]])<br />
* Fix memory region size calculation in MemoryBasicInformation in certain cases. Spotted by Michael Martin. ([[Aleksey Bragin]])<br />
* Fix a typo in region size calculation of special memory areas, which unbreaks OllyDbg & co. Thanks Michael Martin for the hint. ([[Aleksey Bragin]]; {{bug|5692}})<br />
* Do the required flush when the last reference to a cache stripe is released. ([[Art Yerkes]])<br />
* The installer now completes given enough ram in NEWCC=1, and writes an ([[Art Yerkes]])<br />
* understandable FS. There's at least one more problem preventing the ([[Art Yerkes]])<br />
* resulting installation from booting however. ([[Art Yerkes]])<br />
* Fix a bug in rmap where we were checking the next (unfortunately named ([[Art Yerkes]])<br />
* current) rmap for a segment membership. ([[Art Yerkes]])<br />
* Fix a mistake in cache trim. ([[Art Yerkes]])<br />
* ifdef detection of DirectMapping in section in NEWCC mode in page out. ([[Art Yerkes]])<br />
* Fix copypasta, thanks Victor! ([[Aleksey Bragin]])<br />
* Greatly simplify and fix the incorrect and overcomplicated if condition in IoIsOperationSynchronous(), based on MSDN description. Bug spotted, fix tested by Pierre. ([[Aleksey Bragin]])<br />
* Temporary bring back the old boot image until I or sir_richard commit a proper fix. ([[Aleksey Bragin]])<br />
* Reduce PDE/PTE confusion a little more. ([[Roel Messiant]]; {{bug|5791}})<br />
* MiQueryMemoryBasicInformation: Fall back on MEMORY_AREA data in sections until the MM rewrite also covers these. for more info. ([[Roel Messiant]]; {{bug|5791}})<br />
* Complete rewrite reserving and releasing of System PTEs. ([[Roel Messiant]])<br />
* The previous algorithm, in a nutshell, worked as follows: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by their base address. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping). ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Problems with the previous algorithm: ([[Roel Messiant]])<br />
* While the idea is that all PTEs in clusters are zeroed, which requesters rely on, cluster bookkeeping isn't zeroed on merges. ([[Roel Messiant]])<br />
* The side effect of this was that PTEs that weren't really zeroed were randomly delivered to requesters. ([[Roel Messiant]])<br />
* 99% of the time, allocations are serviced using the first cluster in the list, which is virtually always the first suitable cluster. ([[Roel Messiant]])<br />
* This is so because the ordering is based on the base address of the clusters, and allocations are serviced using the cluster tail. ([[Roel Messiant]])<br />
* Because the first cluster starts out as the whole pool, and the pool is quite sizable, it can deal with virtually allocations.. for a while. ([[Roel Messiant]])<br />
* A corollary of the previous point is *massive fragmentation* because: as long as an allocation isn't released back into the pool, ([[Roel Messiant]])<br />
* the space of previous allocations that have been released isn't reused because the first cluster can't suck them up, and enough allocations remain in use. ([[Roel Messiant]])<br />
* The combined effect of the previous two points: a first cluster that effectively shrinks mostly, with small clusters forming behind it. ([[Roel Messiant]])<br />
* Once the first cluster has shrunk far enough (which of course takes a long time), 90% of the space may still be free, scattered in mostly small clusters. ([[Roel Messiant]])<br />
* This would make decent sized allocations fail because of the heavy fragmentation. ([[Roel Messiant]])<br />
* An implementation detail that caused the head of the list to be treated as a genuine cluster when the first cluster in the list was too small. ([[Roel Messiant]])<br />
* The algorithm (as explained above) made this case quite unlikely until your system has been running for a while, after which it could happily ([[Roel Messiant]])<br />
* corrupt list heads of other pools, depending on where the list head is with respect to its own pool. ([[Roel Messiant]])<br />
* Empirically obtained data revealed that after just *booting to the desktop*, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained roughly 70 (unusable) clusters, blocking 15 to 20% of the pool. These figures increased to roughly 100 ([[Roel Messiant]])<br />
* clusters and 30 to 35% after opening a foxy browser and using it to visit a mathematically inspired search engine. ([[Roel Messiant]])<br />
* The same data also showed that over 95% of allocations requested just a single PTE, and a noticable allocation spike ([[Roel Messiant]])<br />
* also occured in the range of 65-128 PTEs. It should be clear optimizing for small allocations is a good idea, ([[Roel Messiant]])<br />
* and preferably encourage reuse the same PTEs for such allocations. ([[Roel Messiant]])<br />
* And the new algorithm was born: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by increasing cluster size. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping) .. really this time! ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Both in the reservation and release actions, insertions into the list preserve the increasing cluster size order. ([[Roel Messiant]])<br />
* Empirically obtained data now revealed that after just booting to the desktop, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained exactly 2 clusters. This increased to 10 clusters after some minor internet browsing and watching a 5 minute video using a media player. ([[Roel Messiant]])<br />
* Fix a typo in the page fault handler that caused PDEs to be fixed up when they were in fact valid. ([[Roel Messiant]])<br />
* Only update the System Page Directory when expanding the paged pool. Fixes the PointerPde asserts. ([[Roel Messiant]])<br />
* On paged pool expansion, the system page directory and the process page directory of the calling process were updated. ([[Roel Messiant]])<br />
* When updating the process page directory, an assert made sure the PDE that got written was invalid. ([[Roel Messiant]])<br />
* In case of the System process, both page directories are located on the same physical page. ([[Roel Messiant]])<br />
* So when this process expanded the paged pool, the system page directory update automagically ([[Roel Messiant]])<br />
* updated the process page directory too. The assert therefore triggered. ([[Roel Messiant]])<br />
* Not explicitly updating the process page directory will result in a page fault later on, which is ([[Roel Messiant]])<br />
* handled by copying the required PDE from the system page directory to the process page directory. ([[Roel Messiant]])<br />
* Rumour has it this fix is incorrect because "something's wrong with the System PDE stuff". The lack ([[Roel Messiant]])<br />
* of any further info however leads to this change and explanation. ([[Roel Messiant]])<br />
* Remove undocumented defines from winuser.h and include undocuser.h when _WINE is defined. ([[Aleksey Bragin]])<br />
* crt header compatibility update: ([[Timo Kreuzer]])<br />
* define _USE_MATH_DEFINES for dsound, gdiplus, jscript and some win32k files ([[Timo Kreuzer]])<br />
* don't define HAVE_LRINT(F) in libsamplerate ([[Timo Kreuzer]])<br />
* Remove M_PI constants from win32k ([[Timo Kreuzer]])<br />
* Try to fix a winetst crash. ([[Timo Kreuzer]])<br />
<br />
=== NTOS_MM ===<br />
* N ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Initialize Found to FALSE in NtQueryVirtualMemory. I wonder how GCC missed uninitialized var usage? ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Implement case when NtQueryVirtualMemory is called with non-existing virtual address. ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Handle various special cases in NtQueryVirtualMemory (e.g. querying illegal virtual addresses, shared memory area, etc). Example of an app doing this - OllyDbg. ([[Aleksey Bragin]])<br />
* Don't lie about page protection in MiQueryAddressState. Fixes PDFCreator-alike bugs. ([[Aleksey Bragin]]; {{bug|5627}})<br />
* Don't access pfn database directly, there is a function for this. Thanks sir_richard. ([[Aleksey Bragin]])<br />
<br />
=== NTOSKRNL_MM ===<br />
* Acquire rundown protection on process to make sure it is not being terminated and before attempting to do anything with the process. Fixed a rare case of PspDeleteProcess being called twice for a process, resulting in bugcheck. ([[Michael Martin]])<br />
* Fix the use of an uninitialized variable. ([[Amine Khaldi]])<br />
<br />
=== NTOSKRNL_NEWCC ===<br />
* Init Dummy var even if just used for debug to suppress warning ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PPC ===<br />
* Fix index out of bounds ([[Pierre Schweitzer]])<br />
* Fix sizeof() wrong usage ([[Pierre Schweitzer]])<br />
* Fix the fix, spotted by "ThFabba" on IRC ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* PspCreateThread: If thread creation fails, dereference the Process object also to account for the reference taken at the beginning of the function. ([[Michael Martin]])<br />
* Remove mistakenly committed ASSERTs that were used during my tests. ([[Michael Martin]])<br />
* Revert r48857. The Process object is dereferenced when the Thread object is destroyed, so dont dereference it here. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* add a comment so that noone will stumble upon this atrocity a second time. ([[Timo Kreuzer]])<br />
<br />
=== PSDK_DDK ===<br />
* Add more missing definitions. Fix classpnp.h. ([[sir_richard]])<br />
* Last couple of fixes to headers. Classpnp can compile (and link) now. ([[sir_richard]])<br />
<br />
=== PSDK_NDK ===<br />
* Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. ([[sir_richard]])<br />
<br />
=== RTL_DPH ===<br />
* Add core DPH (Debug Page Heap) structures based on Windows 2003/Vista. ([[Aleksey Bragin]])<br />
* Add misc generic support routines. ([[Aleksey Bragin]])<br />
* Implement DPH version of RtlCreateHeap(). ([[Aleksey Bragin]])<br />
* Debug prints match those printed by Windows 2003. ([[Aleksey Bragin]])<br />
* Implement adding a new pool and allocating a new node. ([[Aleksey Bragin]])<br />
* Add a bunch of stubs. ([[Aleksey Bragin]])<br />
* Implement list manipulation routines: pool list, virtual list, unused list. ([[Aleksey Bragin]])<br />
* Implement node removal from an available list. ([[Aleksey Bragin]])<br />
* Implement more support functions: coalescing a node into the list of available nodes, finding a best fitting node for a given size, growing available virtual memory amount. ([[Aleksey Bragin]])<br />
* Implement other support locking/unlocking, handle-related routines. ([[Aleksey Bragin]])<br />
* Fix RtlpDphFreeVm definition. ([[Aleksey Bragin]])<br />
* Node lists related improvements: Add a function for removing a node from a free list, implement coalescing free nodes into an available list. ([[Aleksey Bragin]])<br />
* Implement a non-implemented case in RtlpDphAllocateNode when there is a need to allocate more virtual memory, and fix incorrect size calculation too. ([[Aleksey Bragin]])<br />
* Implement a function for validating the page heap block. ([[Aleksey Bragin]])<br />
* Implement RtlpPageHeapDestroy. Now we have two exported APIs ready: heap create and heap destroy. ([[Aleksey Bragin]])<br />
* Branch for the 0.3.13 release ([[Colin Finck]])<br />
<br />
=== RTL_HEAP ===<br />
* First commit of a heap manager rewrite. It introduces a totally new heap manager, with the following features: ([[Aleksey Bragin]])<br />
* Actually resembles real NT's heap manager; ([[Aleksey Bragin]])<br />
* Based on data structures similar to Windows 2003 and Vista+'s heap structures; ([[Aleksey Bragin]])<br />
* Supporting advanced heap flags (e.g. useful for debugging); ([[Aleksey Bragin]])<br />
* Substantially lower fragmentation rates (and thus speed and reliability) than the existing Wine's implementation. It's going to be further enhanced by adding a frontend allocator (for example, as lookaside lists, or as a Low Fragmentation Heap alike frontend in Vista+ systems); ([[Aleksey Bragin]])<br />
* Real support for user-defined flags and native support for user-defined values; ([[Aleksey Bragin]])<br />
* Native support for a custom commit routine, which is very important for trunk's win32 subsystem; ([[Aleksey Bragin]])<br />
* Reserving, committing, decommitting and freeing on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary; ([[Aleksey Bragin]])<br />
* Support for per process heaps, with a proper lock; ([[Aleksey Bragin]])<br />
* Reserved support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* The committed code is a result of a month of work, and is a heavy work-in-progress one. It already implements the bare minimum required to boot to 3rd stage and run FireFox 3, however many rare codepaths are not implemented yet and there is some maintenance work to do (e.g. move structures and defines to a standalone header file). A list of used references is stated in the header of a source file for now. ([[Aleksey Bragin]])<br />
* Lame... build fix. ([[sir_richard]])<br />
* Implement missing parts of a virtual block allocations support. ([[Aleksey Bragin]])<br />
* Minor fixes to handling extra stuff in heap blocks. ([[Aleksey Bragin]])<br />
* Wine's heap regression tests now run through the end without crashing and show 277 failures. ([[Aleksey Bragin]])<br />
<br />
=== SPRINTF ===<br />
* Don't compile the new sprintf by default. Requested by Timo. ([[Amine Khaldi]])<br />
<br />
=== USB_USBEHCI ===<br />
* Reorganization code to put hardware related structures and routines in own source files. ([[Michael Martin]])<br />
* Modify ResetPort to correctly reset the port instead of the controller. ([[Michael Martin]])<br />
* Implement allocating chunks of memory from the Common Buffer for use with the rest of source code. ([[Michael Martin]])<br />
* Implement creating and deleting Queue Heads and Transfer Descriptors from common buffer. ([[Michael Martin]])<br />
* Implement linking/unlinking QueueHeads to create a linked list for Asynchronous Schedule traversal. ([[Michael Martin]])<br />
* Implement BuildSetupPacketFromURB for creating a setup packet from a URB. ([[Michael Martin]])<br />
* Implement SubmitControlTransfer. ([[Michael Martin]])<br />
* Remove all hardware related structs from usbehci.h as they are now in hardware.h. ([[Michael Martin]])<br />
* Add debugging routines for usb descriptors, queue heads and transfer descriptors. ([[Michael Martin]])<br />
* This will break building usbehci, but not a problem as it is not included in the default build. Will be fixed with later commit. ([[Michael Martin]])<br />
* Remove all hardware related routines from fdo.c as they are now in hardware.c ([[Michael Martin]])<br />
* Replace ExecuteControlRequest with new SubmitControlTransfer. ([[Michael Martin]])<br />
* For internal control requests (originating from ehci driver) use an event to signal request completion. ([[Michael Martin]])<br />
* When submitting non internal control request save the Irp in the software part of the QueueHead. ([[Michael Martin]])<br />
* For these requests check for errors and complete the Irp with the appropriate URB Status when the QueueHead is complete. ([[Michael Martin]])<br />
* Misc code cleanup and dead code removal. ([[Michael Martin]])<br />
* UsbEhci now works as before and should be ready for some forward progress. ([[Michael Martin]])<br />
* Fix bug in InitializeUsbDevice that caused endpoints to be duplicated in internal config structure. ([[Michael Martin]])<br />
* Fix implementation of UsbRemoveDevice. ([[Michael Martin]])<br />
* Implement SetDeviceHandleData and RestoreUsbDevice. ([[Michael Martin]])<br />
* SubmitControlTransfer: Not all control request need data, in which case dont create a MDL and a PID_CODE_IN_TOKEN TD Descriptor. ([[Michael Martin]])<br />
* Fix bug in ReleaseMemory that caused memory not to be marked as free. ([[Michael Martin]])<br />
* Fix incorrect memory header size that resulted in memory corruption. ([[Michael Martin]])<br />
* Implement URB_FUNCTION_SELECT_INTERFACE. ([[Michael Martin]])<br />
* Add missing IoMarkIrpPending before calling SubmitControlRequest. ([[Michael Martin]])<br />
* Now use BuildSetupPacketFromURB for creating the CtrlSetup data structure. ([[Michael Martin]])<br />
* When selecting configuration, make the ConfigurationHandle from the related UsbDevice instead of always the RootHub device. ([[Michael Martin]])<br />
* Fix typo that caused all pipes to be marked as interrupt type. ([[Michael Martin]])<br />
* Change CompletePendingURBRequest to only complete one SCE request Irp. ([[Michael Martin]])<br />
* EhciDefferedRoutine: Only free Mdl if one was created when the request was added to the queue. ([[Michael Martin]])<br />
* Dont assume that three transfer descriptors need to be freed, use a while moving to each linked and free instead. ([[Michael Martin]])<br />
* Yabba Dabba Doo added to increase size of message. :) ([[Michael Martin]])<br />
<br />
=== VBEMP ===<br />
* Fix rounding error when calculating display size (neoman; {{bug|5790}})<br />
* Loosely based on (neoman; {{bug|5790}})<br />
* Fixes gdi32_winetest:mapping (neoman; {{bug|5790}})<br />
<br />
=== VIDEOPRT_WIN32K ===<br />
* Synchronize and share PEVENT/ENG_EVENT/VIDEO_PORT_EVENT implementation, as these objects are actually the same (and VideoPrt Event* APIs can be used on GRE Event Objects). Use ENG_EVENT structure from ntddvdeo.h instead of re-creating our own. Drivers using these interfaces will no longer explode. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Implement registering event routine which gets called when a topology node (volume / mute node) changes ([[Johannes Anderwald]])<br />
* Implement fetching event changes ([[Johannes Anderwald]])<br />
* Unlock locked pages before freeing the mdl ([[Johannes Anderwald]])<br />
* Fixes assertion hit 'Assertion 'OldRefCount < 2500' failed at ARM³::MDLSUP line 1008' ([[Johannes Anderwald]])<br />
* Fixes playback / recording of longer audio files ([[Johannes Anderwald]])<br />
* Implement support functions which call the provided functions of mmixer library ([[Johannes Anderwald]])<br />
* Fix a bug in device interface request ioctl handler ([[Johannes Anderwald]])<br />
* Midi devices should now be visible, capabilities be retrieved and opened / close ([[Johannes Anderwald]])<br />
* Writing data is not yet supported ([[Johannes Anderwald]])<br />
* Free allocated mdls in the io completion routine. Also free the associated stream header. ([[Johannes Anderwald]])<br />
* Don't free associated stream header anymore ([[Johannes Anderwald]])<br />
* Tested with VBox 3.2.10 + VmWare Player 3.1.2 + WinXP ([[Johannes Anderwald]])<br />
* Fix build ([[Johannes Anderwald]])<br />
* Update to new mmixer library interface ([[Johannes Anderwald]])<br />
<br />
=== WIN32KSYS ===<br />
* replace nci-generated stubs with a stub file using macros ([[Timo Kreuzer]])<br />
<br />
=== WIN32K|USER32 ===<br />
* Implement NtUserGetMenuIndex, . ([[James Tabor]]; {{bug|5528}})<br />
* Fix build from 49005. ([[James Tabor]])<br />
* Move to the new window structure. Window Object served us well. ([[James Tabor]])<br />
* Rewrite the Event and Hook procedures. ([[James Tabor]]; {{bug|5670}})<br />
* Add fix for KsStudio for Olaf Siejka and debug prints for WH_KEYBOARD_LL. ([[James Tabor]]; {{bug|5670}})<br />
* Fix for DosBOX. Added more data copies in user32 hook.c. ([[James Tabor]]; {{bug|5670}})<br />
* This hook commit fixes the ros regression testing startup, but consider this a hax fix until more research in Global hooks has completed. More pointed Global hook tests are needed. Misc changes, removed unused storage pointers and reordering. For DosBOX, the mouse low level is now working and the keyboard low level should not be so intermittent as before, now sending messages from system desktop not from thread desktop, ([[James Tabor]]; {{bug|5670}})<br />
* Cleanup and added debug prints. ([[James Tabor]])<br />
* Fixed SendNotifyMessage, thanks to Michael Martin callback changes. Fixed DispatchMessage when dealing with thread errors. Fixed all but one of the Get/PeekMessage wine tests. Fixed attaching threads to process information. Plus other fixes. ([[James Tabor]])<br />
* Implemented support for QS bits, ReplyMessage (not fully correct), and others. ([[James Tabor]])<br />
* Tested everything here, please post regressions so I can add more applications to the test list. This patch is synced with 49720 and 49772. After that there are graphic issues. ([[James Tabor]])<br />
* Credits goes to wine for helping with diagnosing issues in the ReactOS message system. ([[James Tabor]])<br />
* Remove the old send message API and use NtUserMessageCall. ([[James Tabor]])<br />
* Send messages do not pass the Ansi bit. This was evident during the hook changes. User32 knows the caller is Ansi and with a Unicode window user32 can make the apropate switch. Win32k on the other hand, assumes, based on the Unicode window the caller is Unicode. Hook tests enabled in send message, forces the call to win32k, and the Ansi product is Unicode data. Using NtUserMessageCall this bit can be passed forward to allow win32k to make the correct switch going to callback. ([[James Tabor]])<br />
* Finish 50030 (work by Giannis), Now PostMessage passes all the correct data based on Get/PeekMessage. Example: Post A, Get/Peek A, Translate A, Dispatch A, should be that simple. FYI: DDE memory handling should be in win32k not user32 and why,,,,, ~see next point~ ([[James Tabor]])<br />
* Patch up problems (at a minimum) going into the SendMessage/Timeout A2U U2A support in win32k and fixed SMTO callback if local. ([[James Tabor]])<br />
* Fix all the user32 wine win test_SetParent tests. ([[James Tabor]])<br />
* Fix mdi class window function Id, now msi message tests do not assert. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 6 failures dealing with rect size. Start A2U and U2A support. ([[James Tabor]])<br />
* Fix copy paste error, which means this code is not used, should have pop up during testing. ([[James Tabor]])<br />
* Add hack to mark desktop window as a desktop window and notes for creating a desktop with tips in win32k. Move user position code from window to winpos. ([[James Tabor]])<br />
<br />
=== WINE32K|USER32 ===<br />
* Implement client thread information for the beginning of QS flag support and signaling synchronization of messages. ([[James Tabor]])<br />
* Set and clear idle event when setting clearing masks. This fixed the idle foreground hook call from user mode. ([[James Tabor]])<br />
* Fixed wine ListBox and ReactOS ComboBox tests. Critical note: SendMessageA/W, when IsThreadHooked is used and any global hooks are affirmed, all messages are sent to Win32k and the result is, A to W and W to A mismatch via UMToKM. Fixing Global hook support exposed a critical bug in ReactOS message system. Enable the appropriate hooks will temporarily remedy this bug. ([[James Tabor]])<br />
* All patches are from a checked out revision from 49475. Upping ntuser.h, win32k and user32 to sync. ([[James Tabor]])<br />
<br />
=== YAROTOWS ===<br />
* Reintegrate the branch. For a brighter future. ([[Timo Kreuzer]])<br />
* Main features: ([[Timo Kreuzer]])<br />
* Implement LDEVOBJ api. Responsible for loading dlls (display drivers, font drivers, keyboard layout, etc), replacing code in different locations. ([[Timo Kreuzer]])<br />
* Implement PDEVOBJ api. A PDEVOBJ represents a physical device and is the core component for handling multiple display devices. ([[Timo Kreuzer]])<br />
* Rewrite device locking. The new method was neccessary to allow dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement support for enumerating display devices and settings. ([[Timo Kreuzer]])<br />
* Implement dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement a number of Eng mapping functions. ([[Timo Kreuzer]])<br />
* Rewrite Eng level surface handling for cleaner code and better compatability. ([[Timo Kreuzer]])<br />
* Rewrite parts of the DIB handling code. ([[Timo Kreuzer]])<br />
* Rewrite DC creation and deletion. Deletion and cleanup is now completely callback based. Now we don't leak the DC objects when terminating a process, like we did before. ([[Timo Kreuzer]])<br />
* Improve the XLATE and BRUSH code, removing several old hacks. ([[Timo Kreuzer]])<br />
* Improve icon code. ([[Timo Kreuzer]])<br />
* Thanks to Jerome Gardou, Kamil Hornicek and everyone helping. ([[Timo Kreuzer]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.13&diff=29246
ChangeLog-0.3.13
2011-02-21T03:52:57Z
<p>CycleGeek: Add (some?) contributors, wine syncs, third party libraries</p>
<hr />
<div>This is the changelog for ReactOS™ [[0.3.13|version 0.3.13]] (released XXXXXXX), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.12|version 0.3.12]] (released 20 October 2010).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core developers ===<br />
* Giannis Adamopoulos<br />
* Johannes Anderwald<br />
* Aleksey Bragin<br />
* Dmitry Chapyshev<br />
* Benedikt Freisen<br />
* Jerome Gardou<br />
* Cameron Gutman<br />
* Kamil Hornicek<br />
* Amine Khaldi<br />
* Eric Kohl<br />
* Timo Kreuzer<br />
* Matthias Kupfer<br />
* Michael Martin<br />
* Ged Murphy<br />
* Sylvain Petreolle<br />
* ReactOS Portable Systems Group<br />
* Daniel Reimer<br />
* Gregor Schneider<br />
* Pierre Schweitzer<br />
* James Tabor<br />
* Christoph von Wittich<br />
* Art Yerkes<br />
<br />
=== Patch submitters ===<br />
* Damir Aliev<br />
* Oleg Baikalow<br />
* Carlo Bramini<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Adam Kachwalla<br />
* Radek Liška<br />
* Roel Messiant<br />
* Love Nystrom<br />
* Igor Paliychuk<br />
* Samuel Serapion<br />
<br />
=== Localization ===<br />
* spb-ivan92 ({{Bug|5685}})<br />
* wojtekkozlo664 AT op DOT pl ({{Bug|5740}})<br />
* Mario Kacmar<br />
* Andres Traks<br />
<br />
=== Support staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.13 changes ==<br />
=== Applications ===<br />
* Winmine: Synced and forked from Wine 1.3.5 winemine.<br />
<br />
=== Control Panel Applets ===<br />
=== Installer ===<br />
=== Services ===<br />
== Tests ==<br />
== Translations ==<br />
<br />
== Wine syncs ==<br />
Libraries synced<br />
* atl<br />
* d3d8<br />
* d3d9<br />
* fusion<br />
* gdiplus<br />
* hlink<br />
* iexplore<br />
* mprapi<br />
* msi<br />
* msiexec<br />
* reg<br />
* shdocvw<br />
* urlmon<br />
* wer.dll<br />
* widl<br />
* wined3d<br />
* winemine<br />
* winhlp32<br />
* winhttp<br />
* wininet<br />
* wordpad<br />
* write<br />
* wtsapi32<br />
* xcopy<br />
<br />
== Third party libraries ==<br />
* DejaVu Fonts Documentation updated to 2.31<br />
* RedHat Liberation Fonts updated to 1.06<br />
* Tahoma Fonts undated to Wine HEAD<br />
* bzip2 updated to 2.06<br />
<br />
== BASE ==<br />
<br />
=== APPLICATIONS ===<br />
<br />
==== CALC ====<br />
* Initialize next field. Fixes CID 11063 ([[Timo Kreuzer]])<br />
<br />
===== DOSKEY =====<br />
<br />
==== CMDUTILS ====<br />
* Fix compilation with msvc by GetProcAddress'ing undocumented functions ([[Jérôme Gardou]])<br />
* TCHAR -> WCHAR in the process ([[Jérôme Gardou]])<br />
* Anti Oracle Movement has begun. Adding go-oo and LibreOffice to rapps. ([[Daniel Reimer]])<br />
<br />
===== XCOPY =====<br />
* Fix compilation with msvc ([[Jérôme Gardou]])<br />
* 1. Someone should send this to wine (this is NOT lazyness) ([[Jérôme Gardou]])<br />
* 2. Someone should tell mingw dev about http://msdn.microsoft.com/en-us/library/aa381050%28v=VS.85%29.aspx ([[Jérôme Gardou]])<br />
* Spanish translation by JasonGenie at gmail dot com ([[Amine Khaldi]]; {{bug|5889}})<br />
* Add stubs for all page heap API functions. ([[Aleksey Bragin]])<br />
* Enable call to RtlpPageHeapDestroy() when necessary. ([[Aleksey Bragin]])<br />
* Reset Parameters==-1 hack after unsuccessful call to RtlpPageHeapCreate(), would be necessary when page heap is implemented.. ([[Aleksey Bragin]])<br />
<br />
==== FINDSTR ====<br />
* Port findstr (incomplete, as author of this patch states, it may satisfy RosBE, .c .h and .rc files) from FreeDOS project. Needed for RosBE-on-ReactOS support. ([[Aleksey Bragin]]; {{bug|5724}})<br />
<br />
===== SOLITAIRE =====<br />
<br />
==== GAMES ====<br />
* do not include already included file in rc files ([[Jérôme Gardou]])<br />
* add missing close for handle ([[Matthias Kupfer]])<br />
* one more fix (on request of Pierre S.) ([[Matthias Kupfer]])<br />
<br />
===== NSLOOKUP =====<br />
<br />
==== NETWORK ====<br />
* Use memcpy with sizeof instead of strncpy with strlen to make sure the destination string will be zero terminated. ([[Timo Kreuzer]])<br />
* CID 1649 ([[Timo Kreuzer]])<br />
<br />
===== PING =====<br />
* Add localization support to ping. (; {{bug|5500}})<br />
* Implement small helper MyLoadString, using FindResource, LoadResource, LockResource and replacing LoadString, so we don't need to link to user32 anymore. ([[Timo Kreuzer]])<br />
* Add German translation. ([[Timo Kreuzer]])<br />
* Polish translation of ping. (Olaf)<br />
* Italian translation of ping. (Vincenzo)<br />
* French translation patch from myself aka Pierre Schweitzer, with deepest love, and so on... ([[Pierre Schweitzer]])<br />
* Fix typos ;) ([[Johannes Anderwald]])<br />
* Fix MyLoadString. (menone7)<br />
<br />
==== PAINT ====<br />
* apply (Black_Fox; {{bug|5434}})<br />
* fix minor bugs introduced by it (Black_Fox; {{bug|5434}})<br />
* generalize changes related to mirroring rectangular selections to free form selections (Black_Fox; {{bug|5434}})<br />
* solve problem regarding selection contents update (Black_Fox; {{bug|5434}})<br />
<br />
==== RAPPS ====<br />
* Igor Paliychuk: ([[Amine Khaldi]])<br />
* Update some broken links. ([[Amine Khaldi]])<br />
* Changed the cyrillic "P" to a latin "P" in the beginning of the VBox driver's russian and ukrainian descriptions (rapps doesn't display it when it's cyrillic). ([[Amine Khaldi]])<br />
<br />
==== REGEDIT ====<br />
* Katayama Hirofumi: Unicodify regedit, add support for import/export of v5 reg files. Based on Wine regedit. ([[Aleksey Bragin]])<br />
* REGE ([[Aleksey Bragin]]; {{bug|5547}})<br />
* Katayama Hirofumi: Don't leak open handles to keys. ([[Aleksey Bragin]]; {{bug|5547}})<br />
* Katayama Hirofumi: Misc code changes/ cleanup. ([[Aleksey Bragin]]; {{bug|5547}})<br />
* Fix a bug causing registry entries with names containing a backslash to be displayed incorrectly ([[Cameron Gutman]])<br />
* Merge ScmControlService() and ScmSendStartCommand() into ScmSendServiceCommand(). ([[Eric Kohl]])<br />
* Adam Kachwalla <geekdundee@gmail.com> ([[Aleksey Bragin]]; {{bug|5711}})<br />
* Load Hive..." and "Unload Hive..." menu items implemented ([[Aleksey Bragin]]; {{bug|5711}})<br />
* Make address bar case-insensitive ([[Aleksey Bragin]]; {{bug|5711}})<br />
* Remove trailing slashes in address bar when at root keys (e.g. "HKEY_LOCAL_MACHINE\" or "HKEY_CURRENT_USER\") ([[Aleksey Bragin]]; {{bug|5711}})<br />
* Address "go" button added ([[Aleksey Bragin]]; {{bug|5711}})<br />
* Removed ~8px slack from bottom of the app (not needed and looks better) ([[Aleksey Bragin]]; {{bug|5711}})<br />
* Factored out error displaying functions into error.c file. ([[Aleksey Bragin]]; {{bug|5711}})<br />
* Adam Kachwalla: Fix inconsistent formatting. ([[Aleksey Bragin]]; {{bug|5716}})<br />
* Me: to anyone who's gonna try syncing the code with Wine's regedit: Have fun! ([[Aleksey Bragin]]; {{bug|5716}})<br />
<br />
==== TASKMGR ====<br />
* Fix Russian translation, by spb-ivan92. ([[Aleksey Bragin]]; {{bug|5685}})<br />
* Rafal Harabien: Add support for DELETE key to processes and applications list in taskmgr. ([[Aleksey Bragin]]; {{bug|5646}})<br />
<br />
=== SERVICES ===<br />
* Remove the reference counter from the common handle type as a handle is never shared or duplicated. ([[Eric Kohl]])<br />
* Remove the access right from the service handle as it is not used. ([[Eric Kohl]])<br />
* Dereference service manager handles and service handles in two separate functions that SEH-protect the initial access to the handle and signature check. This will protect SCM from bogus handles. ([[Eric Kohl]])<br />
* Use new handle check functions in RCloseServiceHandle(). ([[Eric Kohl]])<br />
* RControlService: Check if a control request is acceptable for a user mode service before sending it to the service. ([[Eric Kohl]])<br />
* RControlService: Check the current state before sending a control request. ([[Eric Kohl]])<br />
* Revert r49366. ([[Eric Kohl]])<br />
* Fix a typo (|| instead of |). Found by clang. ([[Timo Kreuzer]])<br />
<br />
==== EVENTLOG ====<br />
* Rename the EVENTSOURCE struct to LOGHANDLE because it is currently used like a handle object. The EVENTSOURCE struct will be added again in one of the next commits. ([[Eric Kohl]])<br />
<br />
==== UMPNPMGR ====<br />
* Start using XP- and Vista-compatible pipe names for the RPC endpoint. Kick out the ROS-specific \pipe\umpnpmgr one. ([[Roel Messiant]])<br />
* Use only the Vista pipe name for now, using the XP one makes device installation fail.. ([[Roel Messiant]])<br />
* Use the correct PNP interface UUID ([[Roel Messiant]])<br />
<br />
==== USETUP ====<br />
<br />
=== SETUP ===<br />
* Update Ukrainian translation by Igor Paliychuk. ([[Amine Khaldi]]; {{bug|5536}})<br />
* 5540 5604 5614 5617 for more details. ([[Amine Khaldi]]; {{bug|5536}})<br />
* Update Estonian translation by anthrax11. ([[Amine Khaldi]]; {{bug|5625}})<br />
* Fix a really mean bug: wcslen() returns the size in characters whereas MaximumLength has to be in bytes. ([[Pierre Schweitzer]])<br />
* Now, this sets MaximumLength to its appropriate size and prevents some memory issues (and buffers having odd size, which is weird for an unicode string...). ([[Pierre Schweitzer]])<br />
<br />
==== CMD ====<br />
<br />
=== SHELL ===<br />
* Carlo Bramix: MultiByteToWideChar() has just 6 and not 8 parameters, probably it's a forgetten copy/past from WideCharToMultiByte(). ([[Aleksey Bragin]]; {{bug|5678}})<br />
* Carlo Bramix: ConvertULargeInteger() should have its parameter 'Len' declared as UINT rather than 'INT'. This fixes a signed/unsigned mismatch warning. ([[Aleksey Bragin]]; {{bug|5678}})<br />
<br />
==== EXPLORER ====<br />
* Track the only Global Hook ReactOS has. ([[James Tabor]])<br />
* Revert last change. ([[James Tabor]])<br />
<br />
==== EXPLORER-NEW ====<br />
* Fix another "sizeof" usage mistake ([[Cameron Gutman]])<br />
* CID 1631 ([[Cameron Gutman]])<br />
<br />
=== SYSTEM ===<br />
<br />
==== SMSS ====<br />
* Remove the ROS_DOESNT_SUCK hack, and correctly started subsystem processes with the first MB reserved. ([[sir_richard]])<br />
<br />
==== WINLOGON ====<br />
* Add msg constants (by smiley) ([[Johannes Anderwald]])<br />
<br />
== BOOT ==<br />
<br />
=== ARMLLB ===<br />
* Make DbgPrint compatible so we can use debug.h. ([[sir_richard]])<br />
* Add support for ATAG_REVISION. ([[sir_richard]])<br />
* Fix support of ATAG_MEM: there can be multiple tags, one per DRAM bank. ([[sir_richard]])<br />
* Fix the default case not to "return": it should "Break" instead. ([[sir_richard]])<br />
* Only apply the RAMDisk hack on Beagle for now. ([[sir_richard]])<br />
* Add uImage header which uBoot expects on the images it can load nicely (using "go" will not give us ATAGs, "bootm" requires this header). It's a static header instead of requiring the mkImage tool, since we can disable data checksums in uBoot. We basically fake being a Linux kernel and the LLB handles the ATAGs. ([[sir_richard]])<br />
* Add boot stack for Zoom2. ([[sir_richard]])<br />
* Initialize hardware before parsing environment variables. This makes more sense, and also allows debug output from the environment scanning code. ([[sir_richard]])<br />
* Add the MACHINE_TYPE code for the ZOOM2, based on the standard machtype definitions maintained by the various boot loader communities. ([[sir_richard]])<br />
* Forgot to commit this earlier: define the ATAG_REVISION header. ([[sir_richard]])<br />
* Include FreeLoader's keycode mappings (which don't seem standard) in ARMLLB, so we can do correct keypad to keycode translation. ([[sir_richard]])<br />
* Include ReactOS's standard debug.h, which lets us un-redefine DbgPrint, and also gives us goodies like ASSERT and DPRINT1. ([[sir_richard]])<br />
* We made certain assumptions in the "generic" files that are actually board-specific. For example, Versatile does indeed return a strange ULONG as the RTC time (seconds since 1970, I think), but TWL4030 on the ZOOM2 is normal and returns BCD RTC values just like the PC CMOS. Therefore, most of the "Generic" time.c code should move to versatile later. For now, use an IFDEF. ([[sir_richard]])<br />
* Likewise, not all platforms have a PS/2 controller like the Versatile. ZOOM2 for example has a keypad, so the generic "input" file shouldn't assume keyboard-only. As such, most of the code there should also be made specific, but for now, use an ifdef. ([[sir_richard]])<br />
* Although the soothing BSOD blue color is nice for LLB debugging, we'd really prefer to have black so it looks more natural on the eyes when booting to FreeLoader. As such, make the default backcolor black, but keep the old blue color for early testing, if enabled with a define. ([[sir_richard]])<br />
* Split up support between OMAP3 Beagle and ZOOM2. ([[sir_richard]])<br />
* Implement ZOOM2 ARMLLB board support package. TWL4030 read/write implemented (through basic I2C on the HS interface), RTC and Keypad Matrix implemented (through TWL4030), NEC WVGA Panel Initialization (through basic SPI interface on the MBPSI), basic clock setup and GPIO access for DSS/DISPC, setup DSS/DISPC for output on the NEC panel. UART implemented through Quad-UART NS16550 compatible chip (using CPORTlib). ([[sir_richard]])<br />
* Requires having been booted through x-loader+uboot as a kernel image. Will work on directly booting from NAND later. ([[sir_richard]])<br />
* Delete deprecated folder ([[sir_richard]])<br />
* Add missing UART functionality for ZOOM2. Leverages existing CPORT library. ([[sir_richard]])<br />
<br />
=== FREELDR ===<br />
* Fix CDs checksum computation ([[Pierre Schweitzer]])<br />
* Convert most of the trap and blue screen code from asm to C, use KTRAP_FRAME and KSPECIAL_REGISTERS on the stack, instead of using a bunch of global variables. Convert multiply used asm code chunks into macros. Use intel syntax for remaining asm. ([[Timo Kreuzer]])<br />
* 135 lines of C + 178 lines of asm, instead of 942 lines of asm ([[Timo Kreuzer]])<br />
* On ARM, don't turn on maximum, hyper, ultra-slow debugging and analysis features for the heap. This, for example, reduces FreeLoader's size by 32KB+ and speeds up boot by entire seconds, as the entire heap isn't zeroed out on startup. ([[sir_richard]])<br />
* May I humbly suggest you do the same on x86?! ([[sir_richard]])<br />
* Add startup file for ARM builds as well, so that _start can be the first function in the file. ([[sir_richard]])<br />
* Set load address for ZOOM2, and differentiate Beagle vs ZOOM2. ([[sir_richard]])<br />
* Add linker script for ARM as well. We drop the relocation section as it shouldn't be needed. ([[sir_richard]])<br />
* Add more keycodes. ([[sir_richard]])<br />
* Put ARM boot code in .init section to guarantee it goes first in the file, as per the linker script. ([[sir_richard]])<br />
* Define FreeLoader module for ARM. Differences with x86 are mostly due to the fact "bootloader" was unfortunately made an x86-specific module type, so we have to use "kernel" to get around that, which thankfully has remained portable. ([[sir_richard]])<br />
* VaToPa/PaToVa are assuming all architectures have VA at PA | KSEG0_BASE. This is not the case. On ZOOM2, DDR RAM starts at 0x80000000 for example, so KSEG0 == VA == PA. Use an ifdef do handle this. ([[sir_richard]])<br />
* Headless/EMS support is an x86-specific feature (at least for now, until the code is made portable). ([[sir_richard]])<br />
* Use PaToVa to set the Hive and NLS data pointers, instead of assuming that KSEG0_BASE | Pa is the correct answer for all architectures. ([[sir_richard]])<br />
* Cleanup firmware table setup and add support for being booted from a ZOOM2 ARMLLB, and set the correct file system buffer address for that board. ([[sir_richard]])<br />
* For *every single heap allocation*, there was code to request an entire *heap statistic run*! This is ridiculous and slows heap allocations tremendously. Additionally, it also assumes bstats was linked in, which it might not be if the flag wasn't set in bheap.c. Only enable this code if a special MM_DBG define is set. ([[sir_richard]])<br />
* Done originally for ARM, but I think x86 will appreciate the benefit too (and x86 can now go ahead and disable all those ridiculous debug settings that are turned on by default in bheap.c). ([[sir_richard]])<br />
* Fix RAM layout assumptions in ARM code. ([[sir_richard]])<br />
* poor little printf causes boot break, nuff said. ([[Sylvain Petreolle]])<br />
* Conditionally enable heap-related debugging and validation checks by an MM_DBG define for all architectures. Inspired by 49744. ([[Aleksey Bragin]])<br />
* Delete a duplicate line. ([[Dmitry Gorbachev]])<br />
* compile headless support only for x86 ([[Timo Kreuzer]])<br />
* Fix broken release version ([[Timo Kreuzer]])<br />
* Reduce difference with the cmake branch, mostly msvc and amd64 fixes. ([[Amine Khaldi]])<br />
* merge most spec file changes from cmake branch ([[Timo Kreuzer]])<br />
* add stub files to build ([[Timo Kreuzer]])<br />
* Add missing stubs.h ([[Timo Kreuzer]])<br />
* try to fix build ([[Timo Kreuzer]])<br />
<br />
==== FREELDR ====<br />
<br />
===== ARCH =====<br />
<br />
====== AMD64 ======<br />
* Add ksamd64.inc ([[Timo Kreuzer]])<br />
<br />
====== ARM ======<br />
* Our new target is the ZOOM2 OMAP3, instead of Beagle (but we'll keep testing both). ([[sir_richard]])<br />
* The text section is called ".text", not "text". This caused any ARM assembly to create a new section in the PE and waste 4KB. ([[sir_richard]])<br />
<br />
===== CACHE =====<br />
* The cache manager rewrite I started years ago has finally appeared in ([[Art Yerkes]])<br />
* ReactOS' trunk and although at this point it's not quite perfectly ([[Art Yerkes]])<br />
* integrated, it's enough to boot up the bootcd or livecd. To check out ([[Art Yerkes]])<br />
* the more mature original, check out arty-newcc-reactos, branch ([[Art Yerkes]])<br />
* arty-newcc on bitbucket.org . Amine Khaldi encouraged me quite a bit ([[Art Yerkes]])<br />
* to not give up on it, and was able to reach out and be an advocate ([[Art Yerkes]])<br />
* when i really wasn't able to. Others agree that the time has come to ([[Art Yerkes]])<br />
* begin removing the old cache manager. I expect the remaining problems ([[Art Yerkes]])<br />
* in the version going to trunk will be taken care of relatively ([[Art Yerkes]])<br />
* quickly. ([[Art Yerkes]])<br />
* The motivation for this effort lies in the particularly hairy ([[Art Yerkes]])<br />
* relationship between ReactOS' cache manager and data sections. This ([[Art Yerkes]])<br />
* code completely removes page sharing between cache manager and section ([[Art Yerkes]])<br />
* and reimagines cache manager as being a facility layered on the memory ([[Art Yerkes]])<br />
* manager, not really caring about individual pages, but simply managing ([[Art Yerkes]])<br />
* data section objects where caching might occur. ([[Art Yerkes]])<br />
* It took me about 2 years to do the first pass of this rewrite and most ([[Art Yerkes]])<br />
* of this year to fix some lingering issues, properly implement demand ([[Art Yerkes]])<br />
* paging in ReactOS (code which didn't come with this patch in a ([[Art Yerkes]])<br />
* recognizable form), and finish getting the PrivateCacheMap and ([[Art Yerkes]])<br />
* SharedCacheMap relationship correct. ([[Art Yerkes]])<br />
* Currently, the new ntoskrnl/cache directory contains an own ([[Art Yerkes]])<br />
* implementation of data file sections. After things have settled down, ([[Art Yerkes]])<br />
* we can begin to deprecate and remove the parts of ReactOS' section ([[Art Yerkes]])<br />
* implementation that depend on a close relationship with cache ([[Art Yerkes]])<br />
* manager. Eventually, I think that the extra code added to ([[Art Yerkes]])<br />
* ntoskrnl/cache/section will be removed and ReactOS' own sections will ([[Art Yerkes]])<br />
* replace the use of the special MM_CACHE_SECTION_SEGMENT in the cache ([[Art Yerkes]])<br />
* path. ([[Art Yerkes]])<br />
* Note also, that this makes all cache manager (and new section parts) ([[Art Yerkes]])<br />
* use wide file offsets. If my section code were to take over other ([[Art Yerkes]])<br />
* parts of the ReactOS memory manager, they would also benefit from ([[Art Yerkes]])<br />
* these improvements. ([[Art Yerkes]])<br />
* I invite anyone who wants to to peek at this code and fix whatever ([[Art Yerkes]])<br />
* bugs can be found. ([[Art Yerkes]])<br />
* KSUSER, KS, SYSAUDIO] ([[Johannes Anderwald]])<br />
* Make pin / node / allocator create requests compatible to ms by removing obsolete slash before object class ([[Johannes Anderwald]])<br />
* Return correct error code in ksuser's KsCreatePin ([[Johannes Anderwald]])<br />
* ReactOS KS is now able to create audio pins in Windows XP, though playback is not yet working ([[Johannes Anderwald]])<br />
* All changes except ksuser change has been verified to work with VBox 3.2.10 ([[Johannes Anderwald]])<br />
* KS user changes not tested yet as KSStudio not working in trunk ([[Johannes Anderwald]])<br />
<br />
===== DISK =====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Also added support for IOCTL_DISK_GET_DRIVE_GEOMETRY_EX. ([[Pierre Schweitzer]])<br />
* Hackplemented support for IOCTL_DISK_GET_PARTITION_INFO_EX. It will work fine for MBR partitions but will fake returns for GPT partitions. ([[Pierre Schweitzer]])<br />
* Implemented support for IOCTL_DISK_GET_LENGTH_INFO ([[Pierre Schweitzer]])<br />
<br />
===== RTL =====<br />
* Fixed a really stupid (and old) bug in RtlComputeCrc32(): ([[Pierre Schweitzer]])<br />
* First parameter is initial CRC32 checksum. And it's complete and not partial, thus it needs to be an ULONG and not an USHORT. ([[Pierre Schweitzer]])<br />
* This fixes CRC32 checksum computation with initial checksum (tested again Windows 2003 & Seven). ([[Pierre Schweitzer]])<br />
* Fix heap code to actually use the new lock instead of using RTL_CRITICAL_SECTION. ([[Aleksey Bragin]])<br />
* Fix a ROUND_UP and ROUND_DOWN macros: it is a *rule* to wrap every argument in braces in a macro, otherwise shit happens. A couple of days were lost fighting a strange bug in the new heap manager code where it was doing ROUND_UP(Heap + 1, PAGE_SIZE)... ([[Aleksey Bragin]])<br />
* Change RtlLockBootStatusData prototype according to http://cookp.com/%2F/thread/1111206/how%20can%20i%20detect%20last%20boot%20success ([[Eric Kohl]])<br />
* Carlo Bramini <carlo DOT bramix AT libero DOT it> ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix for render status bar after changing line wrap and flicker issue. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* for details. ([[Matthias Kupfer]]; {{bug|5635}})<br />
* Fix RtlSetUserFlagsHeap declaration and definition. ([[Aleksey Bragin]])<br />
* Fix a bug introduced Mon Dec 6 00:25:14 1999 UTC (10 years, 10 months ago) in revision 828. NtFreeVirtualMemory takes a pointer to the address to free, not the address instead. For the last 11 years, freeing the process parameter block resulted in freeing whatever the first value in the structure is, which is MaximumLength and initialized to 0x1000. ReactOS would then free whatever random address was in that area. In real Windows, it is illegal to free an allocation in the middle of the base address, and this call failed with the new VAD code. ReactOS either leaked the memory or freed random data, who knows. ([[sir_richard]])<br />
* Make the PPB live in the Heap instead of having its own virtual allocation, fixing the issue above. Stop rounding it to a PAGE_SIZE, and just use the space required. ([[sir_richard]])<br />
* Roel Messiant: Specify proper byte length of a unicode string. Fixes out of bounds access in actctx.c support code. No more half-cut active context stuff in debug logs. ([[Aleksey Bragin]])<br />
* Minor code changes to RTL (one would call them "optimisation"). Added some missing paged code. ([[Pierre Schweitzer]])<br />
* Plus added useful asserts (used to catch r50615 bug!) ([[Pierre Schweitzer]])<br />
* Merge changes to rtl from cmake branch. Mostly use portable interlocked functions ([[Timo Kreuzer]])<br />
* Merge MSVC fixes from cmake branch ([[Timo Kreuzer]])<br />
* Move page heap related code to heappage.c. ([[Aleksey Bragin]])<br />
<br />
===== SRC =====<br />
<br />
====== DRIVERS ======<br />
<br />
==== MESA32 ====<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Add missing breaks. (Samuel)<br />
<br />
=== CPL ===<br />
<br />
==== TIMEDATE ====<br />
* Fix French translation. ([[Sylvain Petreolle]])<br />
<br />
==== DDRAW ====<br />
<br />
=== DIRECTX ===<br />
* Jerome Gardou: Almost all of the ddraw->refcount winetests pass. One remains, due to the fact that IdirectDrawSurface::SetPalette is unimplemented. IDirectDraw::Createpalette is implemented too, but needs testing. There are no parameter checks. ([[Aleksey Bragin]]; {{bug|4909}})<br />
* Comments from me: The patch is not build-tested, however I did my best to merge it to existing ddraw and I prefer the actual code to be in the repository rather than hanging in bugzilla for years (last comment to the patch is dated 29.10.2009). ([[Aleksey Bragin]]; {{bug|4909}})<br />
<br />
===== D3D =====<br />
* Preparations for update to widl 1.3.4. ([[Eric Kohl]])<br />
<br />
==== WINE ====<br />
* Add iscntrlW() definition ([[Cameron Gutman]])<br />
* Fix non-x86 versions of Wine's push/pop exception frame macro. ([[sir_richard]])<br />
<br />
===== WINED3D =====<br />
* Update wined3d, ddraw, d3d8 and d3d9 to Wine 1.3.4. ([[Kamil Hornicek]])<br />
* Our CRT causes duplicate definitions, when trying to use it as fallback for missing msvcrt imports. Work around this limitation by adding powf and sqrtf wrappers for amd64 builds ([[Timo Kreuzer]])<br />
<br />
=== NTDLL ===<br />
* Use LOCK instead of lock for SList assembly functions, this is a conditional such that on UP, "lock" instruction won't be generated. ([[sir_richard]])<br />
* Apply the special begin/fault/resume lablels to the user-mode SList functions. Access faults can happen there due to a bug in the Windows algorithm, and Mm will need to handle that. ([[sir_richard]])<br />
* Fix loading of GlobalFlags in Image File Execution Options. I really wonder who had that brilliant idea that bitwise flags would be stored as a string in the registry. ([[Aleksey Bragin]])<br />
* If there is a GlobalFlags value specified in the registr for that specific image, it means that value should overwrite NtGlobalFlags. Fix that too (previously it was ORing which made no sense). ([[Aleksey Bragin]])<br />
* Respectively fix incorrect data type for GlobalFlags in ReactOS registry. ([[Aleksey Bragin]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* LoadImageFileExecutionOptions() improvements: ([[Aleksey Bragin]])<br />
* Apply certain heap flags if the process is being debugged (only if NtGlobalFlags is not overridden). ([[Aleksey Bragin]])<br />
* Implement enabling page heap and reading image-specific configuration values. ([[Aleksey Bragin]])<br />
* Add page heap configuration values to the Heap Manager. ([[Aleksey Bragin]])<br />
* Fix a typo which always set page heap enabled to true. ([[Aleksey Bragin]])<br />
* Load image execution options before creating process heap (so that GlobalFlag overrides can be taken into account). ([[Aleksey Bragin]])<br />
* Make LdrQueryImageFileExecutionOptions avoid heap usage when possible (and when it's not possible, fail with out of memory status). ([[Aleksey Bragin]])<br />
* Fixes a dramatic count of ~100 failures in "kernel32_winetest heap". ([[Aleksey Bragin]])<br />
* Fixed build ([[Pierre Schweitzer]])<br />
* Don't access unitialized memory. Caught thanks to a new heap manager, and this fixes all weird actctx exceptions in kernel32_winetest heap. ([[Aleksey Bragin]])<br />
* Fix amd64 build. ([[Kamil Hornicek]])<br />
* Attempt nr. 2: link wined3d to crt on amd64 build. ([[Kamil Hornicek]])<br />
* Fix LdrVerifyImageMatchesChecksum() prototype. ([[Aleksey Bragin]])<br />
* Move RtlPcToFileHeader to rtl/libsupp.c ([[Timo Kreuzer]])<br />
* Raise harderror and terminate process when the image is of a foreign architecture. ([[Timo Kreuzer]])<br />
* Fix harderror status on machine type mismatch and pass file name. ([[Timo Kreuzer]])<br />
<br />
==== ADVAPI32 ====<br />
<br />
=== WIN32 ===<br />
* Roel Messiant: Properly handle STATUS_BUFFER_TOO_SMALL in RegEnumValueW implementation. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Katayama Hirofumi: Use DataLength field in RegEnumValueW instead of DataOffset. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Roel Messiant: Test behaviour in Vista and apply same fix to RegEnumValueA. ([[Aleksey Bragin]]; {{bug|2492}})<br />
* Implement LsaCreateAccount(), LsaOpenAccount() and LsaSetInformationPolicy(). ([[Eric Kohl]])<br />
* Implement LsaAddPrivilegesToAccount(), LsaCreateTrustedDomain(), LsaDeleteTrustedDomain() and LsaOpenTrustedDomainByName(). ([[Eric Kohl]])<br />
* Move the Encrypted File System (EFS) functions into their own file. ([[Eric Kohl]])<br />
* Roel Messiant: Fix short-circuit evaluation. ([[Aleksey Bragin]]; {{bug|5677}})<br />
* Implement LsaAddAccountRights(), LsaQueryTrustedDomainInfoByName() and LsaRemoveAccountRights(). ([[Eric Kohl]])<br />
* ConvertStringSidToSidW: Stop writing 1 subauthority too much. Fixes a DWORD sized buffer overflow. Should fix bug #5764. ([[Roel Messiant]])<br />
* ConvertStringSidToSidW: Don't leak an allocated SID in case of failure. ([[Roel Messiant]])<br />
* Move file encryption functions from crypt/crypt.c to misc/efs.c. ([[Eric Kohl]])<br />
<br />
==== ATL ====<br />
* Ettl Martin: Make CComCriticalSection destructor virtual. ([[Aleksey Bragin]]; {{bug|4975}})<br />
<br />
==== AUTHZ ====<br />
* Fix AuthzReportSecurityEvent, AuthzInitializeObjectAccessAuditEvent and AuthzInitializeObjectAccessAuditEvent2 prototypes. ([[Amine Khaldi]])<br />
* Missed these. ([[Amine Khaldi]])<br />
* Another dll addition to cmake, another rc file fix. ([[Daniel Reimer]])<br />
<br />
==== AVIFIL32 ====<br />
* Split utf8 resources into theit own file (MSVC compatibility) ([[Timo Kreuzer]])<br />
<br />
==== CFGMGR32 ====<br />
* Add missing functions. ([[Eric Kohl]])<br />
* Add forwarders to functions that are exported by setupapi.dll. ([[Eric Kohl]])<br />
* Mark deprecated functions. ([[Eric Kohl]])<br />
<br />
==== COMCTL32 ====<br />
* Fix bitmap resources. They were not very valid. Windows didn't even load them. Probably created with some linux tool *cough* ([[Timo Kreuzer]])<br />
* Fixes part of the broken icons. Not the pink ones though. ([[Timo Kreuzer]])<br />
* Revert 45676 ([[Johannes Anderwald]])<br />
* It appears that the definitions for IID_IUnknown differ for kernel mode COM and user mode COM ([[Johannes Anderwald]])<br />
<br />
==== DEVMGR ====<br />
* DisplayDevicePropertyText: Use full DWORD value, not just one byte of it (CID 1803). ([[Roel Messiant]])<br />
<br />
==== GDI32 ====<br />
* Don't make the wrong assumption that POINT and POINTL are identical. ([[Timo Kreuzer]])<br />
* remove useless memory reallocation : the buffer size must be dword aligned, we have no way to guarantee the buffer location will be. ([[Jérôme Gardou]])<br />
* pass BITMAPINFO pointer size to NtGdiGetDIBitsInternal ([[Jérôme Gardou]])<br />
* Consistent formatting, no code change. ([[Jérôme Gardou]])<br />
* Implement GdiGetDcAttr. Just for convenience / cleaner code. ([[Timo Kreuzer]])<br />
* Move EFLOAT handling in seperate file, its x86 specific ([[Timo Kreuzer]])<br />
* Implement CombineTransform fully in usermode instead of forwarding to NtGdiCombineTransform ([[Timo Kreuzer]])<br />
* Implement MatrixToXForm ([[Timo Kreuzer]])<br />
* Implement GdiTransformPoints ([[Timo Kreuzer]])<br />
* GDI32] ([[Timo Kreuzer]])<br />
* Check paramters in CombineTransform ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf ([[Timo Kreuzer]])<br />
* Fix broken portable implementation of _lrintf, 2nd try :) ([[Timo Kreuzer]])<br />
<br />
==== IPHLPAPI ====<br />
* Rewrite name server enumeration routines ([[Johannes Anderwald]])<br />
* Check if static dns entries are present before checking for dynamic dns entries ([[Johannes Anderwald]])<br />
* Fixes static dns entries ([[Johannes Anderwald]])<br />
* Remove conditional redefine of DPRINT. Wine debug channels at this point, and we have NDEBUG. ([[Roel Messiant]])<br />
* Use TRACE instead of DbgPrint. Gets rid of the "Status 2" spam when no static nameserver is in the registry. ([[Roel Messiant]])<br />
<br />
==== KERNEL32 ====<br />
* Winnls.h can be included now. ([[Kamil Hornicek]])<br />
* Igor Paliychuk: Fix properly showing genitive names from NLS data by applying a missed Wine sync. ([[Aleksey Bragin]]; {{bug|5556}})<br />
* NtCreateSection should not be called with merely SEC_FILE: this says nothing about what kind of operation should be done (a commit, a reserve, etc?). Use SEC_COMMIT instead to specify correct operation. This works in ReactOS as of now, but would've failed after the NtSection* API rewrite. ([[sir_richard]])<br />
* CreateFileMappingW should also accept/allow SEC_LARGE_PAGES, even if we don't suppport it yet. ([[sir_richard]])<br />
* Revert incorrect changes from 34404 and 40910: RtlSetUserFlagsHeap() doesn't set usual heap flags, it sets special user-settable heap entry flags. With the new heap manager such usage corrupts heap integrity (not to say prototype of this function is incorrect). ([[Aleksey Bragin]])<br />
* RtlReAllocateHeap() is supposed to copy user values and flags so there is no need to set them afterwise again. ([[Aleksey Bragin]])<br />
* Fix a typo in comments. ([[Aleksey Bragin]])<br />
* Print delphi exception with the Exception code 0xeedfade, we were previously only checking for 0xeedface, maybe an older value. ([[Timo Kreuzer]])<br />
* Remove the old version of WaitNamedPipeW. ([[Eric Kohl]])<br />
* This patch fixes the broken wait pipe code. It was written and tested on r49458 because later revisions do not work for me. ([[Eric Kohl]])<br />
* Added real implementation of SetLastError() (instead of forwarding to NTDLL) ([[Pierre Schweitzer]])<br />
* Implemented BaseSetLastNTError() ([[Pierre Schweitzer]])<br />
* Renamed Basep8BitStringToCachedUnicodeString() to Basep8BitStringToStaticUnicodeString() and sightly changed its implementation ([[Pierre Schweitzer]])<br />
* Fixed implementation of LoadLibraryExA() & DisableThreadLibraryCalls() using those changes ([[Pierre Schweitzer]])<br />
* This is matching w2k3 implementation. This is of course a WIP. ([[Pierre Schweitzer]])<br />
* Updates for Rapps Download Database. ([[Daniel Reimer]])<br />
* Revert r49761 on Pierre's request ([[Timo Kreuzer]])<br />
* Fix heap corruptions in MoveFileWithProgress ([[Johannes Anderwald]])<br />
* Fixes kernel32_winetest change crash ([[Johannes Anderwald]])<br />
* Introduced in rev 18073 (25.Sept 2005) ([[Johannes Anderwald]])<br />
* ReadDirectoryChangesW: Treat the OVERLAPPED structure as an IO_STATUS_BLOCK, not one of its fields. ([[Roel Messiant]])<br />
<br />
==== LSASRV ====<br />
* Add ServiceInit() stub and call it from lsass. ([[Eric Kohl]])<br />
* Change the calling convention of all LSA-RPC function to stdcall. ([[Eric Kohl]])<br />
* Export some of the LSA-RPC functions. ([[Eric Kohl]])<br />
<br />
==== MSI ====<br />
* Fix freed memory access and fix freeing of invalid pointer. (from http://www.winehq.org/pipermail/wine-patches/2010-October/094849.html ) ([[Aleksey Bragin]]; {{bug|3755}})<br />
<br />
==== MSVCRT ====<br />
* Don't export _matherr ([[Timo Kreuzer]])<br />
* Apply a hack to msvcrt spec file to avoid duplicate definition of atexit. Mingw-w64 has an identical hack. ([[Timo Kreuzer]])<br />
* No reason for wcsxfrm to be a stub when code is here. ([[Sylvain Petreolle]])<br />
<br />
==== NETCFGX ====<br />
* GetPerAdapterInfo requires IP_PER_ADAPTER_INFO struct ([[Johannes Anderwald]])<br />
* Fix reading static dns entries ([[Johannes Anderwald]])<br />
* Delete static name server key, when changing dns servers to automatic (dhcp) ([[Johannes Anderwald]])<br />
* Don't delete DhcpNameServer key yet, as more interaction is needed with dhcp service when changing from static dns to dynamic dhcp ([[Johannes Anderwald]])<br />
* Should finally fix static dns when dhcp is active ([[Johannes Anderwald]])<br />
* Fix case where there is only one static dns server set ([[Johannes Anderwald]])<br />
<br />
==== OLEACC ====<br />
* Use an actual entrypoint. Needed to record the instance handle, used by various function that access resources of the module. Should fix oleacc:main winetest. ([[Roel Messiant]])<br />
<br />
==== RPCRT4 ====<br />
* Add a missing format type to unmarshall_discriminant(). ([[Eric Kohl]])<br />
<br />
==== SETUPAPI ====<br />
* Implement CM_Get_Device_ID_List_ExW(). ([[Eric Kohl]])<br />
* SetupDiClassNameFromGuidExW: Rewrite to prevent a buffer overflow and pass additional winetests. Should fix bug #5474. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExA: Return the required buffer size in failure cases. ([[Roel Messiant]])<br />
* Bind to the PNP service using the Vista-compatible pipe. ([[Roel Messiant]])<br />
* SetupDiClassNameFromGuidExW: Simplify interaction with registry. ([[Roel Messiant]])<br />
* SetupDiCreateDeviceInfoW: Check for correct error value. ([[Roel Messiant]])<br />
* SetupDiGetClassDescriptionExW: Rewrite to return the correct required size and prevent WCHAR sized buffer overflow. ([[Roel Messiant]])<br />
* SetupDiGetClassDevsExW: Return INVALID_HANDLE_VALUE instead of NULL in failure case. ([[Roel Messiant]])<br />
* Implement CMP_WaitServicesAvailable(). ([[Eric Kohl]])<br />
* CM_Get_First_Log_Conf_Ex(): Create a LOG_CONF_INFO struct only if plcLogConf is not NULL. ([[Eric Kohl]])<br />
* Fix a warning. ([[Eric Kohl]])<br />
* Implement CM_Is_Version_Available and CM_Is_Version_Available_Ex. ([[Eric Kohl]])<br />
* Add resource descriptor function stubs. ([[Eric Kohl]])<br />
<br />
==== SHELL32 ====<br />
* Enable code as we support now IOCTL_DISK_GET_LENGTH_INFO ([[Johannes Anderwald]])<br />
* IOCTL_DISK_GET_LENGTH_INFO implemented in 49369 ([[Johannes Anderwald]])<br />
* Implement copy / paste for files when tree view is present ([[Johannes Anderwald]])<br />
* Don't add shortcuts / executables to recent file list ([[Johannes Anderwald]])<br />
* Add NULL checks in IShellView and IDropTarget implementations. Should fix bug #5780. ([[Roel Messiant]])<br />
<br />
==== SHLWAPI ====<br />
* Explicitly add msvcrt before ntdll to use it's *sprintf functions. Fixes bug 5557 ([[Timo Kreuzer]])<br />
<br />
==== SYSSETUP ====<br />
* SC Manager needs SC_MANAGER_ENUMERATE_SERVICE access right to be able to open a service ([[Jérôme Gardou]])<br />
* Add debug prints to help tracking down the "EnableUserModePnpManager()" issue ([[Jérôme Gardou]])<br />
<br />
==== USER32 ====<br />
* Remove the last reactos-only export from user32 (PrivateCsrssManualGuiCheck) ([[Giannis Adamopoulos]])<br />
* One more leftover to add. Now we test for both Local and Global hooks in user32. This will force any message sent to win32k if there are any Global hookers so we loose in performance. We need to rethink our usage of these Global hookers in our code. ([[James Tabor]])<br />
* Fix an over site and copy the return data back to the kernel. ([[James Tabor]])<br />
* Sync up with wine 1.2 rc6 menu so it will pass the tests from rev 47939. ([[James Tabor]])<br />
* Fixed export for PrintWindow and 5609. ([[James Tabor]]; {{bug|5466}})<br />
* Remove a bunch of uneeded code in GetMessage and PeekMessage that copyied the lparam in a new buffer and did unicode to ansi convertions. It is not needed because they don't receive messages with pointers any more ([[Giannis Adamopoulos]])<br />
* Fix all the user32 wine win test_parent_owner tests. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 30 failures dealing with rect size, Class and Title names. ([[James Tabor]])<br />
* Controls: Set fnids for the user client controls. ([[James Tabor]])<br />
* Start creeping in more Left to Right support, readying up for the next wine User32 controls port and test sync. Code is based on wine, credit them for any breakages. 8^P Our positions are off by 103 x 122 in some test cases, anyone having an idea please chime in. ([[James Tabor]])<br />
* Happy New Year! ([[Aleksey Bragin]])<br />
* Dear ReactOS team, you're the best. ([[Aleksey Bragin]])<br />
* Use new wsprintf library, remove old code (536 lines) ([[Timo Kreuzer]])<br />
* Fixes output of %I64, for example dxdiag ([[Timo Kreuzer]])<br />
* Implement sending EVENT_SYSTEM_DIALOGSTART event. It will be used by rosautotest ([[Giannis Adamopoulos]])<br />
* Fix bug in CreateIconIndirect ([[Timo Kreuzer]])<br />
* implement get_icon_size ([[Timo Kreuzer]])<br />
* use unmodified wine code for STATIC_PaintIconfn ([[Timo Kreuzer]])<br />
* Fix CreateIcon and CreateIconIndirect. Fixes user32_winetest:cursoricon. (Yes we execute less tests, but that is correct! wine probably only passes these tests by chance) ([[Timo Kreuzer]])<br />
* TRANSLATION: fix typo in shutdown. ([[Sylvain Petreolle]])<br />
<br />
==== WINHTTP ====<br />
* Update rapps database ([[Daniel Reimer]])<br />
<br />
==== WININET ====<br />
* Add a ROS-specific change that was missed during the last winesync to fix winsock error handling ([[Cameron Gutman]])<br />
* Remove the CP_UNIXCP definition ([[Cameron Gutman]])<br />
* Use WSASetLastError instead of errno in inet_ntop.c ([[Cameron Gutman]])<br />
* Thanks to IRC:igorko for pointing out the bug ([[Cameron Gutman]])<br />
<br />
==== WINMM ====<br />
* MCI_Close: Use UINT instead of UINT16 for the device id (CID 1804). ([[Roel Messiant]])<br />
<br />
==== NMIDEBUG ====<br />
<br />
== DRIVERS ==<br />
<br />
=== BASE ===<br />
* Fix and cleanup some code, and enable NMI support on the boot/install CD as well. ([[sir_richard]])<br />
<br />
==== ACPI ====<br />
<br />
=== BUS ===<br />
* Fix ACPI warnings (Love)<br />
* Based on a (Love)<br />
<br />
==== FASTFAT ====<br />
<br />
=== FILESYSTEMS ===<br />
* Fix for a buffer overflow and then a buffer overrun (if ever it fixes something) ([[Pierre Schweitzer]])<br />
* The way filenames are handled for FAT entries should be REALLY simplified. This would prevent such errors. ([[Pierre Schweitzer]])<br />
* Thus, there are more magic values in fastfat driver than everywhere else in ReactOS which makes proper fixing hard (impossible?). ([[Pierre Schweitzer]])<br />
* Finally, the code for that fix is crappy, but I don't care, it fits the rest of the fastfat driver code. ([[Pierre Schweitzer]])<br />
* pissed off* ([[Pierre Schweitzer]])<br />
* Fixes CID #2502 ([[Pierre Schweitzer]])<br />
* MagicValue--; ([[Pierre Schweitzer]])<br />
* ThanksTo(James, Amine); ([[Pierre Schweitzer]])<br />
* EOF */ ([[Pierre Schweitzer]])<br />
* Remove unused vars ~ ([[Pierre Schweitzer]])<br />
<br />
==== FASTFAT_NEW ====<br />
* Substantially improve FatiCreate routine, to handle previously unhandled cases, fix wrong code structure in some places, add a stub for further implementation of a new file creation branch. ([[Aleksey Bragin]])<br />
* Hackskip setting delay-on-close for a file for now (with a debug print reminder!) ([[Aleksey Bragin]])<br />
* Some fixes to the previous commit. ([[Aleksey Bragin]])<br />
* Don't use same name for a local boolean var and global enum. Spotted by Pierre. ([[Aleksey Bragin]])<br />
<br />
==== NPFS ====<br />
* Rename DEVICE_EXTENSION to NPFS_VCB. ([[Eric Kohl]])<br />
* Add a type variable to distinguish FCBs and CCBs for device, directory or pipe. ([[Eric Kohl]])<br />
* Attach an FCB to the VCB that represents the root directory of the file system and implement an open routine for the root directory. ([[Eric Kohl]])<br />
* Make NpfsWaitPipe work when it is called for the root directory. ([[Eric Kohl]])<br />
* Add an FCB that represents the file system (volume/device) and support absolute and relative open, cleanup and close. ([[Eric Kohl]])<br />
* Read and write IRPs must fail if the caller is not a pipe but a directory or a device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a directory or device. ([[Eric Kohl]])<br />
* Fail attempts to connect or disconnect a pipe by the client. ([[Eric Kohl]])<br />
* Enable the driver to open a directory using a relative path name. ([[Eric Kohl]])<br />
* Add NpfsDirectoryControl routine in order to enumerate pipes. ([[Eric Kohl]])<br />
* Use NpfsGetFcb and NpfsGetCcb to retrieve the FCB or CCB and use SEH to protect these routines. ([[Eric Kohl]])<br />
* Add support for FileFullDirectoryInformation and FileBothDirectoryInformation. ([[Eric Kohl]])<br />
* Fix an off-by-one bug in the buffer size calculation. ([[Eric Kohl]])<br />
* Zero-initialize the return buffer. ([[Eric Kohl]])<br />
* Initialize only the required parts of the return buffer. This will enable the driver to return information about multiple pipes in a single request. ([[Eric Kohl]])<br />
* Check if the whole pipe name fits into the return buffer. Return STATUS_BUFFER_OVERFLOW if it does not fit and copy only a part of the file name in this case. ([[Eric Kohl]])<br />
* Return multiple file entries in a single request. ([[Eric Kohl]])<br />
<br />
==== I8042PRT ====<br />
<br />
=== INPUT ===<br />
* Fix potential buffer overflow ([[Johannes Anderwald]])<br />
* Calculate packet type according to PS/2++ spec (CID 1810). ([[Roel Messiant]])<br />
* Fix technical detail in comment to match spec. ([[Roel Messiant]])<br />
<br />
==== KS ====<br />
<br />
=== KSFILTER ===<br />
* Simplify KsTopologyPropertyHandler by using KspReadMediaCategory helper ([[Johannes Anderwald]])<br />
* Return correct status code in case of an overflow ([[Johannes Anderwald]])<br />
* Fix PciFindParentPciFdoExtension bug found by sir_richard "Early break would leave the lock held" ([[evb]])<br />
* Fix PciGetHackFlags for setup found by sir_richard "Setup currently doesn't have a correct registry" ([[evb]])<br />
* Fix DriverEntry for setup like PciGetHackFlags ([[evb]])<br />
* Fix DriverEntry PciOpenKey check found by sir_richard "PciOpenKey returns a BOOLEAN, not an NTSTATUS" ([[evb]])<br />
* Stop call PciGetAcpiTable found by sir_richard "PciGetAcpiTable is really broken, can lead to infinite loops, and also corrupts memory. We need to fix stefan's bugs" ([[evb]])<br />
* Implement not root FDO code in PciScanBus and support PCI_HACK_ONE_CHILD ([[evb]])<br />
* Implement multiple FDO exist code in PciAddDevice so PCI Bridge support now ([[evb]])<br />
* Implement PciAreBusNumbersConfigured for PCI Bridge support ([[evb]])<br />
* Hack FDO Start Device by sir_richard "The root FDO does send boot resources if PCIX is installed properly, this code will be needed" ([[evb]])<br />
* Do PCI_BUS_DRIVER_INTERNAL bugcheck by sir_richard "I have hacked KeBugCheckEx to ignore this for now, until PnP is fixed" ([[evb]])<br />
* Implement not root FDO code in PciInitializeArbiters ([[evb]])<br />
* Implement PciCacheLegacyDeviceRouting, PciFindPdoByLocation used by PciAssignSlotResources ([[evb]])<br />
* Make PciTranslateBusAddress do the stub work ([[evb]])<br />
* PciAssignSlotResources disabled because ReactOS not support IoAssignResources ([[evb]])<br />
* Implement PPBridge_ChangeResourceSettings ([[evb]])<br />
* PCIX driver nearly working now. ([[evb]])<br />
* Fix KSPROPERTY_PIN_CATEGORY handler when no category is provided ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_PIN_NAME handler when there is no name provided. Use fallback pin category. If there is no category provided, fail with correct error code ([[Johannes Anderwald]])<br />
* Fix KSPROPERTY_TOPOLOGY_NAME handler by checking if there is a node name provided. If not use node type as fallback. ([[Johannes Anderwald]])<br />
* Return correct error code when property request id is out of bounds ([[Johannes Anderwald]])<br />
* Fix property set support handler for topology nodes ([[Johannes Anderwald]])<br />
* Check if the driver supports a basic support handler. In that case return the basic support handler ([[Johannes Anderwald]])<br />
* Replace all ms portcls hacks by one. ([[Johannes Anderwald]])<br />
* MS Portcls is now working in ReactOS (which is nice for testing audio related bugs) ([[Johannes Anderwald]])<br />
* Fix several bugs in KsProbeStreamIrp ([[Johannes Anderwald]])<br />
* If requestor is KernelMode - just save a pointer in Irp->AssociatedIrp.SystemBuffer (currently not used) ([[Johannes Anderwald]])<br />
* If requestor is UserMode mark irp as buffered. Also set Flag IRP_INPUT_OPERATION when the ioctl is IOCTL_KS_READ_STREAM. This is important to propagate modifications to KSSTREAM_HEADERS (in particular DataUsed member) ([[Johannes Anderwald]])<br />
* ReactOS KS can now be used in WinXP in combination with KSStudio. In order to make it fully work, ks needs to implement software bus functions ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Perform irp completion in dedicated function ([[Johannes Anderwald]])<br />
* Move Software Bus function into own file ([[Johannes Anderwald]])<br />
* Remove debugging code which caused crashes ([[Johannes Anderwald]])<br />
* Partly implement IKsProcessingObject interface for filter ([[Johannes Anderwald]])<br />
* Fix check in FindMatchingCreateItem function ([[Johannes Anderwald]])<br />
* Implement software bus enumerator functions ([[Johannes Anderwald]])<br />
* Less spam, more information ([[Johannes Anderwald]])<br />
* Robert Horvath: Always limit destLen to MAX_PATH (modified to an if condition by me). ([[Aleksey Bragin]]; {{bug|5861}})<br />
* Robert Horvath: Modify GetFullPathName to follow Windows behaviour more closely. Reduces kernel32:path winetests by 4, and fixes all GetFullPathName tests. ([[Aleksey Bragin]]; {{bug|5865}})<br />
* Oleg Baikalow: TDI exported function prototypes are documented in WDK 7, so use them in our driver instead of old, probably NT4-aged stubs full of unknown variables. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't use psdk's tdi.h but use a real tdikrnl.h (adding a _TDI_ global define so it's recognized as a tdi driver itself). ([[Aleksey Bragin]])<br />
<br />
==== SWENUM ====<br />
* Implement SwDispatchPower, SwDispatchPower ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Fix build ([[Johannes Anderwald]])<br />
<br />
=== MULTIMEDIA ===<br />
<br />
==== AUDIO ====<br />
* Add i/o completion routine, which delivers the number of bytes written / read ([[Johannes Anderwald]])<br />
* Close event handle, after the overlapped request has been handled. ([[Johannes Anderwald]])<br />
* Audio stack no longer leaks ~ 50 event handles per second ([[Johannes Anderwald]])<br />
<br />
===== SNDBLST.OLD =====<br />
<br />
====== TEST ======<br />
* Disable DroidSansFallback.ttf. ([[Sylvain Petreolle]])<br />
* Enable DroidSansFallback.ttf. ([[Sylvain Petreolle]])<br />
* Disable DroidSansFallback.ttf. ([[Sylvain Petreolle]])<br />
* Enable DroidSansFallback.ttf. ([[Sylvain Petreolle]])<br />
* Update rapps database and add encoded's VMWare Sound driver. ([[Daniel Reimer]])<br />
* Test commit ([[Daniel Reimer]])<br />
* revert it... test commit... ([[Daniel Reimer]])<br />
<br />
==== NDIS ====<br />
<br />
=== NETWORK ===<br />
* Disable timer queuing code (hackfix for various network driver failures) ([[Cameron Gutman]])<br />
* Also needs to be merged into 0.3.12 ([[Cameron Gutman]])<br />
* Add a missing spin lock release in a failure case ([[Cameron Gutman]])<br />
* Fix incomplete copying of NDIS 5.1 miniport characteristics ([[Cameron Gutman]])<br />
* Fix sizeof typo ([[Cameron Gutman]])<br />
* CID 10400 ([[Cameron Gutman]])<br />
<br />
==== TDI ====<br />
* Oleg Baikalow: Implement basic event and delayed event support functions for CTE. Structure names are made up, but their contents should be compatible with what Windows 2003 tdi.sys uses. Formatting and coding style fixes by the committer. ([[Aleksey Bragin]])<br />
* Move CTE routines into corresponding events.c and timer.c source code files before further applying Oleg's patches. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Finish CTE timers. CTE implementation is complete now. ([[Aleksey Bragin]])<br />
* Define M_PI_4 too. ([[Aleksey Bragin]])<br />
<br />
===== CDROM =====<br />
<br />
=== STORAGE ===<br />
<br />
==== CLASS ====<br />
* Reflect changes in Class2. ([[Pierre Schweitzer]])<br />
* Add Windows Server 2003 DDK Cdrom Sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* They both build and run fine, but PCIIDE(x) must be completed/enabled, and atapi must be rewritten to be WDM-compliant. ([[sir_richard]])<br />
* The previous commit message had a typo, these are the Windows XP DDK Samples, not the Server 2003 DDK samples !!! ([[sir_richard]])<br />
<br />
===== CLASS2 =====<br />
* Switch use from DISK_GEOMETRY to DISK_GEOMETRY_EX. It's needed to handle some Windows 2003's kernel routines. ([[Pierre Schweitzer]])<br />
<br />
==== CLASSPNP ====<br />
* Add Windows Server 2003 DDK ClassPNP sample, under the license and terms of the Windows Server 2003 DDK. ([[sir_richard]])<br />
* Convert to spec ([[Timo Kreuzer]])<br />
* basetsd.h] ([[Timo Kreuzer]])<br />
* add POINTER_SIGNED, POINTER_UNSIGNED, SPOINTER_32, UPOINTER_32 ([[Timo Kreuzer]])<br />
* Fix a typo in the spec file ([[Timo Kreuzer]])<br />
* remove debug prints ([[Johannes Anderwald]])<br />
* dedicated to christoph ([[Johannes Anderwald]])<br />
* Use correct type in sizeof expression (CID 1646 and 10401). ([[Roel Messiant]])<br />
* Simplify signature define (CID 3653 and 3654). ([[Roel Messiant]])<br />
* Remove funky 0xFF characters. ([[Roel Messiant]])<br />
<br />
==== IDE ====<br />
<br />
===== UNIATA =====<br />
* Update uniata to 0.40a1. Prepared by Samuel Serapion, edited by me. ([[Aleksey Bragin]]; {{bug|5762}})<br />
* RTL} ([[Timo Kreuzer]])<br />
* Replace RtlMoveMemory x86 asm code with the code from CRT's memmove, which is better. Now we can close bug #1941 ([[Timo Kreuzer]])<br />
* Marco Radossevich <fwdprojects=at=email=dot=it>, a.k.a. forart: ([[Dmitry Gorbachev]])<br />
* Just two important examples that involved my contributions: UniATA & FullFAT." ([[Dmitry Gorbachev]])<br />
* No code changes. ([[Dmitry Gorbachev]])<br />
* See thread <http://www.reactos.org/forum/viewtopic.php?f=14&t=8809> for more details. ([[Dmitry Gorbachev]])<br />
<br />
==== SCSIPORT ====<br />
* Remove some code duplication and fix a bug of copying the same interrupt information twice for a device with 2 interrupts (instead of the info for interrupt 1 then the info for interrupt 2) effectively making initialization fail because the resource allocation code will detect a conflict with itself ([[Cameron Gutman]])<br />
* Add apitests to reactos.dff ([[Timo Kreuzer]])<br />
* Implement support for 2 interrupts ([[Cameron Gutman]])<br />
* Halfplement support for 2 DMA channels ([[Cameron Gutman]])<br />
* Set/Read the CM_RESOURCE_DMA flags ([[Cameron Gutman]])<br />
* Remove a duplicate spin lock initialization ([[Cameron Gutman]])<br />
* Partially tested with 2 interrupts in use but UniATA seems to be broken because it registers both interrupts for each channel even though they are not sharable which causes it to fail when initializing the secondary IDE channel ([[Cameron Gutman]])<br />
* Fix a couple of typos in the DMA code from my last commit ([[Cameron Gutman]])<br />
* ScsiPortConvertPhysicalAddressToUlong takes an ULONG_PTR as input, fix function accordingly and do the "calculation" directly instead of calling RtlConvertUlongToLargeInteger ([[Timo Kreuzer]])<br />
* Spotted by Samuel. ([[Timo Kreuzer]])<br />
* ScsiPortDeviceControl: Slight improvement to buffer length validation. Return failure status on a handful of failure cases. Prevents buffer overruns in user code. ([[Roel Messiant]])<br />
<br />
=== USB ===<br />
<br />
==== NT4COMPAT ====<br />
<br />
===== USBDRIVER =====<br />
* Fix a bug that resulted in us only copying half of the old keyboard data ([[Cameron Gutman]])<br />
* CID 10402 ([[Cameron Gutman]])<br />
<br />
==== DISPLAYS ====<br />
<br />
=== VIDEO ===<br />
<br />
===== VGA_NEW =====<br />
* avoid buffer overrun, CID 11049 ([[Jérôme Gardou]])<br />
* Brought to light by vicmarcal ([[Jérôme Gardou]])<br />
* Use strlen() istead of sizeof() to get the string length from a pointer. CID 10403. ([[Timo Kreuzer]])<br />
<br />
==== MINIPORT ====<br />
<br />
===== VMX_SVGA =====<br />
* Convert a pointer to a WCHAR string to an array of WCHARs to fix sizeof calculation. CID 10404 ([[Timo Kreuzer]])<br />
<br />
==== VIDEOPRT ====<br />
* Add sanity checks ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Implement VideoPortGetCommonBuffer, VideoPortLockPages ([[Johannes Anderwald]]; {{bug|5629}})<br />
* Yugoslavia no longer exists for some time, replaced by Serbia as successor of country code (phone) ([[Matthias Kupfer]])<br />
* Add parameter checks to DeleteEvent and WaitForSingleObject. ([[sir_richard]])<br />
* Fix WaitForSingleObject. It was waiting on the Object paramter itself -- which is the VideoPrt/ENG Event, not a real object, we have to wait on ->pKEvent instead. ([[sir_richard]])<br />
* Fix WaitForSingleObject round two, it was returning the NT_STATUS, while VideoPrt should return VP_STATUS/Win32 error codes. ([[sir_richard]])<br />
<br />
=== WDM ===<br />
<br />
==== AUDIO ====<br />
<br />
===== BACKPLN =====<br />
<br />
====== PORTCLS ======<br />
* Store Miniport object in the device descriptor ([[Johannes Anderwald]])<br />
* Fixes assert in NVidia NForce Audio Driver ([[Johannes Anderwald]])<br />
* Fix check if the pin can be instantiated another time ([[Johannes Anderwald]])<br />
* Remove hack to close old ([[Johannes Anderwald]])<br />
* Add function FreePin to remove its old reference ([[Johannes Anderwald]])<br />
* Fix memory leaks / reference leaks in WavePci pin implementation ([[Johannes Anderwald]])<br />
* Fix memory / reference leaks in WavePci Close implementation ([[Johannes Anderwald]])<br />
* Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM ([[Johannes Anderwald]])<br />
* Remove silence buffer hack ([[Johannes Anderwald]])<br />
* Stub DRM Property Handler ([[Johannes Anderwald]])<br />
* Before stopping the audio pin, fill the dma buffer with silence samples ([[Johannes Anderwald]])<br />
* create a subdevice descriptor for instantiated pins too ([[Johannes Anderwald]])<br />
* Rewrite the topology filter / pin / node property handling ([[Johannes Anderwald]])<br />
* Store property sets of filter / pins / nodes in a common property set array ([[Johannes Anderwald]])<br />
* Write a common dispatch function, which serves as a trampoline for filter / pin / node property requests ([[Johannes Anderwald]])<br />
* Private property handlers of the drivers are now accessible ([[Johannes Anderwald]])<br />
* Fix multiple bugs in round buffer implementation ([[Johannes Anderwald]])<br />
* Should result in less audio glitches, especially when playing audio files with low sample rates. Please report any regressions! ([[Johannes Anderwald]])<br />
* Fix a comment ([[Timo Kreuzer]])<br />
* Disable driver specific filter / pin / node property handlers until bug leading to crashes has been found ([[Johannes Anderwald]])<br />
* Fix stupid bug which lead to access an invalid buffer. ([[Johannes Anderwald]])<br />
* dedicated to igorko ([[Johannes Anderwald]])<br />
* Do not leak KSSTREAM_HEADER (48 bytes) for each IOCTL_KS_WRITE_STREAM / IOCTL_KS_READ_STREAM request ([[Johannes Anderwald]])<br />
* Audio stack should now leak less memory ([[Johannes Anderwald]])<br />
* Revert 49356 ([[Johannes Anderwald]])<br />
* This change breaks portcls on WinXP ([[Johannes Anderwald]])<br />
* Add MPU-401 Uart miniport driver from DDK 2003 sample ([[Johannes Anderwald]])<br />
* Add license header ([[Johannes Anderwald]])<br />
* Dear lawyers / worried developers, this is the XP DDK Version. ([[Johannes Anderwald]])<br />
* ASM] ([[Timo Kreuzer]])<br />
* Remove superfluous .code64 ([[Timo Kreuzer]])<br />
* Add some macros for MSVC ([[Timo Kreuzer]])<br />
* Portcls does not need to set the size of the audio buffer for completed irps. This is done in a completion callback in wdmaud. Verified with WinXP portcls ([[Johannes Anderwald]])<br />
* Rewrite internal irp queue handling ([[Johannes Anderwald]])<br />
* It now supports multiple KSSTREAM_HEADERs per Irp, variable sized KSSTREAM_HEADERs per irp. ([[Johannes Anderwald]])<br />
* Store the mapped virtual address not in the KSSTREAM_HEADER, as user programs will receive then invalid addresses ([[Johannes Anderwald]])<br />
* Add checks whether this irp is for an sink pin or source pin ([[Johannes Anderwald]])<br />
* Fix multiple bugs when the pin is looped buffer mode (How did this work before?) ([[Johannes Anderwald]])<br />
* ReactOS portcls + WinXP now properly works with audio recording ([[Johannes Anderwald]])<br />
* Merge from the audio branch ([[Johannes Anderwald]])<br />
* Fix node property handler ([[Johannes Anderwald]])<br />
* Take advantage of IPinCount interface ([[Johannes Anderwald]])<br />
* Try fix msvc issues for cmake branch ([[Johannes Anderwald]])<br />
* Fix more msvc issues. ([[Amine Khaldi]])<br />
<br />
== HAL ==<br />
* Fix amd64 build ([[Timo Kreuzer]])<br />
* Big rapps Update ([[Daniel Reimer]])<br />
* Implement HalStopProfileInterrupt and add required RTC register and flag definitions. ([[Eric Kohl]])<br />
* Fix build failure from r48863. ([[Eric Kohl]])<br />
* Check that the interrupt line is not 255 ([[Cameron Gutman]])<br />
* Check that the interrupt pin is not 0 ([[Cameron Gutman]])<br />
* Fixes a failed assertion that Caemyr experienced with an ATI Rage graphics card ([[Cameron Gutman]])<br />
* HalpEnableInterruptHandler: Set the IDT_LATCHED flag if the caller requested a latched interrupt ([[Cameron Gutman]])<br />
* Fix a broken loop that resulted in us registering the resources of multiple COM ports as our KD port ([[Cameron Gutman]])<br />
* Fixes bug #5530 ([[Cameron Gutman]])<br />
* Add INIT_FUNCTION where needed. Will save 860KB later. ([[sir_richard]])<br />
* Disable INIT_FUNCTION to see whether it's responsible for Qemu broken status. Some are complaining of unworking trunk since r49463. ([[Pierre Schweitzer]])<br />
* This will be reverted after tests. ([[Pierre Schweitzer]])<br />
* Make directory/buildfiles for OMAP3-specific HAL. Shared between ZOOM2 and Beagle for now. ([[sir_richard]])<br />
* Convert while (TRUE); to ASSERT(FALSE); on unimplemented pathes. ([[Timo Kreuzer]])<br />
<br />
=== CRT ===<br />
<br />
== INCLUDE ==<br />
* Add powf() wrapper ([[Timo Kreuzer]])<br />
* Remove empty file ([[Gregor Schneider]])<br />
* New implementation of all printf functions. It's stream based (like MS one is) rather than buffer based (like our old is). Floating point is not 100% finished, but current implementation is good enough to boot. It can be enabled by a config switch. ([[Timo Kreuzer]])<br />
* Fix build ([[Timo Kreuzer]])<br />
* Fix a bug in streamout(), that could cause a buffer overrun and made msvcrt_winetest crash. ([[Timo Kreuzer]])<br />
* In streamout() handle %%, negative fieldwidth and negative precision. ([[Timo Kreuzer]])<br />
* In streamout(): fix a number of formatting bugs, round floats, fix issue with large unsigned values that were treated as signed, simplify some code. ([[Timo Kreuzer]])<br />
* Define JBLEN and JBTYPE for ARM, based on the Windows ARM CRT source code (public). ([[sir_richard]])<br />
* _assert should use DbgRaiseAssertionFailure which is (a) correct and (b) portable, instead of __debugbreak. ([[sir_richard]])<br />
* Fix typos ([[Timo Kreuzer]])<br />
* Fix another typo ([[Timo Kreuzer]])<br />
* Fix bugs in converted asm file. Fixes Firefox color issues. ([[Timo Kreuzer]])<br />
* rename pow_asm.c to powl.c to reflect it's content. ([[Timo Kreuzer]])<br />
* Update "slightly less than all" IDLs to Wine-1.3.9. (Except for shlobj, shobjidl and shtypes.h, and DirectX stuff). ([[Aleksey Bragin]])<br />
* import MSVCRT_I10_OUTPUT from wine ([[Christoph von Wittich]])<br />
* import strtoi64 from wine 1.3.10 ([[Christoph von Wittich]])<br />
* Add missing _A_VOLID definition. ([[Amine Khaldi]])<br />
* Fix bugs in new printf implementation: use buffer size in _snprintf and check for the right failure return value of streamout_char. ([[Timo Kreuzer]])<br />
* Proper fix for r50248 ;-) ([[Colin Finck]])<br />
* Happy New Year from my side as well! ([[Colin Finck]])<br />
* Improve new printf implementation: ([[Timo Kreuzer]])<br />
* remove duplicated code and implement a generic function for all (v)s(w)(n)printf ([[Timo Kreuzer]])<br />
* don't call _flsbuf for string streams, while this works on windows, it doesn't work correctly on reactos (bug!) ([[Timo Kreuzer]])<br />
* Fix return error codes ([[Timo Kreuzer]])<br />
* Fix several bugs in new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a bug in _ecvt that makes msvcrt_winetest::printf crash ([[Timo Kreuzer]])<br />
* Enable new printf implementation. ([[Timo Kreuzer]])<br />
* Fix a number of errors in floating point output. ([[Timo Kreuzer]])<br />
* fix build ([[Timo Kreuzer]])<br />
* Set errno when a overflow occurs in strtoull ([[Johannes Anderwald]])<br />
* Fixes 2 wine tests failures in msvcrt:string ([[Johannes Anderwald]])<br />
* Fix build ([[Johannes Anderwald]])<br />
* Rewrite broken _flsbuf and implement _flswbuf ([[Timo Kreuzer]])<br />
* use _flswbuf in wstreamout ([[Timo Kreuzer]])<br />
* Fixes broken text output in dwnl etc ([[Timo Kreuzer]])<br />
* Fix build ([[Timo Kreuzer]])<br />
* Fix _flsbuf return value ([[Timo Kreuzer]])<br />
* Improve code readability a bit ([[Timo Kreuzer]])<br />
* Get rid of the old printf code and some unused functions. 3346 lines of code less. ([[Timo Kreuzer]])<br />
* Remove deprecated <if>. ([[Timo Kreuzer]])<br />
* undocuser.h] ([[Giannis Adamopoulos]])<br />
* gather several undocumented definitions for user32 that were defined in several different files, sometimes in the source, sometimes in headers and sometimes defined several times here and there ([[Giannis Adamopoulos]])<br />
* This file should not contain internal user32 definitions but undocumented public definitions ([[Giannis Adamopoulos]])<br />
* fix build ([[Giannis Adamopoulos]])<br />
* fix build ([[Giannis Adamopoulos]])<br />
* Add user32_wsprintf library, with all the wsprintf functions, generated from the same codebase ([[Timo Kreuzer]])<br />
* simplify handling of ll modifier in streamout ([[Timo Kreuzer]])<br />
* Fix miscalculation of number of decimal points to shift for %f format. Should fix shlwapi:string tests and bug 5818. ([[Timo Kreuzer]])<br />
* Fix uninitialized warning ([[Timo Kreuzer]])<br />
* Replace isinf with !_finite and isnan with _isnan ([[Timo Kreuzer]])<br />
* Cleanup math.h from unixism. For now move everything that doesn't belong there into mingw_math.h. ([[Timo Kreuzer]])<br />
* Fix build of wined3d ([[Timo Kreuzer]])<br />
* effects dialog doesn't affect the color scheme (commented out until fixed finally) ([[Matthias Kupfer]])<br />
* save the KeyboardCues value correctly ([[Matthias Kupfer]])<br />
<br />
=== DDK ===<br />
* Add missing classpnp.h ([[Amine Khaldi]])<br />
* classpnp.h: Add FUNCTIONAL_DEVICE_EXTENSION, SET_FLAG, CLEAR_FLAG and TEST_FLAG ([[Amine Khaldi]])<br />
* Add some more missing definitions. ([[Amine Khaldi]])<br />
* Fix a typo and introduce some minor formatting changes. ([[Amine Khaldi]])<br />
* Add missing min and max macros. ([[Amine Khaldi]])<br />
* Add misisng MmLockPagableCodeSection. ([[sir_richard]])<br />
* Fix ClassDebugPrint prototype. ([[Amine Khaldi]])<br />
* Fix RtlStringCbPrintf prototypes. ([[Amine Khaldi]])<br />
* Add dmusprop header ([[Johannes Anderwald]])<br />
* Add IMP_PowerNotify macro to portcls.h ([[Johannes Anderwald]])<br />
* Add IID_IMusicTechnology guid to portcls.h ([[Johannes Anderwald]])<br />
* Add GTI_XXX macros to portcls.h ([[Johannes Anderwald]])<br />
* Remove broken definitions of KSPROPSETID_Synth, KSPROPSETID_Synth_Dls. They are defined in dmusprop.h ([[Johannes Anderwald]])<br />
* Add KSDATARANGE_MUSIC to ksmedia.h ([[Johannes Anderwald]])<br />
* Add KSMUSIC_TECHNOLOGY, KSDATAFORMAT_SUBTYPE_MIDI_BUS, KSAUDFNAME_MIDI, KSNODETYPE_SYNTHESIZER to ksmedia.h ([[Johannes Anderwald]])<br />
* FsRtlRemoveBaseMcbEntry() return is VOID ([[Pierre Schweitzer]])<br />
* Oleg Baikalow: Fix NDIS macros. ([[Aleksey Bragin]])<br />
<br />
=== NDK ===<br />
* Fixed build ([[Pierre Schweitzer]])<br />
* Add MMVAD_SHORT. ([[sir_richard]])<br />
* Fix definition of ARM PTE/PDE structure. ([[sir_richard]])<br />
* Add IMAGE_FILE_MACHINE_NATIVE ([[Timo Kreuzer]])<br />
* Add RTL_TRACE_BLOCK structure definition. ([[Aleksey Bragin]])<br />
<br />
=== PSDK ===<br />
* Add some missing structures in ioevent.h ([[Amine Khaldi]])<br />
* Add some missing IOCTL_* definitions. ([[Amine Khaldi]])<br />
* Add missing ntddmmc.h definitions. ([[Amine Khaldi]])<br />
* Add CDROM_TOC_SESSION_DATA structure. ([[Amine Khaldi]])<br />
* Add missing header's header. ([[Amine Khaldi]])<br />
* Fixed build ([[Pierre Schweitzer]])<br />
* Add missing SEC_XXX definitions for Server 2003 (Vista ones still missing). ([[sir_richard]])<br />
* Add more track popup menu types. ([[James Tabor]])<br />
* Add INET_E_USE_DEFAULT_SETTING definition ([[Cameron Gutman]])<br />
* Add ICONINFOEX* definitions and GetIconInfoEx* declarations from Wine. ([[Aleksey Bragin]])<br />
* Add NOMIRRORBITMAP definition. ([[Aleksey Bragin]])<br />
* Add DecryptFileA/W prototype. ([[Eric Kohl]])<br />
* add TrustedDomainAuthInformationInternal and TrustedDomainFullInformationInternalFix to _TRUSTED_INFORMATION_CLASS. ([[Jérôme Gardou]])<br />
* Fixes build ([[Jérôme Gardou]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* Partly sync windef.h with mingw-w64 and add specstrings.h ([[Timo Kreuzer]])<br />
* reverts the previous revert, fixed definition of NULL to __null in stddef.h ([[Timo Kreuzer]])<br />
* Don't define __in and __null on c++ build. as long as we keep using host headers, this won't work ([[Timo Kreuzer]])<br />
* Comment out specstrings.h inclusion in windef.h as per Timo's request. ([[Sylvain Petreolle]])<br />
* Fixes build. ([[Sylvain Petreolle]])<br />
* Add missing DbgRaiseAssertionFailure inline to winnt.h header. ([[sir_richard]])<br />
* Oleg Baikalow: Add missing definitions to ipexport.h. ([[Aleksey Bragin]])<br />
* Oleg Baikalow: Don't call TDIEntityID structure and type with the same name. ([[Aleksey Bragin]])<br />
* Bug 5756: TRANSLATION: multiple modules: Bulgarian by CCTAHEB ([[Daniel Reimer]])<br />
* Bug 5761: TRANSLATION: Czech translation update by Radek Liska ([[Daniel Reimer]])<br />
* Update rapps database. ([[Daniel Reimer]])<br />
* Fix for Fox Audio Player. Newest Version and leading to a Setup with libmpg ([[Daniel Reimer]])<br />
* Add missing definitions. ([[Aleksey Bragin]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Remove svn:merge info ([[Johannes Anderwald]])<br />
<br />
=== REACTOS ===<br />
<br />
==== LIBS ====<br />
<br />
===== PSEH =====<br />
* Allow configuration of native SEH vs PSEH vs dummy PSEH with macro definitions (USE_NATIVE_SEH, USE_DUMMY_PSEH) ([[Timo Kreuzer]])<br />
<br />
===== CSRSS =====<br />
<br />
==== SUBSYS ====<br />
* Should use MEM_COMMIT | MEM_RESERVE, not just MEM_COMMIT when requesting a range of adress space that wasn't already reserved. This works in ReactOS because, well, no reason to explain why, but it wouldn't work on Windows or with a VAD-based kernel. ([[sir_richard]])<br />
* Initialise PPB to zero. (Roel)<br />
* The change from NtAllocateVirtualMemory to RtlAllocateHeap causes the memory to (Roel)<br />
* be not automatically initialised to zero anymore. (Roel)<br />
* Not every field of the PPB (for which the memory is allocated) gets explicitly (Roel)<br />
* initialised, meaning this results in them having bogus values. (Roel)<br />
* One of the now uninitialised fields is DebugFlags, which results in (Roel)<br />
* DbgBreakPoint being called in NtProcessStartup. Simply ensuring the memory is (Roel)<br />
* zeroed makes it all better again. (Roel)<br />
* Katayama Hirofumi: ([[Sylvain Petreolle]])<br />
* Add / update Japanese translations. ([[Sylvain Petreolle]])<br />
* Fix typos in calc en-US resource. ([[Sylvain Petreolle]])<br />
* Bug #5673,5674,5675,5676. ([[Sylvain Petreolle]])<br />
<br />
==== WIN32K ====<br />
* Coding for PrintWindow support for bug 5609. This does not fix the export, which should be a direct call to win32k. ([[James Tabor]])<br />
* Cleanup UserSetCursorPos ([[Giannis Adamopoulos]])<br />
* UserSetCursorPos: set the new position after sending WM_MOUSEMOVE message ([[Giannis Adamopoulos]])<br />
* now we pass all tests for SetCursorPos ([[Giannis Adamopoulos]])<br />
* fix GeoID bug (forgotten \0) ([[Matthias Kupfer]])<br />
* clean up EXLATEOBJ before error path in NtGdiBitBlt ([[Jérôme Gardou]])<br />
* Implement win32k support functions for Get and Set process default layout. ([[James Tabor]])<br />
* Due to changes with wine it will be difficult to sync when RTL support is being added to ComCtl32. ([[James Tabor]])<br />
* Fix future wine sync user32 win test for get process default layout with null parameter. ([[James Tabor]])<br />
* Return the correct complexity, pass all user32 wine test_winregion tests. ([[James Tabor]])<br />
* PSDK ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Edison Henrique Andreassy <ehasis@hotmail.com>: Add FILEMUIINFO definition. ([[Aleksey Bragin]]; {{bug|5640}})<br />
* Fixed ValidateTimerCallback, always returning true and just spinning in the loop. ([[James Tabor]])<br />
* Add one more process information flag with a point type and capturing the hit test in desktop structure. ([[James Tabor]])<br />
* Reduce duplicated code in co_UserCreateWindowEx, co_IntSetParent and co_WinPosSetWindowPos ([[Giannis Adamopoulos]])<br />
* based on wine ([[Giannis Adamopoulos]])<br />
* Don't place new windows with default position at the top left corner of the screen ([[Giannis Adamopoulos]]; {{bug|5484}})<br />
* Send WM_PARENTNOTIFY message when a window is destroyed ([[Giannis Adamopoulos]])<br />
* co_UserDestroyWindow: Send WM_PARENTNOTIFY message in correct order ([[Giannis Adamopoulos]])<br />
* Roel Messiant: Return correct address in the user heap commit routine. Should fix boot with the new heap manager. ([[Aleksey Bragin]])<br />
* Fix an ancient FIXME in PATH_PathToRegion ([[Giannis Adamopoulos]])<br />
* Move checks for active hooks in co_HOOK_CallHooks ([[Giannis Adamopoulos]])<br />
* Remove the FreeLParam 'feature' from win32k. This hack allowed us to post messages that contain pointers. However we don't do it anymore so we can also remove this as well ([[Giannis Adamopoulos]])<br />
* Add keyboard messages to the list with Hardware messages and not in the list with post messages ([[Giannis Adamopoulos]])<br />
* Disable checking if a hook is active. It is safe to disable it for now because it is just an optimization. If we try to call a hook when it is not active, it will fail anyway when it tries to find the hook. Fixes calling low level hooks ([[Giannis Adamopoulos]])<br />
* When we try to call a hook with null hook proc will cause a crash in user32. Add an assertion in win32k in order to catch the problem a bit earlier ([[Giannis Adamopoulos]])<br />
* Clean up co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* Renove some unneccessary casts ([[Timo Kreuzer]])<br />
* Fix an exception when set condition * first always is used then moving the mouse. There seems to be an initialization issue (The Init Bug) and not setting a desktop. ([[James Tabor]])<br />
* Fix typos found by Mephisto on IRC, also add some debug prints in SetWindowsHookEx to see what hooks are installed. ([[James Tabor]])<br />
* Do not override WH_JOURNALPLAYBACK results if zero. ([[James Tabor]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereferences. Spotted by Amine Khaldi. ([[Timo Kreuzer]])<br />
* Improve the code to enumerate monitors. ([[Timo Kreuzer]])<br />
* Don't use custom MIN / MAX / ABS macros ([[Timo Kreuzer]])<br />
* Calculate distance by r^2 = x^2 + y^2 ([[Timo Kreuzer]])<br />
* Use RECTL_bIntersectRect instead of code duplication ([[Timo Kreuzer]])<br />
* Fix possible NULL pointer dereference ([[Timo Kreuzer]])<br />
* pass bottom-right exclusive rect to IntGetMonitorsFromRect from NtUserMonitorFromPoint ([[Timo Kreuzer]])<br />
* Don't handle MONITOR_DEFAULTTOPRIMARY and MONITOR_DEFAULTTONEAREST twice ([[Timo Kreuzer]])<br />
* Use unsigned variables for unsigned values ([[Timo Kreuzer]])<br />
* Don't check the result of a UINT returning function for < 0 ([[Timo Kreuzer]])<br />
* Improve readability ([[Timo Kreuzer]])<br />
* message.c: ([[Giannis Adamopoulos]])<br />
* Don't use RETURN macro ([[Giannis Adamopoulos]])<br />
* Correctly use SEH. Use _SEH2_YIELD ([[Giannis Adamopoulos]])<br />
* Roel Messiant: ([[Aleksey Bragin]])<br />
* Heap corruption fixes. ([[Aleksey Bragin]])<br />
* remove rtl dependency ([[Johannes Anderwald]])<br />
* thanks to mephisto! ([[Johannes Anderwald]])<br />
* Fix mdl probe access rights ([[Johannes Anderwald]])<br />
* Fix possible use of uninitialized variable. Spotted by Amine. ([[Timo Kreuzer]])<br />
* Remove obsolete code ([[Johannes Anderwald]])<br />
* Thanks to Amine ([[Johannes Anderwald]])<br />
* Fix a bug in InitVideo: when looping through the adapters, reinitialize the cbValue before querying the registry. ([[Timo Kreuzer]])<br />
* Also handle failure. ([[Timo Kreuzer]])<br />
* Lock thread when removing hooks. ([[James Tabor]])<br />
* Track end of life thread when removing hooks. ([[James Tabor]])<br />
* Disable GDI_DEBUG. It's using > 20 MB memory. Too much for some people ;-) ([[Timo Kreuzer]])<br />
* Change all Init functions to be NTAPI instead of FASTCALL, return NTSTATUS, and be an INIT_FUNCTION (saving incredible 2k). Simplify the initialization sequence by using a simple macro. Delete a comment that is not true anymore. ([[Timo Kreuzer]])<br />
* Move some globals to appropriate file. ([[Timo Kreuzer]])<br />
* Make InitVideo return NTSTATUS and properly handle failure ([[Timo Kreuzer]])<br />
* Silence a DPRINT, improve a DPRINT ([[Timo Kreuzer]])<br />
* Turn off debug prints. ([[James Tabor]])<br />
* Fixed WaitForInputIdle, finally!, passed all the wine tests for it. ([[James Tabor]])<br />
* Moved Get/Peek message to the new all in one support routine. ([[James Tabor]])<br />
* Foreground hook hits one out of five, this needs more research. ([[James Tabor]])<br />
* Attempted to workout synchronizing issues with low level and regular hooks. ([[James Tabor]])<br />
* Simplify co_IntPeekMessage even more ([[Giannis Adamopoulos]])<br />
* Rename MsqInsertSystemMessage to MsqInsertMouseMessage ([[Giannis Adamopoulos]])<br />
* Bug 5726: PATCH: regedit: Language File skeleton strings (geekdundee<A_T>gmail.com) ([[Daniel Reimer]])<br />
* Bug 5735: PATCH: updated slovak translations by Mario Kacmar ([[Daniel Reimer]])<br />
* Bug 5740: TRANSLATION: rapps: polish (wojtekkozlo664<A_T>op.pl) ([[Daniel Reimer]])<br />
* Updated the Rapps Versions, too. ([[Daniel Reimer]])<br />
* Fix hooks, do not cleanup hooks when any window from the same thread is destroyed. ([[James Tabor]])<br />
* Tweaks to hook and event timeouts. Increase performance with DOSBox when using mouse and keyboard. ([[James Tabor]])<br />
* Some more cleanup ([[Giannis Adamopoulos]])<br />
* Test for hooks before setting up for a hook call. This eliminates overhead. ([[James Tabor]])<br />
* Fix style, use client style. ([[James Tabor]])<br />
* Fix one of the greatest hacks in message handling: do not wake up every message queue when there is mouse or keyboard input ( wake only the thread that must take input) ([[Giannis Adamopoulos]])<br />
* rewrite co_WinPosWindowFromPoint, co_MsqInsertMouseMessage and co_MsqPeekHardwareMessage ([[Giannis Adamopoulos]])<br />
* port co_IntProcessMouseMessage and MsqSendParentNotify from wine ([[Giannis Adamopoulos]])<br />
* call co_IntProcessHardwareMessage from co_MsqPeekHardwareMessage, and not from co_IntPeekMessage ([[Giannis Adamopoulos]])<br />
* move co_IntProcessHardwareMessage, co_IntProcessKeyboardMessage and co_IntProcessMouseMessage to msgqueue.c ([[Giannis Adamopoulos]])<br />
* Apply workaround for POINT / POINTL, like for the others ([[Timo Kreuzer]])<br />
* Restore capturing the hit test in the desktop structure. Move journal record hook before sending the mouse hook. ([[James Tabor]])<br />
* revert r49718 ([[Timo Kreuzer]])<br />
* Remove some unused functions ([[Giannis Adamopoulos]])<br />
* move several user stubs in ntstubs.c ([[Giannis Adamopoulos]])<br />
* More fixes to In Send and Reply message support. ([[James Tabor]])<br />
* More fixes to In Send message support. One more case fixed in looping back. ([[James Tabor]])<br />
* Amend to r41772. Allow PostMessage to handle DDE messages ([[Giannis Adamopoulos]])<br />
* In FNID_SENDMESSAGECALLBACK use SEH before accesing the user-mode buffer ([[Giannis Adamopoulos]])<br />
* Merge r49994 and r49995 from reactx branch ([[Timo Kreuzer]])<br />
* Use the new version of NtUserGetMessage and NtUserPeekMessage written by Jim. It is possible to use them now because GetMessage and PeekMessage don't return messages that contain pointers. As a result they don't need to do any extra work to copy the message to user mode. All messages that contain pointers are sent messages and this means that they don't get into the message loop. Instead they are passed directly to the window proc. ([[Giannis Adamopoulos]])<br />
* DispatchMessage works only if the target window belongs to the current thread. This lets us remove uneeded copies of lparam to user mode. ([[Giannis Adamopoulos]])<br />
* Remove an unneeded debug message ([[Giannis Adamopoulos]])<br />
* remove some more unnecessary debug output ([[Giannis Adamopoulos]])<br />
* Silence 3 DPRINTs ([[Timo Kreuzer]])<br />
* NtGdiGetDIBitsInternal: Copy the requested amount of scanlines into the return buffer, not the whole bitmap. Should fix bug #5766. ([[Roel Messiant]])<br />
* Remove co_IntPostOrSendMessage and use co_IntSendMessageNoWait where possible ([[Giannis Adamopoulos]])<br />
* Improve "not enough memory" check when creating a bitmap ([[Jérôme Gardou]])<br />
* use correct function to set the last error. ([[Jérôme Gardou]])<br />
* Make sure to initialize our page operation mutex. ([[Art Yerkes]])<br />
* Scan the whole range of the MemoryArea for pages to evict. ([[Art Yerkes]])<br />
* This fixes cache section page eviction. ([[Art Yerkes]])<br />
* IntCreateWindow: Fill out MaximumLength field of the window name. Fixes potential buffer overflow in at least NtUserDefSetText. ([[Roel Messiant]])<br />
* Fix EngGetLastError and EngSetLastError ([[Timo Kreuzer]])<br />
* Remove SetLastWin32Error and use EngSetLastError instead ([[Timo Kreuzer]])<br />
* Fixes bug 5792 and Get/PeekMessage tests. I noticed co_IntPostOrSendMessage to co_IntSendMessageNoWait changes when it should have been changed to co_IntSendMessage. Same as co_IntSendMessage to co_IntSendMessageNoWait when it should have not changed.... I'm sorting it out. ATM win test locks up and the system shutdown box is not present only the text message. ([[James Tabor]])<br />
* Use SendNotifyMessage for broadcasting these messages and SendMessageNoWait when not broadcasting. ([[James Tabor]])<br />
* Fix all the user32 wine win test_CreateWindow tests. ([[James Tabor]])<br />
* Fix all the user32 wine win test_enum_thread_windows tests. ([[James Tabor]])<br />
* Update note after 50205. ([[James Tabor]])<br />
* NtUserSetWindowFNID, sets user client side window function Ids, expands to ghost. ([[James Tabor]])<br />
* Allocate/free GRE events directly from pool, instead of using Eng APIs. Use documented tag for GRE Events (Dfsm), found in pooltag.txt ([[sir_richard]])<br />
* Implement EngMapEvent and EngUnmapEvent. ([[sir_richard]])<br />
* Improve LDEVOBJ_bLoadImage, use ExportSectionPointer from the GdiDriverInfo structure instead of calling RtlImageDirectoryEntryToData ([[Timo Kreuzer]])<br />
* Implement NtGdiGetBoundsRect and NtGdiSetBoundsRect. (Samuel)<br />
* Access the DC member directly instead of using IntGdiGetDCOrg ([[Timo Kreuzer]])<br />
* Remove unused IntGdiGetDCOrg, GdiSetDCOrg, GdiGetDCOrgEx ([[Timo Kreuzer]])<br />
* Simplify error checks, by reordering code in NtGdiScaleViewportExtEx ([[Timo Kreuzer]])<br />
* Simplify exception handling, use _SEH2_YIELD ([[Timo Kreuzer]])<br />
* Change function order ([[Timo Kreuzer]])<br />
* Minor code improvements ([[Timo Kreuzer]])<br />
* Fix type of DCLEVEL::prgnClip / prgnMeta (PVOID -> PREGION) ([[Timo Kreuzer]])<br />
* Move NtGdiGetRandomRgn to dcobjs.c ([[Timo Kreuzer]])<br />
* TRANSLATION: Fix browseui bulgarian resource filename. ([[Sylvain Petreolle]])<br />
* Fix a bug in FLOATOBJ_DivLong ([[Timo Kreuzer]])<br />
* Update rapps database ([[Daniel Reimer]])<br />
* Use if, instead of switch to handle flags in XFORMOBJ_bXformFixPoints ([[Timo Kreuzer]])<br />
* Define XFORMOBJ to EXFORMOBJ, a stack object that links to the matrix ([[Timo Kreuzer]])<br />
* There is no spoon. ([[Timo Kreuzer]])<br />
* Improve NtGdiStretchDIBitsInternal, use _SEH2_YIELT instead of saving an NTSTATUS and handle the fast path in place instead of setting a BOOL variable. Fixes warnings about uninitialized variables. ([[Timo Kreuzer]])<br />
* In BitmapFormat, allow intermediate bpp values, use ULONG as parameter type, instead of WORD and DWORD ([[Timo Kreuzer]])<br />
* In NtGdiCreateBitmap get the real bpp value from the gajBitsPerFormat array ([[Timo Kreuzer]])<br />
* Add back check of too large nWidth (needed to make sure, cjWidthBytes didn't overflow) ([[Timo Kreuzer]])<br />
* Merge all parameter checks ([[Timo Kreuzer]])<br />
* Check cPlanes and cBitsPixel paramters explicitly ([[Timo Kreuzer]])<br />
* Use GreCreateBitmapEx ([[Timo Kreuzer]])<br />
* Remove BITMAP_GetRealBitsPixel ([[Timo Kreuzer]])<br />
* In GreCreateBitmapEx handle allocation failure in the rle hack path and set LastError, when failed to allocate bitmap bits. ([[Timo Kreuzer]])<br />
* Cleanup pooltags a little, use official tags where known and applicable. ([[Timo Kreuzer]])<br />
* Fix use of XFORMOBJ. Should fix gdi32_winetest clipping regression and release breakage. ([[Timo Kreuzer]])<br />
* Win32k implementation of GetCharacterPlacementW, work is dedicated to the late Professor John Collins. ([[James Tabor]])<br />
* Implement NtGdiCreateMetafileDC. ([[James Tabor]])<br />
* Since most of the gdi work I committed is being reverted or if'ed out of existence, this will be the last. ([[James Tabor]])<br />
* Remove debugging code. ([[Timo Kreuzer]])<br />
* Don't trat BI_BITFIELDS as compressed format in DIB_CreateDIBSection. Fixes KSStudio. Why it was introduced by r48359? I don't know. It was broken before. I refrain from making any more comments about that piece of ... code. ([[Timo Kreuzer]]; {{bug|5781}})<br />
* Don't leak the memory for DIB sections. we set BMF_DONT_FREE in SURFACE_bSetBitmapBits, when the caller provides bits. This needs to be reconsidered. ([[Timo Kreuzer]])<br />
* In UserSetCursor, return a pointer to the old cursor, not the handle ([[Timo Kreuzer]]; {{bug|5722}})<br />
* really delete the pointer shape when NULL cursor is set, instead of just hiding it. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Move reference handling completely to NtUserSetCursor ([[Timo Kreuzer]]; {{bug|5722}})<br />
* In UserChangeDisplaySettings, set NULL cursor before change and restore old cursor after change to make sure we have the right color format. ([[Timo Kreuzer]]; {{bug|5722}})<br />
* Reset monitor size after mode switch. (rafalh; {{bug|5727}})<br />
* Go back to hiding the cursor with GreMovePointer, instead of setting NULL bitmaps. While MSDN states that psoColor and psoMask can both be NULL in DrvSetPointerShape, it doesn't explicitly say anything about both being NULL at the same time. VBox driver doesn't expect that and will crash, so most likely windows doesn't do this. ([[Timo Kreuzer]])<br />
* Set correct error value on failure in NtUserSetCursor. (Victor)<br />
* Portability bugfixes ([[Thomas Bluemel]])<br />
* Create a security descriptor for the desktops rather than passing the ACLs in as a security descriptor ([[Thomas Bluemel]])<br />
* Fix draw of cursors in static controls ([[Matthias Kupfer]])<br />
* Last part of fix for bug #4874 ([[Matthias Kupfer]])<br />
* Implement GetClassLongPtrA/W ([[Thomas Bluemel]])<br />
* Fix replaced by more flexible code for arbitrary cursor sizes ([[Matthias Kupfer]])<br />
* Fix crash with standalone win test_hind_message test. ([[James Tabor]])<br />
* Fix buggy mechanism of pushing and popping free gdi handle slots. The old mechanism unneccessarily locked the entry and it was prone to the ABA problem as it didn't use a sequence number. ([[Timo Kreuzer]])<br />
* Fix a bug in calculation of the background color for 32bpp -> 1bpp color translations. ([[Timo Kreuzer]])<br />
* Fixes bug 2372 ([[Timo Kreuzer]])<br />
* add missing file ([[Timo Kreuzer]])<br />
* Add GetTransform declaration. (until we have undocgdi.h). ([[Aleksey Bragin]])<br />
* Enable simple FontSmoothing by default. It matters for arwinss, trunk just ignores this value and always smoothes the fonts. ([[Aleksey Bragin]])<br />
* Robert Horvath: LocalUnlock has to be different from GlobalUnlock. The subtle difference between LocalUnlock and GlobalUnlock, is, that the former will return FALSE and set ERROR_NOT_LOCKED on LMEM_FIXED allocations. Fixes 1 kernel32:heap failure. ([[Aleksey Bragin]]; {{bug|5869}})<br />
* Robert Horvath: Add GlobalFlag entry in hivesys_{arch}.inf with the default value 0x0. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Add a missing ORing of the registry-loaded GlobalFlags value in ExpInitializeExecutive. Thanks to Robert Horvath for spotting the issue. ([[Aleksey Bragin]]; {{bug|5870}})<br />
* Merge all amd64 related changes from cmake branch ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 1 ([[Timo Kreuzer]])<br />
* Merge resource file related changes from cmake branch part 2 ([[Timo Kreuzer]])<br />
* fix taskmgr build ([[Timo Kreuzer]])<br />
* Fix build of shlwapi ([[Timo Kreuzer]])<br />
* Edijs: Properly load window size and position. ([[Aleksey Bragin]]; {{bug|5872}})<br />
* Merge CRT changes from cmake branch (mainly MSVC compilation fixes) ([[Timo Kreuzer]])<br />
* Handle BITMAPV4HEADER and BITMAPV5HEADER, when creating a DIB palette. Detect PAL_RGB like done with PAL_BGR in PALETTE_AllocPalette (optimization). ([[Timo Kreuzer]])<br />
* Fixes pink icons. ([[Timo Kreuzer]])<br />
* Remove some artifact from ARM build. ([[Pierre Schweitzer]])<br />
* Would it fix build? ([[Pierre Schweitzer]])<br />
* Fix initialization of XLATEOBJ, when source and dest format are equal. (Thomas; {{bug|5828}})<br />
* Remove gexloTrivial, it was never used ([[Timo Kreuzer]])<br />
* Remove EXLATEOBJ_vInitTrivial and move the code into EXLATEOBJ_vInitialize ([[Timo Kreuzer]])<br />
* Properly set XO_TABLE ([[Timo Kreuzer]])<br />
* Set ppalDstDc in EXLATEOBJ_vInitXlateFromDCs ([[Timo Kreuzer]])<br />
<br />
=== 3RDPARTY ===<br />
<br />
== LIB ==<br />
==== FREETYPE ====<br />
===== INCLUDE =====<br />
====== FREETYPE ======<br />
======= CONFIG =======<br />
* Instead of having 4 template rbuild configuration files that must be kept in-sync, maybe there should be a generic one that they all inherit from? ([[sir_richard]])<br />
* Add new property settings that exist in x86, but not ARM because nobody added them there. For example, nor cc, nor cache were being built on ARM, because NEWCC was undefined (which isn't treated as 0 by rbuild). ([[sir_richard]])<br />
* How I long for CMAKE. ([[sir_richard]])<br />
<br />
======= DATA =======<br />
<br />
======== XML ========<br />
<br />
===== ICU =====<br />
<br />
====== SOURCE ======<br />
<br />
==== ICU4ROS ====<br />
* Silence a warning on MSVC ([[Timo Kreuzer]])<br />
<br />
==== MINGW ====<br />
* Don't compile atonexit.c. atexit is exported from msvcrt. ([[Timo Kreuzer]])<br />
* Revert r50267 ([[Timo Kreuzer]])<br />
<br />
==== SOUND ====<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
* Getting device capabilities requires the unicode version of the structure ([[Johannes Anderwald]])<br />
* Implement MIDM_OPEN, MIDM_CLOSE, MIDM_START, MIDM_STOP ([[Johannes Anderwald]])<br />
* Implement MODM_OPEN, MODM_CLOSE ([[Johannes Anderwald]])<br />
* Refactor MmeOpenWaveDevice into MmeOpenDevice add add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Refactor MmeCloseWaveDeivce into MmeCloseDevice and add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Handle mixers identified by id, not by handle ([[Johannes Anderwald]])<br />
* Fix opening of mixer devices ([[Johannes Anderwald]])<br />
* Waveformat struct is only provided when type is wave device ([[Johannes Anderwald]])<br />
* Implement wave reset routine, fixes audio recording on ReactOS SndRec, AudaCity etc. Also fixes random hang in WinAmp when skipping audio bytes ([[Johannes Anderwald]])<br />
* Implement wave pausing / restarting, should lead to smoother playback ([[Johannes Anderwald]])<br />
<br />
===== MMIXER =====<br />
* Rewrite topology node enumeration algorithm ([[Johannes Anderwald]])<br />
* Old algorithm didnt properly take in account sum/mux nodes, may assign nodes to multiple lines and was not able to detect circuits which may lead to infinite loops ([[Johannes Anderwald]])<br />
* New algorithm properly partitions the nodes and also checks if nodes has already been assigned. As a plus, it is also faster ([[Johannes Anderwald]])<br />
* Algorithm based on msdn http://msdn.microsoft.com/en-us/library/ff538873(v=VS.85).aspx ([[Johannes Anderwald]])<br />
* Tested on VBox 3.28 (AC97) ([[Johannes Anderwald]])<br />
* Please retest supported soundcards for regressions ([[Johannes Anderwald]])<br />
* Implement support routines which get called when a topology node changes its state ([[Johannes Anderwald]])<br />
* Volume changes / mute on/off changes should now be broadcasted again to all listening applications ([[Johannes Anderwald]])<br />
* Add support for topologies where pins directly connect to other pins without nodes in between ([[Johannes Anderwald]])<br />
* Check if the topology contains node. Fixes assert hit in VmWare Player(sound is not working) ([[Johannes Anderwald]])<br />
* Thanks to Caemyr for testing ([[Johannes Anderwald]])<br />
* Disable assert for now ([[Johannes Anderwald]])<br />
* Amendment to rev. 49167 requested by Caemyr. ([[Kamil Hornicek]])<br />
* Apply a hack to filter out pins, which are not part of filter node processing path ([[Johannes Anderwald]])<br />
* The hack filters out all pins which have a physical connection. Ideally the code should check if the pin is part of a different rendering path and in that case remove the pin. ([[Johannes Anderwald]])<br />
* Revert 49167 ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Kernel streaming pins need to transit states from Run -> Pause -> Acquire -> Stop. ([[Johannes Anderwald]])<br />
* Fixes SB Live playback hang on last tone when stopping playback ([[Johannes Anderwald]])<br />
* Enumerate MIDI devices and provide all necessary functions to deal with them ([[Johannes Anderwald]])<br />
* Merge from audio branch ([[Johannes Anderwald]])<br />
* Tons of fixes to enumeration of mixerlines, controls / etc ([[Johannes Anderwald]])<br />
* Fix mixer event notification callbacks ([[Johannes Anderwald]])<br />
* For more info, read audio-bringup log ([[Johannes Anderwald]])<br />
<br />
=== LSALIB ===<br />
* Fix compiler warnings for AMD64 build. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
* Fix PCI group key ([[Johannes Anderwald]])<br />
<br />
== NTOSKRNL ==<br />
* IoRegisterPlugPlayNotification: Do not fail if no Interface can be found for the given GUID. Just do not call the Callback-Routine in this case. The Interface could be created later. ([[Eric Kohl]])<br />
* disable some locale IDs because they are not supported yet ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 417 Rhaeto-Romanic ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 445 Bengali (India) ([[Matthias Kupfer]]; {{bug|5636}})<br />
* or still unknown ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 48f ([[Matthias Kupfer]]; {{bug|5636}})<br />
* 490 ([[Matthias Kupfer]]; {{bug|5636}})<br />
* this fixes multiple entries () ([[Matthias Kupfer]]; {{bug|5636}})<br />
* Implement NtQueryOpenSubKeys. ([[Eric Kohl]])<br />
* Add amd64 versions of MI_MAKE_PROTOTYPE_PTE and MiProtoPteToPte ([[Timo Kreuzer]])<br />
* Remove outdated external declarations ([[Timo Kreuzer]])<br />
* disable deprecated amd64 code ([[Timo Kreuzer]])<br />
* use MiFillSystemPageDirectory only for 2 paging levels ([[Timo Kreuzer]])<br />
* Fixes amd64 build ([[Timo Kreuzer]])<br />
* remove svn:merginfo ([[Timo Kreuzer]])<br />
* Alternative workaround for pentium lock errata: Instead of burdening the page fault handler, just mark the IDT page as Write-Through if the bug is present. According to http://www.rcollins.org/Errata/Dec97/F00FBug.html it shall prevent the lock up. Please test. Dedicated to elhoir. ([[Timo Kreuzer]])<br />
* Fix ARC names accordingly ([[Pierre Schweitzer]])<br />
* Fix indentation. No code changes. ([[Eric Kohl]])<br />
* Don't ignore IopCreateArcNames() return while booting. ([[Pierre Schweitzer]])<br />
* At the moment, it's just returning STATUS_SUCCES but it will be changed later. ([[Pierre Schweitzer]])<br />
* Fixed a FIXME in ARC names by implementing IopStoreSystemPartitionInformation(). This make ReactOS writing boot paths to registry. ([[Pierre Schweitzer]])<br />
* On boot, while loading drivers, make starting Loader Block available to the whole kernel to let drivers calling on-boot functions that may need it. ([[Pierre Schweitzer]])<br />
* One of them will be implemented later. ([[Pierre Schweitzer]])<br />
* Implement SeImpersonateClientEx() and simplify SeImpersonateClient(). ([[Eric Kohl]])<br />
* Replace \" with "" in resource files. This makes CMAKE build way more silent. Needs to be merged. ([[Daniel Reimer]])<br />
* TBD find a way to silent warnings happening due to \n in strings. ([[Daniel Reimer]])<br />
* Implemented FstubAllocateDiskInformation(), FstubDbgGuidToString(), FstubDbgPrintDriveLayoutEx(), FstubDbgPrintPartitionEx(), FstubDetectPartitionStyle(), FstubFreeDiskInformation(), FstubGetDiskGeometry(), FstubReadPartitionTableMBR(), FstubReadSector() ([[Pierre Schweitzer]])<br />
* Stubbed FstubReadPartitionTableEFI() ([[Pierre Schweitzer]])<br />
* This leads to a correct & working implementation of IoReadPartitionTableEx(). As this state, it only handles MBR partition tables as EFI/GPT as been stubbed out. ([[Pierre Schweitzer]])<br />
* EFI/GPT support will come later. ([[Pierre Schweitzer]])<br />
* Implemented IopFetchConfigurationInformation(), IopCreateArcNamesCd(), IopCreateArcNamesDisk(), IopVerifyDiskSignature() ([[Pierre Schweitzer]])<br />
* Removed IopApplyRosCdromArcHack(), IopGetDiskInformation(), IopAssignArcNamesToCdrom() ([[Pierre Schweitzer]])<br />
* Finally, rewritten IopCreateArcNames() ([[Pierre Schweitzer]])<br />
* To make it short, this is the rewrite of ARC names handling in the kernel. ([[Pierre Schweitzer]])<br />
* This brings our kernel to a higher state of existence. Indeed, it's leaving NT4 design for a proper NT5.2 design, with less hacks, less ROS specific stuff and such. ([[Pierre Schweitzer]])<br />
* This code handles the mount manager we don't have yet. ([[Pierre Schweitzer]])<br />
* Implemented FstubAdjustPartitionCount(), FstubConvertExtendedToLayout(), FstubCopyEntryEFI(), FstubCreateDiskMBR(), FstubCreateDiskEFI(), FstubCreateDiskRaw(), FstubDbgPrintSetPartitionEx(), FstubReadHeaderEFI(), FstubReadPartitionTableEFI(), FstubSetPartitionInformationEFI(), FstubVerifyPartitionTableEFI(), FstubWriteBootSectorEFI(), FstubWriteEntryEFI(), FstubWriteHeaderEFI(), FstubWritePartitionTableEFI(), FstubWritePartitionTableMBR(), FstubWriteSector() ([[Pierre Schweitzer]])<br />
* Implemented IoCreateDisk(), IoGetBootDiskInformation(), IoReadDiskSignature(), IoSetPartitionInformationEx(), IoVerifyPartitionTable(), IoWritePartitionTableEx() ([[Pierre Schweitzer]])<br />
* To sum up, this commit finishes FSTUB API implementation in the ReactOS kernel. This means one important thing: now ReactOS kernel knows about a bit about EFI and about GPT. No need to say that it's the first step into EFI support. But a lot more work is needed. Especially since the kernel is the only real entity in ReactOS to handle GPT. All the rest of the OS doesn't know anything about GPT. ([[Pierre Schweitzer]])<br />
* A small note about FstubVerifyPartitionTableEFI(). This function is supposed to check whether a disk formated with GPT is valid, and if it's not, to fix it. First step is implemented. Second step isn't yet supported. ([[Pierre Schweitzer]])<br />
* A general note about all that stuff: on GPT, backup table isn't properly handled for the moment, as ReactOS is experiencing disk geometry issues. That means it's not having the proper disk sectors count and then, can't find the backup table (which is located on last disk sector). ([[Pierre Schweitzer]])<br />
* References: ([[Pierre Schweitzer]])<br />
* http://www.intel.com/technology/efi/ ([[Pierre Schweitzer]])<br />
* http://developer.apple.com/library/mac/#technotes/tn2006/tn2166.html ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.h;hb=HEAD ([[Pierre Schweitzer]])<br />
* http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob;f=fs/partitions/efi.c;hb=HEAD ([[Pierre Schweitzer]])<br />
* Rewrite the resource map code to fix a regression, several failures cases, and a few memory leaks ([[Cameron Gutman]])<br />
* Remove an incorrect definition of IopDetectResourceConflict in pnpreport.c (no idea how this didn't trigger an onslaught of warnings) ([[Cameron Gutman]])<br />
* Partially implement IoAssignResources so that it creates a non-conflicting resource list from the requirements but it doesn't claim the resources for the device in the registry ([[Cameron Gutman]])<br />
* Partially implement IoReportResourceUsage so that it checks the resource list for conflicts but doesn't claim the resources in the registry ([[Cameron Gutman]])<br />
* Please test this revision with a variety of hardware and drivers because it activates several code paths in the PnP manager ([[Cameron Gutman]])<br />
* If this causes problems, look for "Denying an attempt to claim resources currently in use by another device!" in the debug log and report the bug to me ([[Cameron Gutman]])<br />
* Fix a critical bug in the conflict detection code ([[Cameron Gutman]])<br />
* Don't unconditionally skip conflict detection for shared resources, instead it should be done on a descriptor-by-descriptor basis (if both descriptors are shared) ([[Cameron Gutman]])<br />
* This check wasn't removed when I initially wrote this code and added the proper check below ([[Cameron Gutman]])<br />
* Add IoWMIDeviceObjectToProviderId and IoIs32bitProcess stubs for 64bit builds ([[Timo Kreuzer]])<br />
* Comment out some deprecated amd64 code ([[Timo Kreuzer]])<br />
* Add MmProtectToValue ([[Timo Kreuzer]])<br />
* Fix a typo ([[Timo Kreuzer]])<br />
* Minor stuff. ([[Pierre Schweitzer]])<br />
* Here is your commit Timo ;) ([[Pierre Schweitzer]])<br />
* Fix a bug. ([[Timo Kreuzer]])<br />
* Initialize the Zero variable ([[Timo Kreuzer]])<br />
* Don't corrupt the Color value in case we didn't have any page on MmZeroedPageListHead. ([[Timo Kreuzer]])<br />
* Fixes boot. ([[Timo Kreuzer]])<br />
* Use appropriated macros ([[Pierre Schweitzer]])<br />
* Simplify code, which should bring some fixing ([[Pierre Schweitzer]])<br />
* Fix potential buffer overflow ([[Pierre Schweitzer]])<br />
* Get back INIT_FUNCTION on lassy's polite request. ([[Pierre Schweitzer]])<br />
* Previously, in ReactOS' stories: ([[Pierre Schweitzer]])<br />
* ReactOS was broken since more a hundred of commits when two devs decided it was enough. One (we will name him Timo) fixed the context switch. The second, with the help of a third dev (Pierre & Hervé) decided to run tests by disabling some stuff (ie INIT_FUNCTION). This magically made testbot going back to life. ([[Pierre Schweitzer]])<br />
* But, some complains came from the ML, so trying to appease world, Pierre decided to revert half of his changes, thinking this would be OK. ([[Pierre Schweitzer]])<br />
* Now, after a night. It appears that half revert was a pretty bad idea. Testbot keeps being broken. ([[Pierre Schweitzer]])<br />
* So, this commit reverts r49665 (which was half reverting r49662). That way, testbot should be back, able to run tests. BUT, due to a NPFS issue, some tests are broken. Eric has been nicely mailed about that issue, with an idea of fix (thanks go here to Aleksey). ([[Pierre Schweitzer]])<br />
* For those who like that, drama to follow on ML. ([[Pierre Schweitzer]])<br />
* I turn into being S/M... ([[Pierre Schweitzer]])<br />
* Add missing PAGED_CODE() where needed ([[Pierre Schweitzer]])<br />
* Removed a wrong ASSERT in FsRtlIsNameInExpressionPrivate() and replace it by the right one ([[Pierre Schweitzer]])<br />
* Mark FsRtlIsDbcsInExpression() as halfplemented ([[Pierre Schweitzer]])<br />
* Renamed MmIsFileAPagingFile() to MmIsFileObjectAPagingFile() its appropriated name ([[Pierre Schweitzer]])<br />
* Added it to internal headers ([[Pierre Schweitzer]])<br />
* Implemented FsRtlIsPagingFile() ([[Pierre Schweitzer]])<br />
* Implemented FsRtlLookupPerStreamContextInternal(), FsRtlInsertPerStreamContext(), FsRtlRemovePerStreamContext(), FsRtlTeardownPerStreamContexts() ([[Pierre Schweitzer]])<br />
* Based on my previous work on pierre-fsd branch. ([[Pierre Schweitzer]])<br />
* Add missing prototype and define ([[Pierre Schweitzer]])<br />
* Implemented FsRtlPTeardownPerFileObjectContexts(), FsRtlLookupPerFileObjectContext(), FsRtlInsertPerFileObjectContext(), FsRtlRemovePerFileObjectContext() ([[Pierre Schweitzer]])<br />
* Stubplemented IoGetFileObjectFilterContext(), IoChangeFileObjectFilterContext() ([[Pierre Schweitzer]])<br />
* Add support of per file object filter context to IopDeleteFile() ([[Pierre Schweitzer]])<br />
* As ReactOS doesn't support file objects extensions, this doesn't work (blame Aleksey) - yet ([[Pierre Schweitzer]])<br />
* Forgotten comments... ([[Pierre Schweitzer]])<br />
* That's not because ARM will rule the world on a day that you're obliged to break x86 build. ([[Pierre Schweitzer]])<br />
* Fixed build. Will it work? Only God knows. ([[Pierre Schweitzer]])<br />
* Fix the fix, ie fix x86. ([[Pierre Schweitzer]])<br />
* Everything should work now ~ ([[Pierre Schweitzer]])<br />
* Never read code & commit while being tired... ([[Pierre Schweitzer]])<br />
* Implement MemorySectionName case for NtQueryVirtualMemory. Protect buffer access with SEH. (Samuel; {{bug|5753}})<br />
* revert accidental change from r49499 ([[Timo Kreuzer]])<br />
* Fixed FsRtlIsNameInExpression() according to r50018 tests ([[Pierre Schweitzer]])<br />
* Rewritten FsRtlIsDbcsInExpression() using FsRtlIsNameInExpression() pattern. ([[Pierre Schweitzer]])<br />
* This fixes all failing tests from kmtest.sys and make this function definitely tastier to MS fastfat.sys ([[Pierre Schweitzer]])<br />
* Merge some changes from r50021 to FsRtlIsNameInExpression() to make code easier to read and understand... ([[Pierre Schweitzer]])<br />
* Silent FstubEx* debug prints on popular demand (ie, Timo) ([[Pierre Schweitzer]])<br />
* commit base for new vga display miniport driver, is svn copy of framebuf_new as many codes identical ([[evb]])<br />
* Will than commit and document differences to make into vga driver ([[evb]])<br />
* Add the new vga miniport to build ([[evb]])<br />
* Replace the framebuf_new spec rc rbuild with vga_new spec rc rbuild ([[evb]])<br />
* Delete pointer.c ([[evb]])<br />
* Start make changes, driver.h new fields for VGA, change driver short/long name/tag, add macros and in enable.c remove hw pointer support ([[evb]])<br />
* fix now palette.c for vga, by copy logPalVGA/VGALOGPALETTE from NT4 DDK VGA sample drv and turn off codes for allocate 256 color pallette, instead use fix 16 color logPalVGA ([[evb]])<br />
* fix header of debug.c ([[evb]])<br />
* Finish make enable.c work full on vga, main change force 4BPP (disable other codes), create 4BPP bitmap surfobj, associate and lock ([[evb]])<br />
* Easy part done, now hard part ([[evb]])<br />
* Mode detect look for 4BPP, planar, graphics < 0x800 mode now ([[evb]])<br />
* Add GDIINFO from NT4 VGA DDK sample driver ([[evb]])<br />
* Set 4BPP prefer DIB format ([[evb]])<br />
* No graphics caps set for VGA driver ([[evb]])<br />
* Put static palette/color buffer for when VGA IOCTL send later ([[evb]])<br />
* Convert almost done, bInitSURF is last ([[evb]])<br />
* Fix an assign where a comparison was intended. CID 2626. ([[Amine Khaldi]])<br />
* Actually, code was correct, but ugly (who said "normal, that's a hack). ([[Pierre Schweitzer]])<br />
* So, when that code is called from SetupLDR, KeyHandle is required to be to 1. This what code does. Thing we do in the if condition when it appears we are called from SetupLDR. ([[Pierre Schweitzer]])<br />
* To avoid any further question, or warning, adding more parenthesis to show that we know what we do. ([[Pierre Schweitzer]])<br />
* So, to sum up, there's no comparaison for KeyHandle ([[Pierre Schweitzer]])<br />
* Fix CID 3454 ([[Pierre Schweitzer]])<br />
* Remove all #line 15 "ARM³::BLA" ([[Timo Kreuzer]])<br />
* Reasons: ([[Timo Kreuzer]])<br />
* It doesn't provide any benefits, its only purpose was to "look cool" ([[Timo Kreuzer]])<br />
* It never looked cool, instead a character mess appeared ([[Timo Kreuzer]])<br />
* It makes finding the related file harder, especially when the file is named differently then the description or when multiple files have the same tag ([[Timo Kreuzer]])<br />
* It effectively breaks Coverity scans ([[Timo Kreuzer]])<br />
* Make definitions of ExpChangeRundown, ExpChangePushlock and ExpSetRundown 64 bit safe (have one portable definition and use it accordingly) ([[Timo Kreuzer]])<br />
* Apply consistent formatting to CcMapData ([[Pierre Schweitzer]])<br />
* Hoover a bit in CC part 1. Should make MM happier. ([[Pierre Schweitzer]])<br />
* But MS fastfat driver not yet ([[Pierre Schweitzer]])<br />
* Plumber work part 1. To prevent leaks ([[Pierre Schweitzer]])<br />
* Hoovering part 2... ([[Pierre Schweitzer]])<br />
* Fix typo ~ ([[Pierre Schweitzer]])<br />
* Remove broken definition of SharedUserdata and use correct SharedUserData instead. Fixes a crash on real Hardware. (Daniel; {{bug|5650}})<br />
* Simplify SepPrivilegeCheck. (Timo)<br />
* Fix comments and reduce code complexity. ([[Timo Kreuzer]])<br />
* MiAddressToPte translates a virtual address to the corresponding PTE, MiAddressToPde to the corresponding PDE. MiPteToAddress is the inverse of MiAddressToPte and translates from a PTE to the virtual address. MiPdeToAddress broke this scheme and didn't calculate the corresponding virtual adress, but the adress of the page table. Fix this inconsistency by renaming the macro to MiPdeToPte and adding a fixed MiPdeToAddress. All references fixed accordingly. ([[Timo Kreuzer]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Remove useless checks ([[Pierre Schweitzer]])<br />
* Move redundant sum before loop, so it's done only once ([[Pierre Schweitzer]])<br />
* Fix handling of * wildcard ([[Pierre Schweitzer]])<br />
* This fixes failing kmtest tests added in r50614 ([[Pierre Schweitzer]])<br />
* Fix a bug where a spinlock was acquired on not initialized local variable ([[Johannes Anderwald]])<br />
* For both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression: ([[Pierre Schweitzer]])<br />
* Get back "useless checks" (tests show they weren't that useless) ([[Pierre Schweitzer]])<br />
* Prevent code redundancy ([[Pierre Schweitzer]])<br />
* This fixes 4 failing kmtest tests added in r50679 ([[Pierre Schweitzer]])<br />
* Improved * WC handling for both FsRtlIsNameInExpression & FsRtlIsDbcsInExpression ([[Pierre Schweitzer]])<br />
* This fixes all failing tests in kmtest ([[Pierre Schweitzer]])<br />
<br />
=== IO ===<br />
<br />
==== PNPMGR ====<br />
* Check that we got a valid vector back from HAL when translating an interrupt resource ([[Cameron Gutman]])<br />
* Add some debugging messages for failure paths in device resource handling code ([[Cameron Gutman]])<br />
<br />
=== CSR ===<br />
<br />
==== CSRSRV ====<br />
<br />
== SUBSYSTEMS ==<br />
* CSRSS was started with a free address space, and was able to map 0xA0000 into it by luck, because the ReactOS Mm allocator picks address ranges randomly, and it somehow managed to avoid the low 1MB addresses. Were this algorithm to change, or perhaps, were we to implement VADs for VM allocations, the 0xA0000 region might already be allocated (by an early-process-initialization allocation, such as the heap). This is what the flag referenced above was designed for, but it was not used. Using this flag, on the other hand, now makes CSRSS fail, because it attempts to map the RAM into 0xA0000, which fails since you can map a section on top of reserved memory. To work around this Brobdingnagian annoyance, CSRSS simply releases the first MB of memory that SMSS has nicely reserved for it, and then proceeds with the mapping. This fixes the issue of getting 0xA0000 by luck and now guarantees it can be mapped. ([[sir_richard]])<br />
<br />
=== WIN32 ===<br />
<br />
==== CSRSS ====<br />
<br />
===== WIN32CSR =====<br />
* Move PrivateCsrssManualGuiCheck from user32 to win32csr ([[Giannis Adamopoulos]])<br />
<br />
== TOOLS ==<br />
<br />
=== RBUILD ===<br />
* Fix "format not a string literal and no format arguments" build warnings. ([[Eric Kohl]])<br />
<br />
== Uncategorized ==<br />
<br />
=== 0 ===<br />
* Use the full name we get from SearchForExecutable when building the command line for CreateProcess so we get proper name in argv later. ([[Kamil Hornicek]])<br />
<br />
=== ADVAPI32_LSASRV ===<br />
* Prepare LsapValidateDbHandle for access checks. ([[Eric Kohl]])<br />
* Move the functionality of LsaQueryInformationPolicy (advapi32.dll) into the new function LsarQueryInformationPolicy (lsasrv.dll). ([[Eric Kohl]])<br />
* Remove dead code from advapi32.dll. ([[Eric Kohl]])<br />
<br />
=== APPS ===<br />
* Damir Aliev: Properly convert encoding in cmdline tools. ([[Aleksey Bragin]]; {{bug|3487}})<br />
<br />
=== ARMDDK ===<br />
* Oh, right, forgot how this was laid out. should fix ARM build. ([[sir_richard]])<br />
* Define some spinlock functions. ([[sir_richard]])<br />
<br />
=== ASM ===<br />
* Merge asm related changes from cmake branch. ([[Timo Kreuzer]])<br />
* revert r49824 ([[Timo Kreuzer]])<br />
* Add include guards to asm.inc and comment out broken ljmp macro ([[Timo Kreuzer]])<br />
* Add syscalls.inc, containing assembler macros to generate syscall stubs (all supported architectures) ([[Timo Kreuzer]])<br />
* Change the macros to prefix the labels with Nt or Zw depending on whether we build usermode or kernel mode stubs ([[Timo Kreuzer]])<br />
* Create zw.S using the macros ([[Timo Kreuzer]])<br />
* try to fix build. ([[Timo Kreuzer]])<br />
* How did it work before? Probably by chance. "As usual"(tm) ([[Timo Kreuzer]])<br />
<br />
=== CLASSPNP_CDROM_NEW ===<br />
* Remove useless files. ([[sir_richard]])<br />
<br />
=== EXPLORER_NEW ===<br />
* Provide the ability to query version info (needed for task (DavidErceg; {{bug|4386}})<br />
* grouping). (DavidErceg; {{bug|4386}})<br />
* Open a context menu, when a task is right clicked. (greenie; {{bug|4671}})<br />
* Implement resizing the work area. (greenie; {{bug|5846}})<br />
<br />
=== FORMATTING ===<br />
* Apply consistent indentation of 4 spaces and ansi style formatting. ([[Timo Kreuzer]])<br />
* Remove the long GPL header ([[Timo Kreuzer]])<br />
* Fix formatting in message.c ([[Giannis Adamopoulos]])<br />
* Replace big file header with small header ([[Timo Kreuzer]])<br />
* apply consistent indentation of 4 spaces ([[Timo Kreuzer]])<br />
* No code change ([[Pierre Schweitzer]])<br />
* Apply indentation of 4 spaces. ([[Timo Kreuzer]])<br />
* Apply indentation of 4 spaces. ([[Timo Kreuzer]])<br />
<br />
=== FREELDR_NTFS ===<br />
* Some fixes and addings to the NTFS header. ([[Pierre Schweitzer]])<br />
* To be used later in order to fix NTFS driver in FreeLdr ([[Pierre Schweitzer]])<br />
<br />
=== HEAP ===<br />
* Move on to using a real HEAP_LOCK structure for a heap lock. ([[Aleksey Bragin]])<br />
* Implement kernel-mode counterparts of this lock too. Right now these don't introduce much of a difference, but they are going to be properly used by the new heap manager code. ([[Aleksey Bragin]])<br />
* Fix allocated/free memory fillers to match those Windows uses (winetests) ([[Aleksey Bragin]])<br />
* Add missing coalesce-on-free flag check in RtlCreateHeap ([[Aleksey Bragin]])<br />
* Turn on tail check/pattern filling in RtlAllocateHeap. ([[Aleksey Bragin]])<br />
* Add extra stuff storage support in RtlAllocateHeap and its helpers. ([[Aleksey Bragin]])<br />
* Set win32 statuses where necessary. ([[Aleksey Bragin]])<br />
* Return success in RtlValidateHeap to reduce spam when running winetest. ([[Aleksey Bragin]])<br />
* Roel Messiant: Remove old-style Peb->ProcessHeaps assignment from RTL, it's already done by MM. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix a typo (missing else) between two if branches, which fixes commit routine support. ([[Aleksey Bragin]])<br />
* Properly save requested size if 0 was given (1 should be allocated, but 0 saved as a requested amount). Fixes winetests. ([[Aleksey Bragin]])<br />
* Remove unnecessary dprints. ([[Aleksey Bragin]])<br />
* Set proper heap flags (tail and free checking) in case heap validation is enabled. Fixes another bunch of winetests. ([[Aleksey Bragin]])<br />
* Roel Messiant: Fix infinite loop in RtlDestroyHeap if heap contained big blocks. ([[Aleksey Bragin]])<br />
* Implement setting/getting heap user values and flags (very easy provided heap design is now proper). Amount of winetest failures is down to 12 (but 3 crashes in child processes). ([[Aleksey Bragin]])<br />
* Move (and cleanup) private heap definitions and structure to a standalone header file heap.h. It's explicitly included in heap_rewrite.c and heapdbg.c to prevent conflicts with the existing heap manager in heap.c. ([[Aleksey Bragin]])<br />
* Add 64 bit compatibility. ([[Aleksey Bragin]])<br />
* Properly set HEAP_GROWABLE flag if dwMaximumSize is 0 in HeapCreate. Also check for dwMaximumSize validity. Fixes out-of-memory problems when running "heavy" applications like Office 2003 setup with a new heap manager (which actually respects HEAP_GROWABLE flag). ([[Aleksey Bragin]])<br />
* More resource fixes making warnings vanish when built with cmake. ([[Daniel Reimer]])<br />
* RC file fixes for inconsistences shown up by the recent dll work in r49105. ([[Daniel Reimer]])<br />
* Fix RtlQuery/SetHeapInformation prototypes, move them to an appropriate place. ([[Aleksey Bragin]])<br />
* Implement RtlQuery/SetHeapInformation. ([[Aleksey Bragin]])<br />
* Implement in-place block growing. ([[Aleksey Bragin]])<br />
* Amount of winetest heap failures is down to 6 (3 exceptions still happen). ([[Aleksey Bragin]])<br />
* Fix DWORD -> ULONG in function definitions too. ([[Aleksey Bragin]])<br />
* Implement heap validation support. ([[Aleksey Bragin]])<br />
* Add ability to dynamically allocate UCR descriptors when preallocated amount is exhausted. ([[Aleksey Bragin]])<br />
* Fix a few bugs in RtlpFindAndCommitPages and in deactivated RtlpDecommitFreeBlock. ([[Aleksey Bragin]])<br />
* Enable free blocks decommitting. ([[Aleksey Bragin]])<br />
* New heap manager would now be ready to replace the old one. ([[Aleksey Bragin]])<br />
* Add special debug heap function declarations and stubs. ([[Aleksey Bragin]])<br />
* Add a useful inline for detecting whether a special or normal heap is going to be used. ([[Aleksey Bragin]])<br />
* Implement parameters validation ("DebugHeap") in all used RTL heap APIs. Winetests failures down to 4. ([[Aleksey Bragin]])<br />
* Hackfixed build by stubbing RtlpValidateHeapHeaders(), RtlpValidateHeapEntry() and hackplementing RtlpValidateHeap(). ([[Pierre Schweitzer]])<br />
* To be properly fixed. ([[Pierre Schweitzer]])<br />
* Fix a typo which lead to incorrect flags being forced. Fixes last remaining major winetest failures (only 1 GlobalAlloc/Free implementation related one is left to be fixed). ([[Aleksey Bragin]])<br />
* Time has come to get rid of a slightly modified implementation of WINE's heap, which is a hack based on Windows 95's heap implementation, itself a hack of DOS memory management. It supported 3 out of the 18 possible NT Heap Flags, did not support custom allocation/deallocation routines, and was about 50-80x slower with fragmentation rates up to 500x higher when compared to NT's LFH (WINE is lucky because the advanced NT Heap features are used in kernel-mode usually, not in user-mode, and they are crossing their fingers for this being the same). Several high-end SQL/Database applications would significantly benefit from custom heap features provided by NT. Not to say about removing crappy support for a custom Commit routine and crappy support for User-defined flags and the User-defined value. ([[Aleksey Bragin]])<br />
* So, the glorious moment for a new heap manager, which is (to remind you) a totally new heap manager, resembling real NT heap manager, based on data structures similar to Windows 2003 and Vista+'s heap structures, supporting advanced heap flags (e.g. useful for debugging), having substantially lower fragmentation rates (and thus speed and reliability), having native support for user-defined flags and user-defined values, also native support for a custom commit routine, which is very important for trunk's win32 subsystem. It also reserves, commits, decommits and frees memory on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary. Not to say about support for per process heaps, with a proper lock, and a further support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* Yeah, I'm not a fun person :D ([[Aleksey Bragin]])<br />
* Update the rapps database. ([[Daniel Reimer]])<br />
* Fix a typo (assignment) in the ASSERT, spotted by Johannes Anderwald. ([[Aleksey Bragin]])<br />
* Peer review rocks. ([[Aleksey Bragin]])<br />
* RtlpInsertFreeBlockHelper: Don't validate the Previous Size of the next Heap Entry when inserting a free Heap Entry into a free list. Should solve bug #5843 and may affect bug #5857. ([[Roel Messiant]])<br />
* All callers of this function already perform this check, except for RtlpInsertFreeBlock, a function used during Heap Segment creation/expansion. ([[Roel Messiant]])<br />
* RtlpInsertFreeBlock creates multiple free Heap Entries (using the helper function) if the free space is too big to be contained in a single Heap Entry. ([[Roel Messiant]])<br />
* In such a case however, it creates a Heap Entry and calls the helper before creating the next Heap Entry, which triggers this assert. ([[Roel Messiant]])<br />
* FontSmoothing" system parameter registry key should be REG_SZ (as it is in Windows, and as other SPIs are). ([[Aleksey Bragin]])<br />
<br />
=== INTRIN ===<br />
* Implement _mm_sfence, _mm_lfence, __faststorefence (for amd64) ([[Timo Kreuzer]])<br />
* Don't use __sync_synchronize() for _ReadWriteBarrier, as it issues an mfence instruction and this is not what we want ([[Timo Kreuzer]])<br />
* Remove "BUGBUG" comment, because the fact that _ReadBarrier and _WriteBarrier are full (compiler) barriers isn't critical. ([[Timo Kreuzer]])<br />
<br />
=== NCI ===<br />
* Ue macros for the other nci generated files, too and delete nci-tool. ([[Timo Kreuzer]])<br />
<br />
=== NPFS_KERNEL32 ===<br />
* Switch back to the old pipe wait code but keep the new code in place (disabled). ([[Eric Kohl]])<br />
<br />
=== NTOS ===<br />
* Lookup the special labels from above when initializing the System DLL. Only lookup INT2E vs SYSENTER on x86, other architectures don't need a stub. ([[sir_richard]])<br />
* Bitmap resources start at index 1, not 0. Also make sure we don't go past the maximum IDB_ resource index for no reason, and check the size of the resource instead of assuming it's going to be one page. ([[sir_richard]])<br />
* Stop using MiInsertInListTail and MiRemoveHeadList in the deprecated ReactOS page functions. Those two functions do not adequately support the semantis needed for page insertion/removal and should've never been used. MmAllocPage now uses MiRemoveAny/ZeroPage, and MmDereferencePage uses MiInsertPageInFreeList. Should help with some corruptions. More is coming. ([[sir_richard]])<br />
* Don't use dangerous MiRemoveHeadList in MDL page allocation, use MiRemoveAnyPage instead. ([[sir_richard]])<br />
* Don't repurpose pages from the zero/free page list without actually unlinking the page first! This should fix even more corruptions. ([[sir_richard]])<br />
* Adding colored page lists means we need to start using the OriginalPte field as a forward/back link. This is shared with AweReferenceCount, which ReactOS uses as the RMAP list head. However, RMAPped pages shoudl never be free/zero, and non-free-zero pages will never have a color backlink in OriginalPte, so it should theoretically be safe to do this. However, it's possible for the RMAP "get" function to be called on a free/zero page (which would normally return NULL), but with color chaining enabled, the "get" function would misinterpret the backlink as an RMAP entry. Therefore, we overload the ParityError bit to signify "there is an RMAP". The get/set functions now handle this, and the color linkage will ASSERT this later. This way, a colorlink with ParityError == FALSE is not treated as an rmap list head. ([[sir_richard]])<br />
* Remove MiZeroPage, use MiZeroPhysicalPage instead. They work pretty much the same except the needless raise to DISPATCH_LEVEL. ([[sir_richard]])<br />
* Get rid of the messed up MiMapPageToZeroInHyperSpace which was hacking into MiMapPagesToZeroInHyperSpace. Now MiMapPagesToZeroInHyperSpace is properly implemented to use chained PFNs, and the MmZeroPageThread code has been modified to correctly use the new mechanism. ([[sir_richard]])<br />
* Zero page mapping now happens at PASSIVE trough MiMapPAgesToZeroInHyperSpace, not DISPATCH anymore. ([[sir_richard]])<br />
* More fixes are coming to remove the remaining MiRemoveHeadList and rewrite the zero page loop. Should fix more possible corruptions. ([[sir_richard]])<br />
* One last fix to the zero page thread before we move to ARM3: use MiRemoveAnyPage instead of dangerous MiRemoveHeadList. The code works on the assumption (validated by Windows through a bug check) that MiRemoveAnyPage always returns the first free page, and we also manually grab the first free page, and compare this is true. Nice way to detect PFN database corruption. ([[sir_richard]])<br />
* Fix MiInsertZeroAtBack to increment the MmAvailablePage count, since MiRemoveAnyPage decrements it (MiRemoveHeadList did not). ([[sir_richard]])<br />
* Zeroed pages should go at the front, not the back of the zero list. Going to the back is a special boot-only case on MP, which isn't supported. Implement zero-only version of MiInsertPageInList, remove MiInsertZeroPageAtBack. ([[sir_richard]])<br />
* Remove many other deprecated functions. Physical memory consistency should now be higher than in the past. ([[sir_richard]])<br />
* The RMAP entry only has a valid process if the address is in user-space, otherwise process is NULL. Only attempt to acquire the process rundown lock if a process actually exists. Fixes crashes caused by 48905. ([[sir_richard]])<br />
* Switch to using an ARM3, much more correct MmZeroPageThread. Stub support for discarding sections and listening to the Power Manager Idle Timer. ([[sir_richard]])<br />
* Use a synchronization (auto-reset) instead of notification event for the zero page thread, this way we don't have to reset it manually and query its state. Instead, a boolean MmZeroingPageThreadActive is checked instead. ([[sir_richard]])<br />
* Once we switch to colored lists, major improvements can be done for speed. ([[sir_richard]])<br />
* Write missing color code in certain PFN functions, and fix existing code where needed. Add some debugging. For now, turned off until testing succeeds. ([[sir_richard]])<br />
* Redocument which MMPFN fields are violated by ReactOS-internal values. This has gotten much better than before. ([[sir_richard]])<br />
* Fix straggling bugs in color table algorithms. ([[sir_richard]])<br />
* Enable color tables! Right now pages are merely entering and exiting the tables, the tables themselves are never used for allocations. This will change with further commits. ([[sir_richard]])<br />
* Add MiRemoveZeroPageSafe helper function, when a zero page is required, but the inline zeroing of MiRemoveZeroPage is not. This function will only try grabbing a zero page if one exists, otherwise a free page will be grabbed and zeroed with custom code of the caller's choosing. ([[sir_richard]])<br />
* Add concept of process color and system color. Compute correct color to use whenever requesting a page. ([[sir_richard]])<br />
* Uncondtionally enable the color code when inserting/removing pages. ([[sir_richard]])<br />
* For now, when requesting a page, colors are still ignored, and the global PFN lists are scanned instead. If there are no regressions, we are one patch away from that. ([[sir_richard]])<br />
* Fix a bug in MiRemoveAnyPage: it was always checking the colored zero page list, instead of checking the colored free page list the second time around. ([[sir_richard]])<br />
* Add definition for size of a page directory, and size of all page directories required per process (some architectures have more than one page directory per process/address space). ([[sir_richard]])<br />
* MiSetConsumer no longer achieves anything. Remove it. ([[sir_richard]])<br />
* Use SYSTEM_PD_SIZE instead of assuming that this is PAGE_SIZE, since this is not the case on (future) ARM and (current) AMD64 ports. ([[sir_richard]])<br />
* Remove some magic numbers in the pool code, using PTE_COUNT, MiAddressToPde, when needed. Also, the expansion code uses PDEs, not PTEs, so differentiate this, because on some systems (ARM), there are different structures for both. ([[sir_richard]])<br />
* Use MI_WRITE_INVALID_PTE. ([[sir_richard]])<br />
* ARM3 paged pool now works, the expansion bug has been fixed (and the code is more portable). Expect to see it gradually enabled soon. ([[sir_richard]])<br />
* He's climbing in yo PFN database, he snatching yo pages up, tryin to page em so y'all need to hide your pool hide your cache, and hide your working set cuz they grabbin' all the pages out there. We gonna page you, we gonna page you, so you can run and fault on that, run and fault on that, home boy, homeboy, home homeboy. ([[sir_richard]])<br />
* Enable ARM3 Paged Pool and remove all related deprecated code. Install tested on several VMs, it might cause new regressions. Let's fix them before 0.3.13 instead of reverting. ([[sir_richard]])<br />
* This is why you shouldn't let Antoine Dodson commit code. ([[sir_richard]])<br />
* Move all the Nt*Section API interfaces into ARM3 and rewrite most of the code to perform the same parameter validation and input checks as Windows does. Support all protection masks. Use correct section object access mask. Use appropriate SEH where needed. Pass 0-initialized local instead of NULL when needed. Don't assume certain parameters are OPTIONAL when they are not. Don't return SEH failures at the end of the system call, the kernel usually returns the result of the system call proper. Call DbgkMapViewOfSection in scenarios where it would not have gotten called before. Protect against certain kinds of kernel-mode access from user-mode. ([[sir_richard]])<br />
* Move unimplemented Mm*Section APIs into ARM3 as well. ([[sir_richard]])<br />
* Go ahead and now fill out the OriginalPte field for PFNs initialized with MiInitializePfn(ForOtherProcess). They should only belong to ARM3 so they'll never have SwapEntry/RMAP associated with them. This functionality is important for future Prototype PTE support, among other things, as it lets us get the original PTE value written for a given PFN entry. ([[sir_richard]])<br />
* Define MI_MAKE_PROTOTYPE_PTE macro to make a real prototype PTE from a PTE. Define counter-part MiProtoPteToPte to recover the true PTE from a given Prototype PTE. ([[sir_richard]])<br />
* Define MI_PTE_LOOKUP_NEEDED instead of using 0xFFFF. The name was found in checked build assertion strings. ([[sir_richard]])<br />
* Add MM_VIEW (used for System-mapped Section Views) and MM_SESSSION (used to define the system/session view mappings) structure definitions. ([[sir_richard]])<br />
* Initialize system views by calling MiInitializeSystemSpaceMap. This sets up the lock, bitmap, and hash table. ([[sir_richard]])<br />
* Implement/fixup the code paths during page faults that are needed to succesfuly resolve a demand page associated with a pagefile backed ARM3 section (which uses Prototype PTEs). A lot of the code was already there but assumed we were using Prototype PTEs only for the shared user data page. By combining that code with the typical demand-zero fault code, we obtain the needed paths. For now, only tested with ARM3 sections that are page-filed backed (not image or data-file backed) mapped into system view space (MmMapViewOfSectionInSystemSpace), not user-mode addresses (which need VADs). The code to actually create/map these doesn't exist in trunk yet, the purpose of this checkin is to test the new fault changes to make sure they don't cause negative effects to already-working faults. ([[sir_richard]])<br />
* Implement MmCreateArm3Section, which creates ARM3-backed sections, but only for pagefile-backed memory at the moment. It uses MiCreatePagingFileMap and creates the expected Segment, Subsection, ControlArea and Section objects described in Windows kernel internals literrature. It's surprisingly easy and only takes 200 lines of code. ([[sir_richard]])<br />
* Implement MiMapViewInSystemSpace, all it took was another 250 lines and we can now map ARM3 sections into memory. Accessing them causes a fault, which we correctly handle with the prototype PTE fault code. ([[sir_richard]])<br />
* Added a bogus allocation flag that can be used with Nt/MmCreateSection and MmMapViewInSystemSpace to take the ARM3 path instead. Only for internal testing at the moment. ([[sir_richard]])<br />
* Now we need to look at how to allow mapping these into user-space as well... ([[sir_richard]])<br />
* Nobody reads/checks for MEMORY_AREA_CACHE_SEGMENT. Might as well just call this zero (no logical change). ([[sir_richard]])<br />
* We don't support SEC_BASED for ARM3 sectios either, ASSERT that. ([[sir_richard]])<br />
* Nobody actually writes TRUE for WriteCopyView in the MEMORY_AREA data structure, so this field is useless (always false). Remove all instances of its use. ([[sir_richard]])<br />
* Nobody uses MEMORY_AREA_SYSTEM anymore, call these MEMORY_AREA_OWNED_BY_ARM3 for now. We'll have to sync this code with x86 later anyway. ([[sir_richard]])<br />
* Use the Spare flag in the VAD as a ReactOS/MemoryArea specific flag to signify that this VAD is associated with a MEMORY_AREA and should be unlinked at process exit, but not freed. This is because MemoryAreas themselves are cleaned up later, and in the future their associated VADs (not yet in Trunk) will also be parsed. In the process death scenario, those VADs will be freed, but not unlinked (since it would already have been unlinked). ([[sir_richard]])<br />
* Add a _64K macro definition so we can stop typing out 65536 all the time. ([[sir_richard]])<br />
* Delete deprecated handling of MEMORY_AREA_IO_MAPPING. Delete all MEMORY_AREA definitions except the ones for SEGMENT_VIEW and VIRTUAL_MEMORY. All other memory is now owned by ARM3! ([[sir_richard]])<br />
* Delete WriteCopyView flag from MEMORY_AREA (unused, and was taking up 4 bytes due to alignment), and add a Vad pointer (takes up 4 bytes -- no actual size change). ([[sir_richard]])<br />
* For VM and Section MEMORY_AREAs mapped in user-mode, build a "fake" VAD and insert it into the VAD Root of the Process. This means there is now a consistent view between ARM3 and RosMm in terms of user-mode address space layout, which will come in handy later. ([[sir_richard]])<br />
* Destroy the MEMORY_AREA's VAD when the MEMORY_AREA itself is deleted. Watch out for the scenario explained in a previous check-in, where the VAD was caught by the MmCleanProcessAddressSpace vad-cleanup-loop. ([[sir_richard]])<br />
* Implement MiInsertVad to restore the old functionality of MiInsertNode when the current parent and insertion result is not yet known. It obtains the information and calls MiInsertNode. ([[sir_richard]])<br />
* Add the tiny little bit of code required to correctly handle user-mode faults on ARM3 mapped sections in certain limited scenarios. ([[sir_richard]])<br />
* Implement ARM3 version of MmMapViewOfSection, only for ARM3 pagefile-backed sections, and without any special flag support. Tested and works great, with the new pagefault code correctly finding the Prototype PTE for the VAD. ([[sir_richard]])<br />
* Make every VAD insert also create a MEMORY_AREA. Now the two address space views should be completely synchronized and we can try removing the hack that was done for PEB/TEB support (which will remove the 200 thread regression). ([[sir_richard]])<br />
* Implement MiGetNextNode and MiFindEmptyAddressRangeInTree. ([[sir_richard]])<br />
* When shutting down, call Cc to flush the dirty cached pages, otherwise these might've gotten lost (and lead to lost/corrupted data on disk). ([[sir_richard]])<br />
* Don't assume that CcFlushDirtyPages will run with APCs disabled. Go ahead and actually enter/leave a critical region (Acquire/ReleaseForLazyWrite depend on this). The guarded mutex does disable APCs, but it's released when the actual flush happens. ([[sir_richard]])<br />
* Delete a bunch of junk, 5 less files in Mm now (also moved some functions around). Delete unused functions where found. ([[sir_richard]])<br />
* The modified page writer should run at a high priority such as 27, not in idle mode at priority 1 -- otherwise dirty pages never get flushed out. ([[sir_richard]])<br />
* Reimplement MmGetFileNameForAddress, MmGetFileNameForSection, MmGetFileObjectForSection to also support ARM3 sections. Shouldn't affect anything other than the user-mode debugging support. ([[sir_richard]])<br />
* Fix whitespace typo in comment (two spaces instead of one). ([[sir_richard]])<br />
* That's right. I'm not a fun person. ([[sir_richard]])<br />
* Build fix. ([[sir_richard]])<br />
* High-level interface fixes to NtAllocateVirtualMemory/NtFreeVirtualMemory: ([[sir_richard]])<br />
* Validate MEM_LARGE_PAGES, MEM_PHYSICAL flags. Check for permission to use MEM_LARGE_PAGES. ([[sir_richard]])<br />
* Validate protection mask. ([[sir_richard]])<br />
* Validate MEM_RELEASE and MEM_DECOMMIT. ([[sir_richard]])<br />
* Perform correct SEH in NtFreeVirtualMemory. ([[sir_richard]])<br />
* Protect against overflows past VAD/User address ranegs. ([[sir_richard]])<br />
* Only reference the process by handle if this isn't already the current process. ([[sir_richard]])<br />
* If this isn't the current process, attach to it during the duration of the VM operation. ([[sir_richard]])<br />
* Temporary debugging. ([[sir_richard]])<br />
* Implement monitor bitmap support for the display dialog (Carlo; {{bug|3158}})<br />
* Fix incorrect codepage values (Carlo; {{bug|3158}})<br />
* Look for applets in windows dir as well as system dir (Carlo; {{bug|3158}})<br />
* Fix bugs in the VAD algorithms, we should be rounding up, not down. ([[sir_richard]])<br />
* My attempt at making bugchecks a thing of the past has failed, someone has caught the typo. Bugchecks will now happen in ReactOS again instead of being ignored. Maybe you can "forget" to merge this one with the release branch? ;-) ([[sir_richard]])<br />
* Add support for user-mode VAD faults on page tables (just a couple lines of extra code). ([[sir_richard]])<br />
* Add support for user-mode VAD demand zero faults. ([[sir_richard]])<br />
* Remove broken ASSERT. ([[sir_richard]])<br />
* Hackfix a hack. Should get rid of the recent VAD assert in user32/bpp changes. ([[sir_richard]])<br />
* Fix copy/paste error. ([[sir_richard]])<br />
* Add MmProtectToValue array to convert MM/PTE protection values to Win32 protection flags. ([[sir_richard]])<br />
* Handle faults on non-demand-zero PTEs (and/or demand-zero PTEs that are not READWRITE (such as EXECUTE_READWRITE)). ([[sir_richard]])<br />
* Use MI_SET_PFN_DELETED where we missed it. ([[sir_richard]])<br />
* Implement support for deleting user-mode pageable VM addresses. Now when cleaning up the process address space, MiDeleteVirtualAddresses is called for the VADs, so this will now actually free the PEB/TEB pages that were previously getting leaked for each thread/process (a known regression I introduced when moving to VADs for PEB/TEB). ([[sir_richard]])<br />
* Fix brainfart (an interesting bug we would've never hit, but a bug nevertheless). ([[sir_richard]])<br />
* Complete the VAD-to-MAREA Synchronization hack by removing fake MAREAs that were added when inserting real VADs. To do this, we have to track the fake MAREA associated with a VAD, so we overload the FirstProtoTypePte field in the VAD, if this is NOT a section VAD (which we don't use yet). We'll figure something out for section VADs later. ([[sir_richard]])<br />
* Now that VAD and MAREA views are synchronized, remove the VAD limit and let VADs be created at any address. Also do not create an arbitrary 16MB VAD memory area anymore. This basically now allows for as many PEB/TEBs as can fit in the address space, fixing the recent known regression that limited the number of threads a process could have. ([[sir_richard]])<br />
* Store the protection mask in the Fake VADs as well, we can read/convert this from the MAREA protection value. ([[sir_richard]])<br />
* Reimplement NtQueryVirtualMemory to use VAD information instead. Even though Alloc/Free are still MAREA-based, the fake VADs we build ought to be enough to make the query API work for certain limited scenarios. Only some paths are implemented and it's lacking SEH, but it's good enough for the install/boot requirements. If there are any regressions, please file bugs. ([[sir_richard]])<br />
* Remove the Bavarian hack, I no longer think it is needed. ([[sir_richard]])<br />
* Remove the "35314 sginsberg /* REACTOS Mm Hack of Doom */". Apocalypse averted? ([[sir_richard]])<br />
* Clean up Mm initialization, there is now no-more RosMM stuff done in Phase 0 of MmInit, only ARM3 runs. The kernel address space and memory areas are only initialized in Phase 1, because that's where sections are started up, and they're the only thing other than VM which still use memory-areas. ([[sir_richard]])<br />
* Implement MiDecrementReferenceCount and rewrite large parts of the ProbeAndLock/Unlock MDL API to fully use ARM3 APIs, dropping MmReference/DereferencePage behind. ([[sir_richard]])<br />
* Fix many MDL API bugs: correctly check for I/O pages, use LIST_HEAD instead of -1, track system-wide locked pages, use the process working set lock instead of the address space lock, add check for cross-ring MDL mappings, and make some small optimizations. ([[sir_richard]])<br />
* Make some more fixes in MmAllocatePagesForMdl, MmFreeMdlPages to make the PFN entries more "correct". ([[sir_richard]])<br />
* Had a little breakthrough: instead of complicating our lives and hiding certain ReactOS-Mm fields inside legitimate ARM3/MMPFN fields, differentiate between "legacy" (RosMm) and ARM3 pages. The legacy allocator (MmAllocPage/MmRequestPageMemoryConsumer) will use the non-paged pool to allocate a MMROSPFN add-on (8 bytes), in which the RMAP list head and SWAPENTRY are stored. When a legacy "free" is done, this data is deleted. Additionally, we can now tell apart between ARM3 and RosMm pages, so appropriate ASSERTs have been added to make sure the two never cross paths (which should safely let us use all the PFN fields now and implement working sets, etc...). I don't know why I didn't think of this sooner. ([[sir_richard]])<br />
* Get rid of MC_NPPOOL and MC_PPOOL memory consumers since those are not managed by RosMm anymore. Use MC_SYSTEM for the page table stuff that RosMm still handles, and keep MC_USER and MC_CACHE for the current Section/VirtualMemory/Cache RosMm code. ([[sir_richard]])<br />
* Implement the MAREA<->VAD hack for section VADs as well. ([[sir_richard]])<br />
* Use allocation attribute 0x1 instead of 0xC0000000 to let RosMm know this is an ARM3 section. 0xC0000000 is actually a valid combination of SEC_ flags, 0x1 is illegal and thus recognized. ([[sir_richard]])<br />
* Add support for unmapping ARM3 sections, destroying segments and control areas, and clearing out subsection PTEs. ([[sir_richard]])<br />
* Add support to MiDeletePte/MiDeleteVirtualAddresses to handle Section VADs. ([[sir_richard]])<br />
* Add support to MiDeletePte to handle valid, prototype PTEs. ([[sir_richard]])<br />
* Add MEM_TOP_DOWN support to ARM3 section code. ([[sir_richard]])<br />
* Add support for unmapping currently mapped ARM3 section views at process termination. ([[sir_richard]])<br />
* Use the new ARM3 section code for mapping the NLS section in the system (tests the system-view mapping code) and in each new process (tests the data-mapping code). Section is correctly unmapped at process termination time! ([[sir_richard]])<br />
* C Pointer Math will bite even the most experienced programmer in the ass. Fix wrong calculation which led to ASSERTs and memory corruption (since the last revision). ([[sir_richard]])<br />
* Fix multiple math/logic bugs in the PrototypePTE paths. Caught while trying to switch the Win32k GDI Handle Table to ARM3 sections. ([[sir_richard]])<br />
* Go back to using RosMm for the NLS section since supposedly this causes issues on some systems. This is the only actual change in r206/208/209, so if Caemyr's data is correct, this fill fix it. ([[sir_richard]])<br />
* Protect Arty's changes with #ifdef NEWCC, otherwise this code ASSERTs and crashes as soon as a pageout operation is required. Since your advanced test/regression systems boot into configurations with 1GB+ RAM, you never even test these paths and one could put an ASSERT(FALSE) and you wouldn't even notice it (as proven). ([[sir_richard]])<br />
* Remove merge artifact from newcc. ([[sir_richard]])<br />
* Make sure we don't get a user-pointer back from MmMapInSystemSpace. ([[sir_richard]])<br />
* Sanity checks when dealing with creating/cleaning process address space. ([[sir_richard]])<br />
* Set the VmDeleted flag when the process address space is being nuked. ([[sir_richard]])<br />
* Fix typos. ([[sir_richard]])<br />
* Assert nobody tries to touch the sharecount of a non-ARM3 page. ([[sir_richard]])<br />
* ASSERT nobody tries to put ARM3 pages into the MC_USER LRU. ([[sir_richard]])<br />
* You can't just set MDL_LOCKED_PAGES without actually... locking the page. Add a MmReferencePage when doing so, so when that a paging read/write IRP gets completed (and MmUnlockPages is called), the page gets handled correctly. Can now boot with 64MB RAM without ASSERTs. ([[sir_richard]])<br />
* Fix one of the MDL code paths that isn't getting called frequently. ([[sir_richard]])<br />
* Fix a bug in MmFindGapBottomUp which could make it return an address lower than what the caller said should be the lowest address. ([[sir_richard]])<br />
* Fix a bug in the MDL Code which would dereference a completely bogus page frame index. ([[sir_richard]])<br />
* Misc typo and cleanup fixes. ([[sir_richard]])<br />
* CR3 should be PDE_BASE, not PTE_BASE! ([[sir_richard]])<br />
* Define DemandZeroPte. ([[sir_richard]])<br />
* Define an array of MI_USAGE integers to track what a PFN is used for. ([[sir_richard]])<br />
* Extend the MMPFN structure for ReactOS-specific PFN tracing mechanism. ([[sir_richard]])<br />
* Add macros to track page usage and process/extra-data (not yet used). ([[sir_richard]])<br />
* Add page-tracking macro calls wherever needed. MI_TRACE_PFNS is still off, though, so this code won't be called. ([[sir_richard]])<br />
* Mark all initialization functions INIT_FUNCTION. ([[sir_richard]])<br />
* This will save ~280KB of RAM once we dump INIT from RAM in a future patch. ([[sir_richard]])<br />
* Display current free RAM at certain checkpoints. ([[sir_richard]])<br />
* Implement the idle loop in C. ([[sir_richard]])<br />
* Make idle loop portable. Can be moved out of /i386 now. ([[sir_richard]])<br />
* Context switch in C instead of ASM. Can be made more portable, but it's a good start. Unless Timo rewrites it. ([[sir_richard]])<br />
* KiDispatchInterrupt (the DPC handler) in C, instead of ASM. ([[sir_richard]])<br />
* Optimize new context switching code to avoid wasted cycles. ([[sir_richard]])<br />
* Assign a working set to the system process and correctly initialize its address space. ([[sir_richard]])<br />
* Assign the working set list address, system-wide, but per-process (in hyperspace). ([[sir_richard]])<br />
* Give every process its working set page, and store it. Build a bogus working set list (MMWSL). ([[sir_richard]])<br />
* Use the process working set list (MMWSL) to track page table references during faults, just as Windows does. ([[sir_richard]])<br />
* Correctly initialize the colored page list heads and assert their validity. ([[sir_richard]])<br />
* Fix bugs in MiAllocateContiguousPages. Fixes an ASSERT Caemyr was seeting a lot (the cont-able ASSERT). ([[sir_richard]])<br />
* Part 1 of fixes: For some reason beyond me, I had abbreviated ([[Art Yerkes]])<br />
* MiCowSectionPage to always assume CoW rather than always not ([[Art Yerkes]])<br />
* CoW for cache sections. ([[Art Yerkes]])<br />
* Make sure we're looking for cache type sections rather than ([[Art Yerkes]])<br />
* as we were in the branch) data file sections. More needed. ([[Art Yerkes]])<br />
* Fix another bug in the continuous memory allocation code, which would go off-by-one while looping the PFN entries for the allocation, and corrupt the PteFrame/PteAddress of an unrelated PFN entry. If this PFN was in the active lists, it would cause page table leaks and faults, if the page was on a free list, it would override the colored list backlink and corrupt the list, later causing unlinked pages to remain linked to the list. ([[sir_richard]])<br />
* Fix a bug in MiRemovePageByColor which caused corruption of the page list and could lead to crashes, re-use of freed memory, assuming active memory was free, etc. ([[sir_richard]])<br />
* Use MI_PFN_ELEMENT in this code, as the extra checks done by MiGetPfnEntry are irrelevant and slow things down. ([[sir_richard]])<br />
* Remove some old ReactOS hacks before we had MMROSPFNDATA. ([[sir_richard]])<br />
* Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the way page allocations are given out and creates a less uniform physical memory layout. The fact this now works means that the PFN lists are finally now sane. ([[sir_richard]])<br />
* Bugfixes for the I/O Controller Object. ([[sir_richard]])<br />
* Define portable MI_MAKE_ACCESSED_PAGE macro. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to account ARM, where the PDE and PTE formats are different. ([[sir_richard]])<br />
* Fix MiDetermineUserGlobalPteMask to use portable PTE macros instead of hard-coding x86-only fields. ([[sir_richard]])<br />
* Don't put boot.s in "arch" anymore, it's part of "boot" now. ([[sir_richard]])<br />
* Erm, why is it that the ARM compiler detects this obvious bug, but x86 does not? Fix missing ShareCount zeroing when unlocking an MDL. ([[sir_richard]])<br />
* Errr... wow! Another one caught by ARM GCC. I can swear x86 GCC used to catch these. Did someone change warning settings? Anyhow, fix a *f++ which increments the pointer, not the value INSIDE the pointer (*f)++. Fixes MiDeleteSystemPageableVm. ([[sir_richard]])<br />
* Fix incorrect assumptions that a PDE == PTE which have crept up throughout new ARM3 code. ([[sir_richard]])<br />
* Fix a couple more unportable directly "Hard" PTE field accesses, instead of using portable MI macros. ([[sir_richard]])<br />
* Cleanup some of the pool code that had really messed up PDE vs PTE. ([[sir_richard]])<br />
* Define the number of page directoty levels for ARM. ([[sir_richard]])<br />
* Comment out some ARM3 code that won't be needed now that most of the x86 code is in C. ([[sir_richard]])<br />
* Fixes all but one build error. ([[sir_richard]])<br />
* Add MiGetPteOffset for ARM. All of the kernel compiles, but does not link yet. ([[sir_richard]])<br />
* Fix up ARM code to match recent ARM3 changes. ([[sir_richard]])<br />
* Do not use initguid inside every single file to zillionplicate the GUIDs! Why doesn't the x86 linker catch this?!!? ([[sir_richard]])<br />
* Some more ARM build and linker fixes, moving some of the new x86 C code into ARM. This should really be shared later. ([[sir_richard]])<br />
* Totally broke thread context switching on ARM for now. It's a Good Thing. ([[sir_richard]])<br />
* Fix 16-bit interlocked operations on ARM (GCC doesn't provide built-ins). ARM should build now. ([[sir_richard]])<br />
* STATUS_SUCCESS is not the only succesful return code. ([[sir_richard]])<br />
* Seems like cpsr_c doesn't work in this case? Need to investigate. Put an infinite loop in the entrypoint on ARM. ([[sir_richard]])<br />
* Roel Messiant: Fix NtQueryObject to return the required buffer size if the buffer provided was too small. Unimplemented paths behaviour is preserved. ([[Aleksey Bragin]])<br />
* Check that MaximumSize is valid value if the section is being backed by paging file. ([[Michael Martin]])<br />
* Always initialize TrapFrame segment selectors in KiEnterTrap, because further C code relies on at least TrapFrame->SegFs being correct. Running Arwinss on VirtualBox exposed this bug. ([[Aleksey Bragin]])<br />
* I wouldn't find solution for this bug without Timo's great help! ([[Aleksey Bragin]])<br />
* Remove IMAGE_FILE_MACHINE_NATIVE and IMAGE_FILE_MACHINE_ARCHITECTURE definitions, use only the former ([[Timo Kreuzer]])<br />
* Fix incompatibility with newer KiEnterTrap implementation. Should fix spontaneous issues I possibly introduced with my previous commit, and finally fixes that VirtualBox issue. ([[Aleksey Bragin]])<br />
* Fix memory region size calculation in MemoryBasicInformation in certain cases. Spotted by Michael Martin. ([[Aleksey Bragin]])<br />
* Fix a typo in region size calculation of special memory areas, which unbreaks OllyDbg & co. Thanks Michael Martin for the hint. ([[Aleksey Bragin]]; {{bug|5692}})<br />
* Do the required flush when the last reference to a cache stripe is released. ([[Art Yerkes]])<br />
* The installer now completes given enough ram in NEWCC=1, and writes an ([[Art Yerkes]])<br />
* understandable FS. There's at least one more problem preventing the ([[Art Yerkes]])<br />
* resulting installation from booting however. ([[Art Yerkes]])<br />
* Fix a bug in rmap where we were checking the next (unfortunately named ([[Art Yerkes]])<br />
* current) rmap for a segment membership. ([[Art Yerkes]])<br />
* Fix a mistake in cache trim. ([[Art Yerkes]])<br />
* ifdef detection of DirectMapping in section in NEWCC mode in page out. ([[Art Yerkes]])<br />
* Fix copypasta, thanks Victor! ([[Aleksey Bragin]])<br />
* Greatly simplify and fix the incorrect and overcomplicated if condition in IoIsOperationSynchronous(), based on MSDN description. Bug spotted, fix tested by Pierre. ([[Aleksey Bragin]])<br />
* Temporary bring back the old boot image until I or sir_richard commit a proper fix. ([[Aleksey Bragin]])<br />
* Reduce PDE/PTE confusion a little more. ([[Roel Messiant]]; {{bug|5791}})<br />
* MiQueryMemoryBasicInformation: Fall back on MEMORY_AREA data in sections until the MM rewrite also covers these. for more info. ([[Roel Messiant]]; {{bug|5791}})<br />
* Complete rewrite reserving and releasing of System PTEs. ([[Roel Messiant]])<br />
* The previous algorithm, in a nutshell, worked as follows: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by their base address. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping). ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Problems with the previous algorithm: ([[Roel Messiant]])<br />
* While the idea is that all PTEs in clusters are zeroed, which requesters rely on, cluster bookkeeping isn't zeroed on merges. ([[Roel Messiant]])<br />
* The side effect of this was that PTEs that weren't really zeroed were randomly delivered to requesters. ([[Roel Messiant]])<br />
* 99% of the time, allocations are serviced using the first cluster in the list, which is virtually always the first suitable cluster. ([[Roel Messiant]])<br />
* This is so because the ordering is based on the base address of the clusters, and allocations are serviced using the cluster tail. ([[Roel Messiant]])<br />
* Because the first cluster starts out as the whole pool, and the pool is quite sizable, it can deal with virtually allocations.. for a while. ([[Roel Messiant]])<br />
* A corollary of the previous point is *massive fragmentation* because: as long as an allocation isn't released back into the pool, ([[Roel Messiant]])<br />
* the space of previous allocations that have been released isn't reused because the first cluster can't suck them up, and enough allocations remain in use. ([[Roel Messiant]])<br />
* The combined effect of the previous two points: a first cluster that effectively shrinks mostly, with small clusters forming behind it. ([[Roel Messiant]])<br />
* Once the first cluster has shrunk far enough (which of course takes a long time), 90% of the space may still be free, scattered in mostly small clusters. ([[Roel Messiant]])<br />
* This would make decent sized allocations fail because of the heavy fragmentation. ([[Roel Messiant]])<br />
* An implementation detail that caused the head of the list to be treated as a genuine cluster when the first cluster in the list was too small. ([[Roel Messiant]])<br />
* The algorithm (as explained above) made this case quite unlikely until your system has been running for a while, after which it could happily ([[Roel Messiant]])<br />
* corrupt list heads of other pools, depending on where the list head is with respect to its own pool. ([[Roel Messiant]])<br />
* Empirically obtained data revealed that after just *booting to the desktop*, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained roughly 70 (unusable) clusters, blocking 15 to 20% of the pool. These figures increased to roughly 100 ([[Roel Messiant]])<br />
* clusters and 30 to 35% after opening a foxy browser and using it to visit a mathematically inspired search engine. ([[Roel Messiant]])<br />
* The same data also showed that over 95% of allocations requested just a single PTE, and a noticable allocation spike ([[Roel Messiant]])<br />
* also occured in the range of 65-128 PTEs. It should be clear optimizing for small allocations is a good idea, ([[Roel Messiant]])<br />
* and preferably encourage reuse the same PTEs for such allocations. ([[Roel Messiant]])<br />
* And the new algorithm was born: ([[Roel Messiant]])<br />
* PTE clusters are in a singly linked list, ordered by increasing cluster size. ([[Roel Messiant]])<br />
* All PTEs in the clusters are zeroed (except for cluster list bookkeeping) .. really this time! ([[Roel Messiant]])<br />
* Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them. ([[Roel Messiant]])<br />
* Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters. ([[Roel Messiant]])<br />
* Both in the reservation and release actions, insertions into the list preserve the increasing cluster size order. ([[Roel Messiant]])<br />
* Empirically obtained data now revealed that after just booting to the desktop, the pool for System Pte Space entries ([[Roel Messiant]])<br />
* contained exactly 2 clusters. This increased to 10 clusters after some minor internet browsing and watching a 5 minute video using a media player. ([[Roel Messiant]])<br />
* Fix a typo in the page fault handler that caused PDEs to be fixed up when they were in fact valid. ([[Roel Messiant]])<br />
* Only update the System Page Directory when expanding the paged pool. Fixes the PointerPde asserts. ([[Roel Messiant]])<br />
* On paged pool expansion, the system page directory and the process page directory of the calling process were updated. ([[Roel Messiant]])<br />
* When updating the process page directory, an assert made sure the PDE that got written was invalid. ([[Roel Messiant]])<br />
* In case of the System process, both page directories are located on the same physical page. ([[Roel Messiant]])<br />
* So when this process expanded the paged pool, the system page directory update automagically ([[Roel Messiant]])<br />
* updated the process page directory too. The assert therefore triggered. ([[Roel Messiant]])<br />
* Not explicitly updating the process page directory will result in a page fault later on, which is ([[Roel Messiant]])<br />
* handled by copying the required PDE from the system page directory to the process page directory. ([[Roel Messiant]])<br />
* Rumour has it this fix is incorrect because "something's wrong with the System PDE stuff". The lack ([[Roel Messiant]])<br />
* of any further info however leads to this change and explanation. ([[Roel Messiant]])<br />
* Remove undocumented defines from winuser.h and include undocuser.h when _WINE is defined. ([[Aleksey Bragin]])<br />
* crt header compatibility update: ([[Timo Kreuzer]])<br />
* define _USE_MATH_DEFINES for dsound, gdiplus, jscript and some win32k files ([[Timo Kreuzer]])<br />
* don't define HAVE_LRINT(F) in libsamplerate ([[Timo Kreuzer]])<br />
* Remove M_PI constants from win32k ([[Timo Kreuzer]])<br />
* Try to fix a winetst crash. ([[Timo Kreuzer]])<br />
<br />
=== NTOS_MM ===<br />
* N ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Initialize Found to FALSE in NtQueryVirtualMemory. I wonder how GCC missed uninitialized var usage? ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Implement case when NtQueryVirtualMemory is called with non-existing virtual address. ([[Aleksey Bragin]]; {{bug|3755}})<br />
* Handle various special cases in NtQueryVirtualMemory (e.g. querying illegal virtual addresses, shared memory area, etc). Example of an app doing this - OllyDbg. ([[Aleksey Bragin]])<br />
* Don't lie about page protection in MiQueryAddressState. Fixes PDFCreator-alike bugs. ([[Aleksey Bragin]]; {{bug|5627}})<br />
* Don't access pfn database directly, there is a function for this. Thanks sir_richard. ([[Aleksey Bragin]])<br />
<br />
=== NTOSKRNL_MM ===<br />
* Acquire rundown protection on process to make sure it is not being terminated and before attempting to do anything with the process. Fixed a rare case of PspDeleteProcess being called twice for a process, resulting in bugcheck. ([[Michael Martin]])<br />
* Fix the use of an uninitialized variable. ([[Amine Khaldi]])<br />
<br />
=== NTOSKRNL_NEWCC ===<br />
* Init Dummy var even if just used for debug to suppress warning ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PPC ===<br />
* Fix index out of bounds ([[Pierre Schweitzer]])<br />
* Fix sizeof() wrong usage ([[Pierre Schweitzer]])<br />
* Fix the fix, spotted by "ThFabba" on IRC ([[Pierre Schweitzer]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* PspCreateThread: If thread creation fails, dereference the Process object also to account for the reference taken at the beginning of the function. ([[Michael Martin]])<br />
* Remove mistakenly committed ASSERTs that were used during my tests. ([[Michael Martin]])<br />
* Revert r48857. The Process object is dereferenced when the Thread object is destroyed, so dont dereference it here. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* add a comment so that noone will stumble upon this atrocity a second time. ([[Timo Kreuzer]])<br />
<br />
=== PSDK_DDK ===<br />
* Add more missing definitions. Fix classpnp.h. ([[sir_richard]])<br />
* Last couple of fixes to headers. Classpnp can compile (and link) now. ([[sir_richard]])<br />
<br />
=== PSDK_NDK ===<br />
* Fix KPCR/KIPCR for ARM to match x86 more closely. Add KeGetTickCount for ARM. ([[sir_richard]])<br />
<br />
=== RTL_DPH ===<br />
* Add core DPH (Debug Page Heap) structures based on Windows 2003/Vista. ([[Aleksey Bragin]])<br />
* Add misc generic support routines. ([[Aleksey Bragin]])<br />
* Implement DPH version of RtlCreateHeap(). ([[Aleksey Bragin]])<br />
* Debug prints match those printed by Windows 2003. ([[Aleksey Bragin]])<br />
* Implement adding a new pool and allocating a new node. ([[Aleksey Bragin]])<br />
* Add a bunch of stubs. ([[Aleksey Bragin]])<br />
* Implement list manipulation routines: pool list, virtual list, unused list. ([[Aleksey Bragin]])<br />
* Implement node removal from an available list. ([[Aleksey Bragin]])<br />
* Implement more support functions: coalescing a node into the list of available nodes, finding a best fitting node for a given size, growing available virtual memory amount. ([[Aleksey Bragin]])<br />
* Implement other support locking/unlocking, handle-related routines. ([[Aleksey Bragin]])<br />
* Fix RtlpDphFreeVm definition. ([[Aleksey Bragin]])<br />
* Node lists related improvements: Add a function for removing a node from a free list, implement coalescing free nodes into an available list. ([[Aleksey Bragin]])<br />
* Implement a non-implemented case in RtlpDphAllocateNode when there is a need to allocate more virtual memory, and fix incorrect size calculation too. ([[Aleksey Bragin]])<br />
* Implement a function for validating the page heap block. ([[Aleksey Bragin]])<br />
* Implement RtlpPageHeapDestroy. Now we have two exported APIs ready: heap create and heap destroy. ([[Aleksey Bragin]])<br />
* Branch for the 0.3.13 release ([[Colin Finck]])<br />
<br />
=== RTL_HEAP ===<br />
* First commit of a heap manager rewrite. It introduces a totally new heap manager, with the following features: ([[Aleksey Bragin]])<br />
* Actually resembles real NT's heap manager; ([[Aleksey Bragin]])<br />
* Based on data structures similar to Windows 2003 and Vista+'s heap structures; ([[Aleksey Bragin]])<br />
* Supporting advanced heap flags (e.g. useful for debugging); ([[Aleksey Bragin]])<br />
* Substantially lower fragmentation rates (and thus speed and reliability) than the existing Wine's implementation. It's going to be further enhanced by adding a frontend allocator (for example, as lookaside lists, or as a Low Fragmentation Heap alike frontend in Vista+ systems); ([[Aleksey Bragin]])<br />
* Real support for user-defined flags and native support for user-defined values; ([[Aleksey Bragin]])<br />
* Native support for a custom commit routine, which is very important for trunk's win32 subsystem; ([[Aleksey Bragin]])<br />
* Reserving, committing, decommitting and freeing on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary; ([[Aleksey Bragin]])<br />
* Support for per process heaps, with a proper lock; ([[Aleksey Bragin]])<br />
* Reserved support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions. ([[Aleksey Bragin]])<br />
* The committed code is a result of a month of work, and is a heavy work-in-progress one. It already implements the bare minimum required to boot to 3rd stage and run FireFox 3, however many rare codepaths are not implemented yet and there is some maintenance work to do (e.g. move structures and defines to a standalone header file). A list of used references is stated in the header of a source file for now. ([[Aleksey Bragin]])<br />
* Lame... build fix. ([[sir_richard]])<br />
* Implement missing parts of a virtual block allocations support. ([[Aleksey Bragin]])<br />
* Minor fixes to handling extra stuff in heap blocks. ([[Aleksey Bragin]])<br />
* Wine's heap regression tests now run through the end without crashing and show 277 failures. ([[Aleksey Bragin]])<br />
<br />
=== SPRINTF ===<br />
* Don't compile the new sprintf by default. Requested by Timo. ([[Amine Khaldi]])<br />
<br />
=== USB_USBEHCI ===<br />
* Reorganization code to put hardware related structures and routines in own source files. ([[Michael Martin]])<br />
* Modify ResetPort to correctly reset the port instead of the controller. ([[Michael Martin]])<br />
* Implement allocating chunks of memory from the Common Buffer for use with the rest of source code. ([[Michael Martin]])<br />
* Implement creating and deleting Queue Heads and Transfer Descriptors from common buffer. ([[Michael Martin]])<br />
* Implement linking/unlinking QueueHeads to create a linked list for Asynchronous Schedule traversal. ([[Michael Martin]])<br />
* Implement BuildSetupPacketFromURB for creating a setup packet from a URB. ([[Michael Martin]])<br />
* Implement SubmitControlTransfer. ([[Michael Martin]])<br />
* Remove all hardware related structs from usbehci.h as they are now in hardware.h. ([[Michael Martin]])<br />
* Add debugging routines for usb descriptors, queue heads and transfer descriptors. ([[Michael Martin]])<br />
* This will break building usbehci, but not a problem as it is not included in the default build. Will be fixed with later commit. ([[Michael Martin]])<br />
* Remove all hardware related routines from fdo.c as they are now in hardware.c ([[Michael Martin]])<br />
* Replace ExecuteControlRequest with new SubmitControlTransfer. ([[Michael Martin]])<br />
* For internal control requests (originating from ehci driver) use an event to signal request completion. ([[Michael Martin]])<br />
* When submitting non internal control request save the Irp in the software part of the QueueHead. ([[Michael Martin]])<br />
* For these requests check for errors and complete the Irp with the appropriate URB Status when the QueueHead is complete. ([[Michael Martin]])<br />
* Misc code cleanup and dead code removal. ([[Michael Martin]])<br />
* UsbEhci now works as before and should be ready for some forward progress. ([[Michael Martin]])<br />
* Fix bug in InitializeUsbDevice that caused endpoints to be duplicated in internal config structure. ([[Michael Martin]])<br />
* Fix implementation of UsbRemoveDevice. ([[Michael Martin]])<br />
* Implement SetDeviceHandleData and RestoreUsbDevice. ([[Michael Martin]])<br />
* SubmitControlTransfer: Not all control request need data, in which case dont create a MDL and a PID_CODE_IN_TOKEN TD Descriptor. ([[Michael Martin]])<br />
* Fix bug in ReleaseMemory that caused memory not to be marked as free. ([[Michael Martin]])<br />
* Fix incorrect memory header size that resulted in memory corruption. ([[Michael Martin]])<br />
* Implement URB_FUNCTION_SELECT_INTERFACE. ([[Michael Martin]])<br />
* Add missing IoMarkIrpPending before calling SubmitControlRequest. ([[Michael Martin]])<br />
* Now use BuildSetupPacketFromURB for creating the CtrlSetup data structure. ([[Michael Martin]])<br />
* When selecting configuration, make the ConfigurationHandle from the related UsbDevice instead of always the RootHub device. ([[Michael Martin]])<br />
* Fix typo that caused all pipes to be marked as interrupt type. ([[Michael Martin]])<br />
* Change CompletePendingURBRequest to only complete one SCE request Irp. ([[Michael Martin]])<br />
* EhciDefferedRoutine: Only free Mdl if one was created when the request was added to the queue. ([[Michael Martin]])<br />
* Dont assume that three transfer descriptors need to be freed, use a while moving to each linked and free instead. ([[Michael Martin]])<br />
* Yabba Dabba Doo added to increase size of message. :) ([[Michael Martin]])<br />
<br />
=== VBEMP ===<br />
* Fix rounding error when calculating display size (neoman; {{bug|5790}})<br />
* Loosely based on (neoman; {{bug|5790}})<br />
* Fixes gdi32_winetest:mapping (neoman; {{bug|5790}})<br />
<br />
=== VIDEOPRT_WIN32K ===<br />
* Synchronize and share PEVENT/ENG_EVENT/VIDEO_PORT_EVENT implementation, as these objects are actually the same (and VideoPrt Event* APIs can be used on GRE Event Objects). Use ENG_EVENT structure from ntddvdeo.h instead of re-creating our own. Drivers using these interfaces will no longer explode. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Implement registering event routine which gets called when a topology node (volume / mute node) changes ([[Johannes Anderwald]])<br />
* Implement fetching event changes ([[Johannes Anderwald]])<br />
* Unlock locked pages before freeing the mdl ([[Johannes Anderwald]])<br />
* Fixes assertion hit 'Assertion 'OldRefCount < 2500' failed at ARM³::MDLSUP line 1008' ([[Johannes Anderwald]])<br />
* Fixes playback / recording of longer audio files ([[Johannes Anderwald]])<br />
* Implement support functions which call the provided functions of mmixer library ([[Johannes Anderwald]])<br />
* Fix a bug in device interface request ioctl handler ([[Johannes Anderwald]])<br />
* Midi devices should now be visible, capabilities be retrieved and opened / close ([[Johannes Anderwald]])<br />
* Writing data is not yet supported ([[Johannes Anderwald]])<br />
* Free allocated mdls in the io completion routine. Also free the associated stream header. ([[Johannes Anderwald]])<br />
* Don't free associated stream header anymore ([[Johannes Anderwald]])<br />
* Tested with VBox 3.2.10 + VmWare Player 3.1.2 + WinXP ([[Johannes Anderwald]])<br />
* Fix build ([[Johannes Anderwald]])<br />
* Update to new mmixer library interface ([[Johannes Anderwald]])<br />
<br />
=== WIN32KSYS ===<br />
* replace nci-generated stubs with a stub file using macros ([[Timo Kreuzer]])<br />
<br />
=== WIN32K|USER32 ===<br />
* Implement NtUserGetMenuIndex, . ([[James Tabor]]; {{bug|5528}})<br />
* Fix build from 49005. ([[James Tabor]])<br />
* Move to the new window structure. Window Object served us well. ([[James Tabor]])<br />
* Rewrite the Event and Hook procedures. ([[James Tabor]]; {{bug|5670}})<br />
* Add fix for KsStudio for Olaf Siejka and debug prints for WH_KEYBOARD_LL. ([[James Tabor]]; {{bug|5670}})<br />
* Fix for DosBOX. Added more data copies in user32 hook.c. ([[James Tabor]]; {{bug|5670}})<br />
* This hook commit fixes the ros regression testing startup, but consider this a hax fix until more research in Global hooks has completed. More pointed Global hook tests are needed. Misc changes, removed unused storage pointers and reordering. For DosBOX, the mouse low level is now working and the keyboard low level should not be so intermittent as before, now sending messages from system desktop not from thread desktop, ([[James Tabor]]; {{bug|5670}})<br />
* Cleanup and added debug prints. ([[James Tabor]])<br />
* Fixed SendNotifyMessage, thanks to Michael Martin callback changes. Fixed DispatchMessage when dealing with thread errors. Fixed all but one of the Get/PeekMessage wine tests. Fixed attaching threads to process information. Plus other fixes. ([[James Tabor]])<br />
* Implemented support for QS bits, ReplyMessage (not fully correct), and others. ([[James Tabor]])<br />
* Tested everything here, please post regressions so I can add more applications to the test list. This patch is synced with 49720 and 49772. After that there are graphic issues. ([[James Tabor]])<br />
* Credits goes to wine for helping with diagnosing issues in the ReactOS message system. ([[James Tabor]])<br />
* Remove the old send message API and use NtUserMessageCall. ([[James Tabor]])<br />
* Send messages do not pass the Ansi bit. This was evident during the hook changes. User32 knows the caller is Ansi and with a Unicode window user32 can make the apropate switch. Win32k on the other hand, assumes, based on the Unicode window the caller is Unicode. Hook tests enabled in send message, forces the call to win32k, and the Ansi product is Unicode data. Using NtUserMessageCall this bit can be passed forward to allow win32k to make the correct switch going to callback. ([[James Tabor]])<br />
* Finish 50030 (work by Giannis), Now PostMessage passes all the correct data based on Get/PeekMessage. Example: Post A, Get/Peek A, Translate A, Dispatch A, should be that simple. FYI: DDE memory handling should be in win32k not user32 and why,,,,, ~see next point~ ([[James Tabor]])<br />
* Patch up problems (at a minimum) going into the SendMessage/Timeout A2U U2A support in win32k and fixed SMTO callback if local. ([[James Tabor]])<br />
* Fix all the user32 wine win test_SetParent tests. ([[James Tabor]])<br />
* Fix mdi class window function Id, now msi message tests do not assert. ([[James Tabor]])<br />
* Fix most of the user32 wine win test_mdi tests. Leaving 6 failures dealing with rect size. Start A2U and U2A support. ([[James Tabor]])<br />
* Fix copy paste error, which means this code is not used, should have pop up during testing. ([[James Tabor]])<br />
* Add hack to mark desktop window as a desktop window and notes for creating a desktop with tips in win32k. Move user position code from window to winpos. ([[James Tabor]])<br />
<br />
=== WINE32K|USER32 ===<br />
* Implement client thread information for the beginning of QS flag support and signaling synchronization of messages. ([[James Tabor]])<br />
* Set and clear idle event when setting clearing masks. This fixed the idle foreground hook call from user mode. ([[James Tabor]])<br />
* Fixed wine ListBox and ReactOS ComboBox tests. Critical note: SendMessageA/W, when IsThreadHooked is used and any global hooks are affirmed, all messages are sent to Win32k and the result is, A to W and W to A mismatch via UMToKM. Fixing Global hook support exposed a critical bug in ReactOS message system. Enable the appropriate hooks will temporarily remedy this bug. ([[James Tabor]])<br />
* All patches are from a checked out revision from 49475. Upping ntuser.h, win32k and user32 to sync. ([[James Tabor]])<br />
<br />
=== YAROTOWS ===<br />
* Reintegrate the branch. For a brighter future. ([[Timo Kreuzer]])<br />
* Main features: ([[Timo Kreuzer]])<br />
* Implement LDEVOBJ api. Responsible for loading dlls (display drivers, font drivers, keyboard layout, etc), replacing code in different locations. ([[Timo Kreuzer]])<br />
* Implement PDEVOBJ api. A PDEVOBJ represents a physical device and is the core component for handling multiple display devices. ([[Timo Kreuzer]])<br />
* Rewrite device locking. The new method was neccessary to allow dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement support for enumerating display devices and settings. ([[Timo Kreuzer]])<br />
* Implement dynamic mode switching. ([[Timo Kreuzer]])<br />
* Implement a number of Eng mapping functions. ([[Timo Kreuzer]])<br />
* Rewrite Eng level surface handling for cleaner code and better compatability. ([[Timo Kreuzer]])<br />
* Rewrite parts of the DIB handling code. ([[Timo Kreuzer]])<br />
* Rewrite DC creation and deletion. Deletion and cleanup is now completely callback based. Now we don't leak the DC objects when terminating a process, like we did before. ([[Timo Kreuzer]])<br />
* Improve the XLATE and BRUSH code, removing several old hacks. ([[Timo Kreuzer]])<br />
* Improve icon code. ([[Timo Kreuzer]])<br />
* Thanks to Jerome Gardou, Kamil Hornicek and everyone helping. ([[Timo Kreuzer]])<br />
* Update rapps database. ([[Daniel Reimer]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=User:Leecbaker&diff=28993
User:Leecbaker
2011-01-04T22:21:15Z
<p>CycleGeek: moved Lee C. Baker to User:Leecbaker</p>
<hr />
<div>'''Email:''' lee@leecbaker.com<br />
<br />
'''Website:''' http://www.leecbaker.com<br />
<br />
'''AIM:''' leecbaker<br />
<br />
'''Google Talk:''' lee@leecbaker.com<br />
<br />
==Contributions==<br />
SVN r40062: Assoc command for cmd.exe [http://www.reactos.org/bugzilla/show_bug.cgi?id=4275 bugzilla 4275]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Lee_C._Baker&diff=28994
Lee C. Baker
2011-01-04T22:21:15Z
<p>CycleGeek: moved Lee C. Baker to User:Leecbaker</p>
<hr />
<div>#REDIRECT [[User:Leecbaker]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Boot_FreeLoader_from_GRUB&diff=28915
Boot FreeLoader from GRUB
2010-10-23T03:33:54Z
<p>CycleGeek: </p>
<hr />
<div>GRUB is a popular boot manager for people with many different operating systems installed on one machine or hard disk. [[FreeLoader]] is the bootloader for ReactOS and also a possible boot manager. If you have GRUB already installed and then install ReactOS, FreeLoader's abilities become redundant and annoying. This document shows how to keep FreeLoader from doing much but acting as a bootloader for ReactOS.<br />
<br />
== Method ==<br />
FreeLoader can be loaded as a "multiboot kernel" by multiboot compliant bootstrap loaders like GRUB. To load FreeLoader from GRUB, put something like this in the GRUB's <tt>menu.lst</tt> configuration file:<br />
<br />
<pre><br />
title ReactOS<br />
root (hd0,0)<br />
kernel /freeldr.sys<br />
</pre><br />
<br />
Note:<br />
* <tt>(hd0,0)</tt> refers to the first partition on the first disk.<br />
* <tt>(hd1,0)</tt> refers to the first partition on the second disk.<br />
* <tt>(hd0,1)</tt> refers to the second partition on the first disk.<br />
<br />
You should make sure that the path referred to by "kernel" and <tt>freeldr.sys</tt> is on a FAT16/32 partition.<br />
<br />
You can also override settings in the <tt>[FREELOADER]</tt> section of FreeLoader's <tt>freeldr.ini</tt> configuration file by passing them on the command like, like this:<br />
<br />
<pre><br />
title ReactOS<br />
root (hd0,0)<br />
kernel /freeldr.sys DefaultOS=ReactOS TimeOut=0<br />
<br />
title ReactOS (Debug)<br />
root (hd0,0)<br />
kernel /freeldr.sys DefaultOS=ReactOS_Debug TimeOut=0<br />
</pre><br />
<br />
After selecting "ReactOS" from the GRUB menu you will not have to make another selection on the freeloader menu because of the <tt>TimeOut=0</tt>.<br />
<br />
== GRUB 2 ==<br />
The next generation of GRUB, GRUB 2 uses other language in its configuration file <tt>grub.cfg</tt>. Here is an example how to add a menu entry for ReactOS:<br />
<br />
<pre><br />
menuentry "ReactOS" {<br />
set root=(hd0,1)<br />
multiboot /freeldr.sys<br />
}<br />
</pre><br />
<br />
Note that partition numbering has been changed, and <tt>(hd0,1)</tt> refers to the first partition on the first disk.<br />
<br />
== Links ==<br />
* http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/boot/grub/grub013.zip<br />
* [http://www.gnu.org/software/grub/manual/html_node/ GRUB Manual]<br />
* [http://www.gnu.org/software/grub GRUB homepage]<br />
* [http://grub.enbug.org/ Grub wiki]<br />
* [http://tldp.org/HOWTO/Linux+Win9x+Grub-HOWTO/index.html Linux+Win+Grub HowTo]<br />
* [http://www.skyjammer.com/files/knoppix/ Win32 Grub]<br />
* [http://www.ameritech.net/users/gholmer/booting.html Booting with GRUB]<br />
* [http://grub4dos.sourceforge.net/ WinGRUB]<br />
* [http://www.geocities.com/lode_leroy/grubinstall/ GRUB Installer for Windows]<br />
* [http://grub.linuxeden.com/ GRUB for DOS] - Bridging DOS/Windows to Unix/Linux ( Chinese site )<br />
<br />
[[Category:Tutorial]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Template:Navigation_Versions&diff=28914
Template:Navigation Versions
2010-10-22T11:45:15Z
<p>CycleGeek: Add 0.3.13 to planned releases</p>
<hr />
<div>{| class="prettytable" style="width:100%; text-align: left; margin: 30px 10px 10px 10px;"<br />
! colspan="2" style="text-align: center; font-weight:normal;" | '''[[Versions]]''' / [[Changelogs]]<br />
| <br />
|----------------------------<br />
| '''0.0.x Series''' || <nowiki>0.0.1 | 0.0.2 | 0.0.3 | 0.0.4 | 0.0.5 | 0.0.6 |</nowiki> [[0.0.7]] | [[0.0.8]] | [[0.0.9]] | [[0.0.10]] | [[0.0.11]] | [[0.0.12]] | [[0.0.13]] | [[0.0.14]] | [[0.0.15]] | [[0.0.16]] | [[0.0.17]] | [[0.0.18]] | [[0.0.19]] | [[0.0.20]] | [[0.0.21]]<br />
|----------------------------<br />
| '''0.1.x Series''' || [[0.1.0]] | [[0.1.1]] | [[0.1.2]] | [[0.1.3]] | [[0.1.4]] | [[0.1.5]]<br />
|----------------------------<br />
{{!}} '''0.2.x Series''' || [[0.2.0]] | [[0.2.1]] | [[0.2.2]] | [[0.2.3]] | [[0.2.4]] | [[0.2.5]] | [[0.2.6]] | [[0.2.7]] | [[0.2.8]] | [[0.2.9]]<br />
|----------------------------<br />
| '''0.3.x Series''' || [[0.3.0]] | [[0.3.1]] | ''[[0.3.2]]'' | [[0.3.3]] | [[0.3.4]] | [[0.3.5]] | [[0.3.6]] | [[0.3.7]] | [[0.3.8]] | [[0.3.9]] | [[0.3.10]] | [[0.3.11]] | [[0.3.12]]<br />
|----------------------------<br />
| '''Planned Releases''' || [[0.3.13]] | [[0.4.0]] | [[0.5.0]] | [[1.0.0]]<br />
|}<includeonly>[[Category:Versions]]</includeonly><noinclude><br />
[[Category:Template]]<br />
</noinclude></div>
CycleGeek
https://reactos.org/wiki/index.php?title=0.3.12&diff=28913
0.3.12
2010-10-22T11:36:38Z
<p>CycleGeek: Add final source</p>
<hr />
<div>== General Information ==<br />
{|<br />
|-<br />
|Used Build Environment:<br />
|ReactOS Build Environment<br />
|-<br />
|Release Engineers:<br />
|[[Colin Finck]] and [[Ziliang Guo]]<br />
|}<br />
<br />
== Source Information ==<br />
{|<br />
|-<br />
|Release Date:<br />
|20 October 2010<br />
|-<br />
|Branched from Trunk revision:<br />
|{{Rev|48848}} - 23 September 2010<br />
|<br />
|-<br />
|Final source:<br />
|[http://svn.reactos.org/svn/reactos/tags/ReactOS-0.3.12/?pathrev=49215 tags/ReactOS-0.3.12] - r49215<br />
|}<br />
<br />
== Links ==<br />
* [[ChangeLog-0.3.12|ChangeLog for this Release]]<br />
* [[Tests for 0.3.12|Tests for this Release]]<br />
* [http://www.reactos.org/bugzilla/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&target_milestone=0.3.12&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED Bugzilla milestone]<br />
{{Navigation Versions}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Template:ReactOS-Curr-Version&diff=28903
Template:ReactOS-Curr-Version
2010-10-20T17:16:12Z
<p>CycleGeek: Update version</p>
<hr />
<div>0.3.12<noinclude><br />
<br /><br />
This Template contains the latest released ReactOS Version Number<br />
[[Category:Template]]<br />
</noinclude></div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.12&diff=28902
ChangeLog-0.3.12
2010-10-20T16:03:22Z
<p>CycleGeek: Add release date</p>
<hr />
<div>This is the changelog for ReactOS™ [[0.3.12|version 0.3.12]] (released 20 October 2010), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.11|version 0.3.11]] (released 16 December 2009).<br />
<br />
= General =<br />
Since the last release, ReactOS has seen considerable modification and enhancement at all levels of the operating system. Unlike past changelogs which simply compiled a long list of changes, a highly unwieldy arrangement that did not convey much in the way of useful and accessible information, this changelog will attempt to summarize and emphasize major points of interest. There will still be lists of changes, but these will serve only as further emphasis. Interested readers should find most of the relevant information in the summaries under each section.<br />
== Contributors ==<br />
=== Core Developers ===<br />
* Giannis Adamopoulos: Applications, Win32.<br />
* Johannes Anderwald: Kernel, sound.<br />
* Aleksey Bragin: Filesystem, kernel, Win32k.<br />
* Colin Finck: Build tools, translations, release engineer.<br />
* Jérôme Gardou: Win32.<br />
* Stefan Ginsberg: Kernel.<br />
* Dmitry Gorbachev: Applications.<br />
* Cameron Gutman: Networking, PnP.<br />
* Kamil Horníček: 3D Graphics, Win32.<br />
* Amine Khaldi: Build tools.<br />
* Eric Kohl: Kernel, Win32.<br />
* Timo Kreuzer: Win32k.<br />
* Matthias Kupfer: Applications, Win32.<br />
* Michael Martin: Kernel, USB.<br />
* Jeffrey Morlan: Applications, Win32.<br />
* Filip Narava: USB.<br />
* Sylvain Petreolle: Applications.<br />
* Hervé Poussineau: Kernel.<br />
* ReactOS Portable Systems Group: ARM porting, drivers, kernel.<br />
* Daniel Reimer: Build tools, translations.<br />
* Gregor Schneider: Win32.<br />
* Pierre Schweitzer: Filesystem, kernel.<br />
* James Tabor: Win32.<br />
* Christoph von Wittich: Win32.<br />
<br />
=== Patch Submitters ===<br />
* Andrea<br />
* Carlo Bramini<br />
* James Edmeades<br />
* Benedikt Freisen<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Kusanagi Kouichi<br />
* Radek Liška<br />
* Roel Messiant<br />
* Andrew Nguyen<br />
* Samuel Serapión<br />
* Seungju<br />
* Dmitry Timoshkov<br />
* Henri Verbeet<br />
<br />
=== Localization ===<br />
* forenkrams [AT] tuxproject [DOT] de<br />
* Edison Henrique Andreassy<br />
* Egon Ashrafinia<br />
* Arturs B<br />
* Maciej Bialas<br />
* CCTAHEB<br />
* Paolo Devoti<br />
* Andrew Faulds<br />
* Javier Fernández<br />
* Katayama Hirofumi<br />
* Gabriel Ilardi<br />
* Mario Kacmar<br />
* Tomoya Kitagawa<br />
* Igor Paliychuk<br />
* Javier Remacha<br />
* Olaf Siejka<br />
* Andres Traks<br />
* Maikel Wever<br />
* Sakara Yevhen<br />
* Marcelo Zamperetti<br />
<br />
=== Support Staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.12 Changes ==<br />
* Hardware IDs for the following processors have been added to the internal hardware list.<br />
** Cyrix<br />
** Pentium MMX, Pro, II, M, 4<br />
** Core Solo, Duo, Extreme, i3, i5, i7<br />
** Atom<br />
** AMD K6, K6-3, Athlon 64, Turion64, Sempron<br />
** Via Nehemiah, Esther, Nano<br />
* NTVDM is now only built on x86 builds.<br />
=== Applications ===<br />
* Calc: Units and conversion factors added.<br />
* Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.<br />
* IPconfig: Media detection is now fixed.<br />
* MSCUtils: Column names now use resource strings instead of hardcoded strings.<br />
* Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.<br />
* Paint: Initial selection support and angle rounding for lines and edges.<br />
* Regedit: Fix searching the registry.<br />
* Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.<br />
=== Control Panel Applets ===<br />
* Console: Store changes when buffer/window size or color changes.<br />
* Desk: Fix theme switching and screensaver selection.<br />
* Input: Fix changing of keyboard layout.<br />
* Intl: Use resource strings for 'metric' and 'Imperial' strings.<br />
* Sysdm: Fix creation of paging file and place constraints on file size.<br />
=== Installer ===<br />
Various tweaks were made to the installer to ease installing ReactOS.<br />
* Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.<br />
* Fix reading of partitions created in non-standard formats by Linux.<br />
* Minimum space check notification improved. Minimum space value also made configurable through text file.<br />
* Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.<br />
* Installer does not restart in second stage if ESC is pressed.<br />
* PathName and SystemRoot registry key values are now written by the installer.<br />
=== Services ===<br />
* Services no longer trample over other services when reporting their status.<br />
* DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.<br />
* EventLog: Fixes to reading and displaying of log content.<br />
== Tests ==<br />
http://www.reactos.org/testman/compare.php?ids=2123,4021<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* 3dtext<br />
* doskey<br />
* explorer<br />
* ipconfig<br />
* mscutils/servman<br />
* rapps<br />
* shutdown<br />
* spider<br />
* usetup<br />
* winemine<br />
<br />
'''Chinese'''<br />
* charmap<br />
* dxdiag<br />
* fontview<br />
* magnify<br />
* mmc<br />
<br />
'''Czech'''<br />
* appwiz.cpl<br />
* devmgr<br />
* intl.cpl<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* notepad<br />
* paint<br />
* regedit<br />
* setupapi<br />
* shell32<br />
* slayer<br />
* sndvol32<br />
* sysdm.cpl<br />
* userenv<br />
* usetup<br />
* winemine<br />
<br />
'''Dutch'''<br />
* calc<br />
* usetup<br />
<br />
'''English'''<br />
* advpack<br />
* calc<br />
* dxdiag<br />
* rapps<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* eventvwr<br />
* netshell<br />
* paint<br />
* spider<br />
* usetup<br />
<br />
'''German'''<br />
* access.cpl<br />
* appwiz.cpl<br />
* calc<br />
* cmd<br />
* console<br />
* desk.cpl<br />
* deskadp<br />
* deskmon<br />
* devmgr<br />
* doskey<br />
* downloader<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* fontview<br />
* format<br />
* hdwwiz.cpl<br />
* input.cpl<br />
* intl.cpl<br />
* ipconfig<br />
* joy.cpl<br />
* kernel32<br />
* liccpa.cpl<br />
* main.cpl<br />
* mmsys.cpl<br />
* modemui<br />
* mplay32<br />
* msconfig<br />
* mscutils<br />
* msgina<br />
* mstsc<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* newdev<br />
* notepad<br />
* paint<br />
* powercfg<br />
* rapps<br />
* rasdlg<br />
* reg<br />
* regedit<br />
* regsvr32<br />
* runonce<br />
* screensavers/3dtext<br />
* screensavers/logon<br />
* serialui<br />
* setup/reactos<br />
* shdoclc<br />
* shell32<br />
* shimgvw<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* tapiui<br />
* taskmgr<br />
* timedate.cpl<br />
* user32<br />
* userenv<br />
* usetup<br />
* usrmgr.cpl<br />
* vmwinst<br />
* welcome<br />
* winemine<br />
* winlogon<br />
<br />
'''Italian'''<br />
* calc<br />
* explorer-new<br />
* intl.cpl<br />
* mscutils<br />
* netid<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* shell32<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Japanese'''<br />
* cacls<br />
* charmap<br />
* magnify<br />
* mscutils/devmgmt<br />
* mscutils/servman<br />
* paint<br />
* rapps<br />
* runonce<br />
* shutdown<br />
* sndrec32<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Polish'''<br />
* calc<br />
* explorer-new<br />
* mscutils<br />
* rapps<br />
* usetup<br />
<br />
'''Portuguese'''<br />
* syssetup<br />
* usetup<br />
<br />
'''Russian'''<br />
* spider<br />
* sysdm.cpl<br />
* usetup<br />
<br />
'''Slovak'''<br />
* calc<br />
* devmgr<br />
* explorer-new<br />
* intl.cpl<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* syssetup<br />
* usetup<br />
<br />
'''Spanish'''<br />
* browseui<br />
* devmgr<br />
* notepad<br />
* paint<br />
* rapps<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* usrmgr.cpl<br />
* welcome<br />
<br />
'''Ukrainian'''<br />
* aclui<br />
* browseui<br />
* charmap<br />
* cmd<br />
* desk.cpl<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* freeldr<br />
* input.cpl<br />
* kernel32<br />
* mscutils/devmgmt<br />
* mscutils/eventvwr<br />
* msgina<br />
* mstsc<br />
* newdev<br />
* notepad<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* setup<br />
* shell32<br />
* shimgvw<br />
* sndrec32<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* taskmgr<br />
* usetup<br />
* winemine<br />
<br />
== Wine Syncs ==<br />
ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synced to versions 1.2 or 1.3.<br />
<br />
Libraries Synced<br />
* activeds<br />
* actxprxy<br />
* amstream<br />
* atl<br />
* avifil32<br />
* cabinet<br />
* clusapi<br />
* comctl32<br />
* comdlg32<br />
* credui<br />
* crypt32<br />
* cryptdlg<br />
* cryptnet<br />
* cryptui<br />
* d3d8<br />
* d3d9<br />
* dbghelp<br />
* ddraw<br />
* dwmapi<br />
* faultrep<br />
* fusion<br />
* gdiplus<br />
* hhctrl.ocx<br />
* hlink<br />
* hnetcfg<br />
* iccvid<br />
* imm32<br />
* inetcomm<br />
* inetmib1<br />
* initpki<br />
* inseng<br />
* itircl<br />
* itss<br />
* jscript<br />
* localspl<br />
* localui <br />
* mapi32<br />
* mciavi32<br />
* mcicda<br />
* mciqtz32<br />
* mciseq<br />
* mciwave<br />
* mdi<br />
* mlang<br />
* mpr<br />
* mscms<br />
* mscoree<br />
* msctf<br />
* msdmo<br />
* msg711.acm<br />
* msgsm32.ac<br />
* mshtml<br />
* msi<br />
* msiexec<br />
* msimtf<br />
* msnet32<br />
* msrle32<br />
* mssip32<br />
* msvcrt20<br />
* msvfw32<br />
* msvidc32<br />
* msxml<br />
* msxml3<br />
* nddeapi<br />
* netapi32<br />
* obsel<br />
* odbc32<br />
* ole32<br />
* oleacc<br />
* oleaut32<br />
* oledlg<br />
* olepro32<br />
* pdh<br />
* postorec<br />
* qedit<br />
* quartz<br />
* query<br />
* reg<br />
* riched20<br />
* rpcrt4<br />
* rsaenh<br />
* schannel<br />
* shdoclc<br />
* shdocvw<br />
* shlwapi<br />
* sti<br />
* tapi32<br />
* urlmon<br />
* usp10<br />
* uxtheme<br />
* version<br />
* widl<br />
* windowscodecs<br />
* wined3d<br />
* wininet<br />
* wintrust<br />
* xcopy<br />
* xmllite<br />
<br />
== Third Party Libraries ==<br />
* DejaVu Fonts updated to 2.31<br />
* FreeType updated to 2.3.12<br />
* Liberation Fonts updated to 1.05.2<br />
* libjpeg updated to 8b<br />
* libpng 1.4.3 added<br />
* libtiff 3.9.4 added<br />
* libxml updated to 2.7.7<br />
* zlib updated to 1.2.5<br />
<br />
== Regressions ==<br />
Despite the best efforts of the developers, regressions relative to the last release can slip in. Many times these are unavoidable, as the regressions result from the removal of a hack that pretended to implement some specific functionality. To truly improve, ReactOS must eventually discard all such shortcuts even at the cost of some usability in the short term. Hopefully as the project progresses this list will grow shorter and shorter and eventually disappear.<br />
* #4086 cdfs: Data inaccessible for view under Explorer<br />
* #4330 crashes upon restart after installing a driver for 3com Fast Etherlink network adapter<br />
* #4811 comctl32: dll winesync broke AbiWord toolbar<br />
* #5025 freeloader error while booting from GRUB with Ubuntu and Windows XP installed<br />
* #5035 Abiword: fonts listbox isn't shown properly<br />
* #5158 some keystrokes get lost if typing fast in VirtualBox<br />
* #5290 Slowness during file copying in 1st stage in VirtualBox<br />
* #5320 "Assertion 'FALSE' failed at subsystems/win32/win32k/ntuser/windc.c line 739", preceded by "Not POWNED or CLASSDC hwndCurrent" debugprint<br />
* #5372 "Failed to create directory L"%USERPROFILE%\\Local Settings\\" debug print in 2nd stage<br />
* #5443 Inkscape 0.43-2 crashes immediately upon start.<br />
* #5484 New windows are created on top of older ones<br />
* #5503 Far Manager 1.65 fails to start<br />
* #5504 Internet Explorer 6 errors out at setup<br />
* #5524 Displaced numbers on virtual desktop icons in 32bpp<br />
* #5530 COM ports not available anymore<br />
* #5554 Warning/error window is misplaced and misshaped<br />
* #5560 Acrobat Reader 7.1 crashes at start<br />
* #5569 App tray icons are not displayed<br />
* #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn<br />
<br />
== Build Tools ==<br />
=== LOG2LINES ===<br />
* Updated to version 2.2<br />
<br />
=== RBUILD ===<br />
RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.<br />
* Non-existent DLL functions can be exported.<br />
* Function export names are not properly decorated, allowing export names to not match the original function names.<br />
* If function targets are not found, RBuild will link the DLL to itself.<br />
Some development on RBuild also took place before the decision was made to switch over to CMake.<br />
* Initial Visual Studio 2010 project file support.<br />
* Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.<br />
=== RosBE ===<br />
* Build environment now uses GCC 4.4.x as the compiler.<br />
* -fno-unit-at-a-time hacks have been removed.<br />
* Auto-export of all symbols has been turned off.<br />
<br />
= Core Functionality =<br />
<br />
== Audio/Video Stack ==<br />
The A/V stack has seen a great deal of enhancements and fixes since the last release. Preliminary sound support was already present in the previous release, but it was highly rudimentary. Beyond simple playback not much else was controllable. Effort has gone into controlling the mixing of the playback, providing the ability to manipulate the volume and other general usability features such as pausing and restarting. These required finer control and management over the signal data that represents the sound and the sound devices that actually play it. Querying of audio devices has been implemented, allowing the system to discover the functionality a device supports and how to access them. More work however needs to be done to better use those features as well as managing the resources associated with sound playback.<br />
<br />
In addition to increased sound playback support, work was begun on the framework for playing back broadcast media. These are generally through TV-tuners and have their own set of interfaces that must be implemented. These consist of a series of drivers and filters that determine which channel the system should capture media from and then process. Currently the broadcast standard being implemented is the Digital Video Broadcasting-Terrestrial.<br />
<br />
A key component to all media playback is the kernel streaming component, which handles the majority of actual manipulation of media data.<br />
=== BDA ===<br />
The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.<br />
* Interfacing with broadcast devices implemented.<br />
* Filtering of broadcast frequencies implemented.<br />
=== DSOUND ===<br />
A library that bypasses some of the layers in the sound stack to try and speed up processing.<br />
* Starting and stopping audio implemented.<br />
* Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.<br />
=== Kernel Streaming ===<br />
The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.<br />
* Device initialization and registration implemented.<br />
* Objects allocated are placed onto a list for automatic reclamation.<br />
* Pin interface for controlling devices implemented, though issuing of commands still needs work.<br />
=== KSPROXY ===<br />
A DirectShow filter that relays media through the user mode kernel streaming library.<br />
* Enumeration of supported functionality on devices implemented.<br />
* Signal statistics from BDA devices are delivered by KSPROXY.<br />
* Media stream sampling is done to determine buffer allocation strategy.<br />
* Multiple media samples can be dispatched simultaneously.<br />
=== PORTCLS ===<br />
The driver that manages most of the audio functionality in NT.<br />
* Currently a "silent" buffer is used when no audio buffers are available for playback.<br />
* Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.<br />
* A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.<br />
* Audio stream data is only copied to the common buffer when the pin owning it is in a running state.<br />
<br />
== Filesystems ==<br />
The filesystem framework on ReactOS has for most of the project's history been largely absent. The main support library for filesystems, FsRtl, did not exist and all of the filesystem drivers reimplemented the functionality it was supposed to provide. This has changed recently with the initial implementation of the FsRtl. Currently the FsRtl provides support for notification of changes to the volume's state, such as a device being mounted or unmounted. Notification of changes to a volume's content has not yet been implemented but is the next step. The old FAT filesystem driver has been updated to use some of the new functionality, as has the CDFS driver, providing the ability to eject a CD.<br />
<br />
A new FAT filesystem driver is also being implemented by creating a wrapper around the FullFAT library. However, it is still a work in progress and was not ready for this release.<br />
<br />
== Hardware Management ==<br />
Progress has been made in efforts to give ReactOS better support for various hardware control specifications.<br />
<br />
=== ACPI ===<br />
A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.<br />
* Enumerate attached devices.<br />
* Receive commands from power buttons.<br />
=== ACPI HAL ===<br />
The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.<br />
* Resource querying implemented.<br />
* Separation of ACPI and non-ACPI bus handling.<br />
=== Battery Framework ===<br />
Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.<br />
* Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.<br />
* Composite Battery Driver: Battery detection and PnP notification implemented.<br />
=== Legacy HAL ===<br />
The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.<br />
* i8259A programmable interrupt controller initialization implemented in C.<br />
* HAL now detects EISA systems with the Edge/Level Control Register.<br />
* Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.<br />
* Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.<br />
* IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.<br />
* HAL no longer relies on the memory manager for allocations.<br />
* Various debugging related functions implemented.<br />
* CMOS, ISA, and SYSTEM bus handlers are now registered.<br />
* HAL now can detect PCI and PCI-to-PCI bridges.<br />
* Checks for ABIOS have been removed as it is not supported by ReactOS or Windows.<br />
=== Plug n Play ===<br />
* Writing of resource list has been fixed to avoid corrupting the registry.<br />
* Registry values for legacy devices are now written.<br />
* Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.<br />
<br />
== Memory Management ==<br />
The memory manager has been slowly rewritten over the past several months, with components being replaced piece by piece while the rest of the system continued on as before. To achieve this required separating the blocks of memory controlled by the new memory manager, ARM3, and the old memory manager. As more of ARM3 was completed, it took over more responsibility from the old memory manager, in the process exposing countless bugs, corruptions, and leaks in not only the old manager but broken code in higher layers of the operating system. This resulted in several major breakages at various points during the last year but the majority of them have been dealt with. For this release much of the ARM3 functionality has not been enabled to lessen the risk of major regressions slipping in. However, it is already capable of allocating most types of memory blocks such as pool memory and creating address spaces for processes. The next release will see ARM3 enabled and effectively acting as the sole memory manager.<br />
<br />
Work on the x64 port also required that virtual memory support be updated to support the page table entry format on x64. Support was added in both the old memory manager and ARM3 due to the concurrent nature of the work and a great deal of refactoring was also done to separate platform independent code. This was also done to benefit the effort to port ReactOS to the ARM platform, as it also has a different format for page table entries.<br />
* Page Table Entries work under x64.<br />
* Correctly report the amount of memory available to applications and drivers.<br />
* Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.<br />
* Code refactored so architecture independent code can be shared across platforms.<br />
* Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.<br />
* Global pages support removed due to currently broken code.<br />
* Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.<br />
* Stubs have been added for various large page functions in case future work is done to add support.<br />
* Paging driver code and data implemented.<br />
* A check to detect potential corruption in contiguously allocated blocks of memory has been added.<br />
=== ARM3 ===<br />
* Virtual Address Descriptor data structures implemented.<br />
* Page table and directory entry initialization implemented.<br />
* Stack frames are allocated using ARM3.<br />
* Paged pool allocations can be done through ARM3.<br />
* Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.<br />
* Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.<br />
* Shared user data pages are handled by ARM3.<br />
* New AVL tree implementation used to manage Virtual Address Descriptors.<br />
* Creation of the process address space is now done by ARM3.<br />
* IsBadRead/CodePtr fixed to work with ARM3.<br />
<br />
== Network Stack ==<br />
The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.<br />
=== IP ===<br />
* Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.<br />
* No attempt is made to close a socket already terminated by the remote peer.<br />
* Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.<br />
=== MSAFD ===<br />
The current socket implementation on ReactOS.<br />
* Error codes are now properly reported, fixing many of the Winetests for this component.<br />
* Failures on operations are now reported instead of simply being left dangling.<br />
* Events are waited on instead of immediately being closed.<br />
* Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.<br />
* Socket information is now cleaned up after a socket is closed.<br />
* Support for connectionless sockets added.<br />
* Reading data using the peek functionality no longer causes corruptions.<br />
=== NDIS ===<br />
* Timer queues have been disabled to prevent the VirtualBox Intel Pro/1000 emulated network card from crashing ReactOS.<br />
* Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.<br />
* Network adapter initialization and binding cleaned up to avoid duplicate entries.<br />
=== OSKITTCP ===<br />
* Multiple wakeups are now prevented from occurring.<br />
* Sent/received reports are only sent if operation completed successfully.<br />
* A check was added to make sure accept is not called on a socket that is not listening.<br />
=== WS2_32 ===<br />
* Reading host files now supported.<br />
<br />
== Kernel ==<br />
The ReactOS kernel saw several major pieces rewritten from x86 assembly to C. This allows considerably more code reuse when porting to other platforms but also resulted in several major bugs being fixed. Two especially important components rewritten were the the system call interface and trap handlers. The syscall interface suffered from an especially severe bug that prevented the use of specialized instructions for entering and leaving kernel mode. Fixing this bug has helped decrease the time needed for each syscall and due to the number of times a system will make syscalls quickly adds up. Situations where a syscall can be avoided have also see them removed or deferred, further increasing performance.<br />
<br />
There exists code in the kernel that requires transitions to real mode in the processor in order to run. Support for Virtual 8086 has bee added, permitting their execution while remaining in protected mode. Due to the expense of these transitions, avoiding it can also help performance.<br />
<br />
Various other issues ranging from missetting special registers, which could cause data corruption and crashes when in kernel mode, and basic device driver handling, also saw fixes.<br />
* IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.<br />
* FPU state is now correctly not saved when a kernel debugger is not attached.<br />
* Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.<br />
* Trap handling code converted to C with minimal bits of assembly.<br />
* Interrupt handling in kernel converted to C to match conversion done in HAL.<br />
* System call handling now implemented in C.<br />
* Entrypoint of kernel moved to KiSystemStartup.<br />
* KeUpdateSystemTime interface is no longer Windows compatible. No third party code should ever call it however so change should not matter.<br />
* Interrupts are now handled when in Virtual 8086 mode.<br />
* Calling KiSystemService directly with interrupts enabled no longer corrupts the trap frame, fixing some failures on QEMU and real hardware.<br />
* Checks have been added to avoid drivers linked with user mode DLLs.<br />
* Dependency checking for driver unloading implemented.<br />
* When a driver fails to load, the kernel no longer attempts to unload modules that were never initialized.<br />
* The SYSEXIT code used for returning to user mode after a system call into kernel mode has been fixed, allowing the use of the SYSENTER/SYSEXIT combination instead of IRETD. This feature is only available on Pentium II and newer processors and should help decrease the time needed for such hopping between modes for system calls.<br />
* All trap handling code is now marked as no-return, allowing the compiler to better optimize them.<br />
* The Processor Control Block is no longer volatile in KeGetPcr, making the C code cleaner as the PCR no longer needs to be constantly reloaded. This also helps performance with the removed need for loading.<br />
* Basic headless support has been implemented, allowing loading of the OS and interaction with just the kernel.<br />
== I/O ==<br />
* Device property retrieval now returns correct information for the device name.<br />
* IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.<br />
* Changes in device status are now reported.<br />
* New resource information is now reported.<br />
<br />
== Registry ==<br />
* A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.<br />
* Opening registry values for symbolic links is fixed.<br />
* cmlib, newinflib and mkhive now use the Wine unicode library instead of the host_wcsfuncs library.<br />
=== MKHIVE ===<br />
The registry generator.<br />
* newinflib is now used instead of inflib.<br />
* Registry generation now uses the Unicode API instead of ascii.<br />
* Work has been done to properly free resources, as mkhive is suffering from several memory leaks.<br />
=== NEWINFLIB ===<br />
* Unicode aware version of inflib added, newinflib.<br />
* String functions now use the str*W group instead of wcs* due to glibc on Linux builds using a 32bit wchar_t instead of 16bit. A wrapper has been added to allow continued use of wcs* functions on Windows builds.<br />
<br />
== Startup/Shutdown ==<br />
Startup time on ReactOS has benefited considerably from optimizing for the much more resource constrained ARM platform. The code responsible for drawing menus and the like at boot time has seen considerable simplification to avoid unnecessary operations and memory transfers. In addition, the amount of memory used by Freeloader to boot the operating system has also decreased. The cumulative effect of the changes has meant that there should be a noticeable difference in how quickly ReactOS boots versus previous versions and also when compared to Windows XP.<br />
<br />
Properly shutting down has also seen some improvement, as the operating system is better able to keep track of which processes have yet to terminate. Those that take too long are now forcibly terminated.<br />
<br />
One other significant change was the changing of the Freeloader executable to be in the Portable Executable format instead of a raw binary. This was done to enable better support for debugging problems that can occur at boot time, as a raw binary does not offer much help in trying to see what code has been executed.<br />
* Progress bar during boot now displays correctly.<br />
* Logos now have the correct color palette and the correct logo is used for booting and shutting down.<br />
* Driver loading code used during booting has been switched to use low level Configuration Manager interfaces, decreasing boot time.<br />
* A crude timing mechanism has been added to see how many CPU cycles have passed between the first instruction of the kernel, the initialization of the registry by the SMSS, and the moment 12 processes have started up, which is approximately equivalent to getting to the GUI from boot.<br />
=== BootVid ===<br />
* Broken initialization code removed and a correct implementation added.<br />
* 4bpp blitting code simplified.<br />
* x64 portability fixes.<br />
* Initialization of bootvid no longer requires a shift into real mode, allowing for faster booting.<br />
=== FreeLoader ===<br />
* FreeLoader is now compiled into the Portable Executable format to allow for debugging.<br />
* FreeLoader no longer needs to be installed on the first partition of the first disk.<br />
* FreeLoader UI on ARM rewritten to slim down on resources needed.<br />
* Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.<br />
* x64 portability fixes.<br />
* Loading on the ARM platform has been changed to match EFI/Firmware model.<br />
=== Session Manager Subsystem ===<br />
* SMSS can now add several system environment variables to the registry.<br />
* SMSS now creates a new default paging file if none exists.<br />
=== Winlogon ===<br />
* Environment variables for user are now properly loaded upon login.<br />
<br />
== Security and Users ==<br />
* NtAcessCheck fixed to account for various error cases and improper usage.<br />
* Security token is now checked for what level of authorization it is trying to impersonate.<br />
* Success is only reported if all access requests have been granted.<br />
* Attempts to duplicate security tokens fail if authorization level is too low.<br />
* More information is now written into the user environment, including paths to global directories.<br />
* Creation of user specific folders has been fixed.<br />
=== LSA ===<br />
* A single table is now used for mapping privilege names to values.<br />
* Initial implementation of a lookup table for well-known SIDs has been added.<br />
* Account name lookup call chain implemented, but dummy names are still returned.<br />
<br />
== Shell ==<br />
The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.<br />
* Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.<br />
=== Explorer ===<br />
* Clock is no longer clipped in its window.<br />
* 24bpp start menu icon added.<br />
=== SHELL32 ===<br />
* Confirmation dialog added for logging off.<br />
* Open With dialog now allows aborting of operation.<br />
* Localized error text now displayed as messagebox caption.<br />
* Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.<br />
* Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.<br />
* Initial file copy/move/delete dialog implementation added.<br />
* File association error texts added.<br />
<br />
== Storage Stack ==<br />
The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.<br />
* Logical units in extended partitions are visible but are not accessible yet.<br />
* Querying for Native ATA channels and configuring controller to use NATA implemented.<br />
=== RAMDISK ===<br />
* Fixes for using ramdisk when booting on ARM.<br />
=== SCSIPORT ===<br />
* x64 portability fixes.<br />
=== UniATA ===<br />
* Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.<br />
<br />
== USB ==<br />
ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. Under specific configurations USB keyboards and mice could be used with it, but the setup was extremely inflexible. The NT5 USB architecture is considerably different and a new USB stack based on it has been started. The lower level of this stack is composed of several pieces. The usbd library acts as a helper library for third party USB drivers, ones that manufacturers write for their products. It provides some querying functionality to help find attached devices. I/O request packets are sent by usbhub, and usbport acts as an intermediary, sorting the messages based on which type of USB controller they are for and selecting the appropriate helper driver to handle it. These helper drivers are usbehci, usbohci, and usbuhci. Currently the new USB stack has a basic implementation of usbd, usbhub, usbport, and usbehci. They are still incomplete and ReactOS cannot yet use them to actually use USB devices, but basic discovery of devices is possible.<br />
<br />
The old USB driver continues to see fixes and enhancements as the new USB stack will take much time to fully mature. Some notable changes include the ability to deal with multiple USB controllers instead of simply assuming only one exists in the system. This allows discovery of devices that may be attached to the other controllers instead of the operating system ignoring them.<br />
<br />
USB Requests Implemented<br />
* USB_DEVICE_DESCRIPTOR_TYPE<br />
* USB_CONFIGURATION_DESCRIPTOR_TYPE<br />
* URB_FUNCTION_SELECT_CONFIGURATION<br />
* URB_FUNCTION_CLASS_DEVICE<br />
* USB_DEVICE_CLASS_HUB<br />
* USB_BUS_INTERFACE_USBDI_V2<br />
* USB_BUS_INTERFACE_HUB_V5<br />
* URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE<br />
* IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION<br />
* IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE<br />
* IOCTL_INTERNAL_USB_GET_HUB_COUNT<br />
* URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN<br />
* USB_REQUEST_CLEAR_FEATURE<br />
* USB_REQUEST_GET_STATUS<br />
* USB_REQUEST_SET_FEATURE<br />
<br />
= Drivers =<br />
* SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.<br />
* ISAPNP driver has been removed from the set of drivers loaded during booting.<br />
== KDBG ==<br />
* Attaching to processes fixed.<br />
== Miniport ==<br />
* ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.<br />
== NPFS ==<br />
* ReadEvent and WriteEvent have been changed to be notification events.<br />
* A race condition when a read IRP is cancelled has been fixed, reducing random crashes and hangs.<br />
* Various memory leaks have been dealt with.<br />
* Status information now correctly informs a reading/writing thread that a pipe is dead.<br />
* Various buffer checks have been added to prevent attempts to use a buffer that is too small for an operation on a named pipe.<br />
== PCI ==<br />
A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.<br />
* Interrupt Request routing implemented.<br />
* Handling of devices that incorrectly implement the PCI standard has been improved.<br />
* Querying and discovery of devices attached to PCI bus implemented.<br />
* Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.<br />
== PCMCIA ==<br />
* Driver has been stubbed so will require more work before any functionality is added.<br />
== Video ==<br />
* Initial implementation of a driver for the VMWARE SVGA-II Video Card added.<br />
* Various x64 portability fixes to the current VGA driver.<br />
* A unified VBE/VGA miniport driver has been added along with a new Framebuffer Display Driver.<br />
== VIDEOPRT ==<br />
* Proper error codes are now used.<br />
<br />
= Libraries =<br />
== ADVAPI32 ==<br />
* Resources for tracking services are created and destroyed as services start and stop.<br />
* Hardware profiles actually create GUIDs instead of hardcoding them to zero.<br />
* Computer name is used inside of eventlog.<br />
== CPORTLIB ==<br />
* ComPort library has been implemented, based off of the Microsoft whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation.<br />
== CRT ==<br />
* CRT is now linked statically for freeloader, rtl, bmfs, ftfd, and mini_hal.<br />
* CRT is dynamically linked for ntdll, crtdll, and included versions of msvcrt.<br />
* x87 assembly implementation of pow() function imported from glibc, replacing broken implementation in ReactOS.<br />
* Pointer comparison fixed in signal().<br />
* Various functions dealing with codepages and conversions between different encodings have seen fixes.<br />
* x64 implementations of various basic math and pointer functions added.<br />
== KERNEL32 ==<br />
The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.<br />
* Remove all Windows 95 function exports.<br />
* Stub all functions that kernel32 is supposed to export.<br />
* Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.<br />
* kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.<br />
* Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.<br />
* Switching between fibers fixed.<br />
* Various x64 portability changes.<br />
* NT-style debug channels are now enabled and used.<br />
== GDI32 ==<br />
* Leaking of regions temporarily fixed.<br />
* Batch support added for selecting regions for clipping.<br />
* Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.<br />
== MSVCRT ==<br />
* Exports added for a variety of functions.<br />
== NTDLL ==<br />
* Various fixes to loading functions for libraries and executables.<br />
* Service status is now reported to the service manager.<br />
* Various x64 portability changes.<br />
== RTL ==<br />
* New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.<br />
* Various fixes to functions that operate on strings.<br />
* x64 portability fixes for functions that operate on the byte level.<br />
== USER32 ==<br />
* Setting of regions now behaves correctly.<br />
* Cursor icons follow correct call chain instead of calling functions that do not exist.<br />
* Various x64 portability changes.<br />
* Scrollbar tracking now ends if mouse capture is lost.<br />
* Window management code saw refactoring and fixes.<br />
* Start user handle manager rewrite.<br />
* Window text string converted from UNICODE_STRING to LARGE_STRING, fixing display of large text windows.<br />
== PSEH ==<br />
* A dummy PSEH implementation has been added for CLANG.<br />
* x64 version of PSEH has been stubbed.<br />
<br />
= Client/Server Runtime =<br />
== CSRSRV ==<br />
* Code from CSRSS has been moved into CSRSRV.<br />
* CsrTerminateProcess now destroys all CSR threads in a process, fixing the issue of processes never actually dying and their resources never being freed. Besides the resource leak, other processes that wished to use exclusive resources were also starved.<br />
* Basic user mode shutdown support added by exporting process/thread management functions for use by Win32CSR, allowing for shutting down of processes and cleaning up after them.<br />
* Second attempt shutting down of applications is now more forceful and processes are forcefully terminated in most situations.<br />
<br />
== Win32CSR ==<br />
* Hard error handling rewritten, now using Unicode strings and does not crash due to malformed arguments being passed to it.<br />
* Dynamic LineBuffer removed as it was not being properly resized and caused corruptions.<br />
* CsrFreeConsole now closes a process' console handles.<br />
* Locking simplified to having only one for a console.<br />
* Handles to a screen buffer is now tracked instead of references. When all handles have been closed, the buffer is deleted even if it is the "active" buffer.<br />
* RECT/SMALL_RECT structures are now used correctly/consistently. RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive while SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive.<br />
* Text selection outside the visible window is now allowed.<br />
* Console pausing is now implemented.<br />
* Line input processing code now merged into one place instead of being duplicated in multiple places.<br />
* Basic line editing and line editing history implementation added.<br />
* Setting the console screen buffer size has been implemented.<br />
* CREATE_NO_WINDOW flag support added, allowing creation of invisible consoles.<br />
* Management of console windows moved to Win32CSR from CSRSRV.<br />
<br />
== Kernel-mode subsystem server (Win32K) ==<br />
The kernel-mode side of the Win32 subsystem underwent significant modification since the last release. A great deal of progress has been made in the yarotows branch, but there was not enough time to incorporate its improvements. However, effort was made to deal with some of the more visible usability issues. Fixes to drawing of icons should mean they look better than in past releases and a new timer mechanism finally eliminates the problems with using Firefox to browse the internet.<br />
* Creation of bitmaps by the graphics engine is severely broken and a partial rewrite has begun on it.<br />
* Initial implementation of a new window object added.<br />
* Several fixes to Windows Hook Procedures that causes application lockups.<br />
* Shell can now be restarted after killing it.<br />
* Fix cases where windows can deadlock when waiting on another window to finish.<br />
* Fixes to minimizing/maximizing and setting focus of windows.<br />
* SendMessageCallback now implemented.<br />
* Timer implementation suffered from a bug where freed timers would not be available due to improper cleanup.<br />
* Non-queued messages are no longer expected to have a reference to a message queue.<br />
* Icon drawing reimplemented.<br />
* A kernel timer is now used to intermittently force a check on user mode timers instead of simply waiting until a message arrives before carrying out the check.<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=WineConf_2005&diff=28894
WineConf 2005
2010-10-18T18:08:39Z
<p>CycleGeek: cleanup links</p>
<hr />
<div>'''WineConf 2005''' was held in Stuttgart, Germany, on 30 April and 1 May 2005. The ReactOS project sent [[Steven Edwards]] and [[KJK::Hyperion]]. The ReactOS presentation was the first event of second day. Steven did the talking and KJK::Hyperion acted as an advisor for the more technical questions.<br />
<br />
The reaction was mostly positive, but doubts have been raised about the role of ReactOS in the ecosystem, and many Wine developers have dismissed it as a "cool toy".<br />
<br />
Finally, Tridgell of Samba fame has offered help in porting Samba to ReactOS.<br />
<br />
== Links ==<br />
* The [http://svn.reactos.org/svn/reactos/trunk/press-media/presentations/wineconf-2005/ presentation] used at the event.<br />
* [http://wiki.winehq.org/WineConf2005 WineConf 2005] at the Official Wine Wiki.<br />
* [http://winehq.org/images/wineconf05_grp.jpg Group photo] of the event.</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Talk:Mm_Reorganization&diff=28884
Talk:Mm Reorganization
2010-10-16T04:33:49Z
<p>CycleGeek: Propose for deletion</p>
<hr />
<div>== Propose for deletion ==<br />
I'm assuming this isn't needed anymore after lassy's conquest of MM. --[[User:CycleGeek|CycleGeek]] 04:33, 16 October 2010 (UTC)</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Talk:Imagesoft&diff=28883
Talk:Imagesoft
2010-10-16T04:25:30Z
<p>CycleGeek: Propose for deletion</p>
<hr />
<div>==Imagesoft Names==<br />
* '''Imagine''' sounds good!<br />
** Or how about a word like that but applies more to art? Something like '''Envision''', '''Visualize''' or '''Envisage'''. Since this program is basically a canvas for drawing, maybe a name with the word "canvas" in it would be nice :) --[[User:mvent2|mvent2]] 13:33, 5 April 2007 (CEST)<br />
<br />
<br />
*I always liked the original name MS used, '''Paintbrush'''.<br />
-[[User:mikedep333|mikedep333]] 17:39, 2 April 2007 (CEST)<br />
<br />
== Propose for deletion ==<br />
Imagesoft was moved from applications to rosapps in {{rev|26032}} and {{rev|26033}}, then later deleted in {{rev|34303}}. Paint for ReactOS was also added in {{rev|40897}}. --[[User:CycleGeek|CycleGeek]] 04:25, 16 October 2010 (UTC)</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Installing_ReactOS&diff=28882
Installing ReactOS
2010-10-16T03:56:33Z
<p>CycleGeek: Decapitalize section headings, rm a sentence from Hardware support</p>
<hr />
<div>{{Warning|Please bear in mind that ReactOS is still in alpha stage, meaning it is not feature-complete and is not recommended for everyday use.}}<br />
<br />
== System requirements ==<br />
The minimum requirements to install ReactOS are:<br />
<br />
* 32 MB of RAM (Debug builds may require 48MB of RAM)<br />
* IDE hard disk drive<br />
* FAT16/FAT32 primary boot partition<br />
* VGA compatible video card (VESA BIOS version 2.0 or later)<br />
* PS/2 keyboard<br />
* PS/2 compatible mouse or Microsoft Mouse compatible serial mouse<br />
<br />
=== Hardware support ===<br />
ReactOS has limited hardware support. Lists of hardware that have been tested can be found at the following:<br />
<br />
* [[Supported_Hardware/IO|I/O controllers]]<br />
* [[Supported_Hardware/Video_cards|Video cards]]<br />
* [[Supported_Hardware/Sound_cards|Audio cards]]<br />
* [[Supported_Hardware/Network_cards|Network cards]]<br />
<br />
Note that booting from CD-ROM is supported only for running the setup program unless using the LiveCD option, which is exclusively meant to be booted from the CD-ROM. Although it is generally possible, the default configuration will prevent ReactOS from creating a swap file when booted from a CD-ROM. If no swap file is available, ReactOS will stop as soon as it runs out of RAM. In practice, this prevents the use of any non-trivial program.<br />
<br />
== Before installing ==<br />
There are several things to be made aware of before installing ReactOS, or even obtaining the installation media. These include how ReactOS will be installed, limitations of the installation, and backing up existing data.<br />
<br />
=== Installation strategy ===<br />
The first consideration to make is whether to install ReactOS on a dedicated testing machine or in a contained environment, such as running on an emulator without direct disk access. The use of an emulator is preferable if the machine on which you will run ReactOS is your primary computer or if you have important data on the computer which you cannot afford to lose.<br />
<br />
If you decide to install ReactOS on a disk drive that contains an existing operating system (such as Microsoft Windows XP), you should ensure that the drive is formatted with a file system ReactOS can access and write to and that there is sufficient free space on the drive such that ReactOS can be installed, which can be somewhere around 250 MB. Furthermore, the current hardware limitations to which ReactOS is constrained must be identified and compared to the target computer system (e.g., the limitation that only several SATA disk drives may be accessed, and that ReactOS has ''extremely'' limited [[USB_Stack|USB]] support as of the 0.3.10 release).<br />
<br />
Once the available hardware and software situation is determined the installation media can be selected. For example, if your computer includes an ATA CD-ROM and an IDE hard disk that does not contain irreplaceable data, a good installation option may be to write an ISO image of the ReactOS installation media to a CD-RW and proceed to install ReactOS on the IDE hard disk via the CD-ROM.<br />
<br />
=== Limitations ===<br />
The ReactOS setup utility and [[FreeLoader|boot loader]] have a number of limitations. The most prominent are:<br />
<br />
* ReactOS can only be booted from IDE CD-ROMs and hard disks.<br />
* The boot partition must be the first FAT16 or FAT32 partition on the disk.<br />
* The setup utility cannot check the integrity of file systems.<br />
* The setup utility does not prevent users from performing dangerous and potentially destructive operations.<br />
<br />
== Getting ReactOS ==<br />
Due to the current state of the project, the ReactOS Foundation does not offer official installation media for distribution. Installation CD-ROMs must be created by the user by writing an available image file to a CD-ROM.<br />
<br />
=== Downloading the image file ===<br />
Official ISO image files can be downloaded at one of the following locations:<br />
<br />
* The official [http://www.reactos.org/en/download.html Download] page. (Installation CD)<br />
* ReactOS at [http://sourceforge.net/projects/reactos/files/ SourceForge] (ReactOS-{{ReactOS-Curr-Version}}-REL-iso.zip)<br />
<br />
=== Creating the Installation CD ===<br />
The downloaded file is a compressed archive in ZIP format, containing a single file named "ReactOS.iso". The ISO image contains everything needed to create the CD.<br />
<br />
* Extract the image file from the archive into a temporary directory.<br />
* Burn the ISO image to a CD-R or CD-RW using any software of your choice.<br />
<br />
When burning the ISO to disc, be sure it is written as an image file. Writing to the disc as another type of data will not work and render the Installation CD unbootable. Look for an option similar to "Burn from ISO" or "Write disk image".<br />
<br />
== Installing ReactOS ==<br />
ReactOS goes through three stages during setup. The first two stages deal with the installation of the system, while the third stage is the first usable boot by the user.<br />
<br />
* First stage - Text mode setup, started when booting from a ReactOS CD-ROM.<br />
* Second stage - Booting to GUI installer. Input of user information and registering of files.<br />
* Third stage - Booting to desktop, user configurations.<br />
<br />
=== Real hardware ===<br />
* Make sure your BIOS is configured to boot from the CD-ROM first.<br />
* Insert the ReactOS setup CD-ROM into a CD-ROM drive and reboot your computer. On the next boot, the ReactOS setup utility will start.<br />
* Follow the instructions on the screen to install ReactOS on your computer.<br />
* After the installation has finished, remove the setup CD-ROM from the CD-ROM drive and press ''Enter'' to reboot your computer. You can now start ReactOS by selecting it from the boot menu.<br />
<br />
=== Emulation software ===<br />
An emulator is a software program that provides a virtual hardware platform. Software instructions that would be run on hardware are now interpreted by the emulator software. This allows you to "run" a different kind of computer hardware and its software in a window on your computer.<br />
<br />
For information on installing ReactOS on emulation software, see [http://www.reactos.org?page=newbies_install here].<br />
*NOTE If you are running VirtualBox, and the keyboard is not functioning properly (random capitalization or simply not working), turn off USB support for the VB. (This means USB keyboards might not work at all.)<br />
<br />
== Boot options ==<br />
=== Kernel command line ===<br />
The [[kernel]] command line is a text string that is passed to ReactOS by the boot loader (usually [[FreeLoader]]). It consists of several switches, each of which has a special meaning to ReactOS. A switch is a forward slash (<code>/</code>) followed by a text string (the name of the switch), and optionally an equal sign (<code>=</code>) and a text string (the value). If the equal sign is present, then at least one value is required to follow.<br />
<br />
The syntax, variables, and device strings used by FreeLoader conform to the [[Wikipedia:Advanced_RISC_Computing|ARC]] firmware and boot specification, similarly to the boot system used in all Windows NT implementations (such as the Windows NT boot loader on the x86 architecture, or the ARC console used to boot Windows NT 4.0 on the [[Wikipedia:Jazz_(computer)|MIPS]], Alpha AXP, and PowerPC architectures). Because of this, boot disks and other firmware- or BIOS-accessible devices are specified by each of the bus, disk, slice, and partition values associated with the device.<br />
<br />
In FreeLoader the kernel command line is specified in an <code>Options</code> setting in <tt>freeldr.ini</tt>. The following text is an example of the contents of <tt>freeldr.ini</tt>, which boots ReactOS from the first partition of the first IDE drive of the computer system:<br />
<code><br />
[ReactOS]<br />
BootType=ReactOS<br />
SystemPath=multi(0)disk(0)rdisk(0)partition(1)\reactos<br />
Options=/DEBUGPORT=SCREEN<br />
</code><br />
As used in the above sample file, <code>DEBUGPORT</code> is a boot option. By adding the boot option <code>/DEBUGREPORT=SCREEN</code>, ReactOS will print debugging information to the screen.<br />
<br />
=== Options ===<br />
The following boot options may be used:<br />
<br />
; <code>DEBUGPORT</code> : Specifying <code>DEBUGPORT</code> as a boot option will enable certain debugging features.<br />
* Format: <code>DEBUGPORT=[SCREEN|BOCHS|GDB|PICE|COM1|COM2|COM3|COM4|FILE|MDA]</code><br>Any one of the following values may set:<br />
** <code>SCREEN</code>: Send debug output to the screen.<br />
** <code>BOCHS</code>: Send debug output to bochs.<br />
** <code>GDB</code>: Enable the GNU debugger (GDB) stub so remote debugging using GDB is possible.<br />
** <code>PICE</code>: Enable the Private ICE driver so debugging using Private ICE is possible.<br />
** <code>COM1</code>: Send debug output to COM1.<br />
** <code>COM2</code>: Send debug output to COM2.<br />
** <code>COM3</code>: Send debug output to COM3.<br />
** <code>COM4</code>: Send debug output to COM4.<br />
** <code>FILE</code>: Send debug output to a file %systemroot%/reactos/debug.log <br />
** <code>MDA</code>: Send debug output to MDA ''(The old text graphic card from IBM)''.<br />
<br />
; <code>BAUDRATE</code> : Specifies baudrate of the serial port to be <code>[baudrate]</code> bps. Used in conjunction with <code>COM1-4</code> or <code>GDB</code>.<br />
* Format: <code>BAUDRATE=[baudrate]</code><br />
<br />
; <code>IRQ</code> : Specifies the IRQ number of the serial port to be <code>[irq-number]</code>. Used in conjunction with <code>COM1-4</code> or <code>GDB</code>.<br />
* Format: <code>IRQ=[irq-number]</code><br />
<br />
; <code>PROFILE</code> : Enables profiling. Profiling information will be written in <code>%windir%\profiler.log</code>. This will slow down the system quite a bit.<br />
* Format: <code>PROFILE</code><br />
<br />
; <code>MAXMEM</code> : Will restrict ReactOS to use only the first <code>[maxmem]</code> MB of physical memory.<br />
* Format: <code>MAXMEM=[maxmem]</code><br />
<br />
[[Category:Tutorial]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Techwiki:Win32k/apfnSimpleCall&diff=28880
Techwiki:Win32k/apfnSimpleCall
2010-10-15T19:20:09Z
<p>CycleGeek: Windows names</p>
<hr />
<div>This list has been generated with the syscalldump app from rosapps on Windows XP SP2 and Windows Vista, constant names added by hand.<br />
<br />
{| border="1" cellpadding="1" cellspacing="0" style="font-size: 85%; border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%"<br />
| Routine<br />
| Symbol<br />
| Windows 2000<br />
| Windows XP<br />
| Windows Server 2003<br />
| Windows Vista 32/64<br />
|-<br />
|| NOPARAM_ROUTINE_CREATEMENU || _CreateMenu || || 0x00 || 0x00 || 0x00<br />
|-<br />
|| NOPARAM_ROUTINE_CREATEMENUPOPUP || _CreatePopupMenu || || 0x01 || 0x01 || 0x01<br />
|-<br />
|| NOPARAM_ROUTINE_DISABLEPROCWNDGHSTING || _DisableProcessWindowsGhosting || || 0x02 || 0x02 || 0x06<br />
|-<br />
|| NOPARAM_ROUTINE_MSQCLEARWAKEMASK || (xxx)ClearWakeMask || || 0x03 || 0x03 || 0x03<br />
|-<br />
|| NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION || _AllowForegroundActivation || || 0x04 || 0x04 || 0x02<br />
|-<br />
|| NPPARAM_ROUTINE_CREATESYSTEMTHREADS || xxxCreateSystemThreads || || - || || 0x04<br />
|-<br />
|| NOPARAM_ROUTINE_DESTROY_CARET || zzzDestroyCaret || || 0x05 || 0x05 || 0x05<br />
|-<br />
|| NOPARAM_ROUTINE_GETDEVICECHANGEINFO || GetDeviceChangeInfo || || 0x06 || 0x06 || 0x07<br />
|-<br />
|| NOPARAM_ROUTINE_GETIMESHOWSTATUS || _GetIMEShowStatus || || 0x07 || 0x07 || 0x08<br />
|-<br />
|| NOPARAM_ROUTINE_GETINPUTDESKTOP || xxxGetInputDesktop || || 0x08 || 0x08 || 0x09<br />
|-<br />
|| NOPARAM_ROUTINE_GETMSESSAGEPOS || _GetMessagePos || || 0x09 || 0x09 || 0x0a<br />
|-<br />
|| NOPARAM_ROUTINE_GETREMOTEPROCID || GetRemoteProcessId || || 0x0a || 0x0a || -<br />
|-<br />
|| NOPARAM_ROUTINE_HIDECURSORNOCAPTURE || zzzHideCursorNoCapture || || 0x0b || 0x0b || 0x0c<br />
|-<br />
|| NOPARAM_ROUTINE_LOADCURSANDICOS || _LoadCursorsAndIcons || || 0x0c || 0x0c || 0x0d<br />
|-<br />
|| NOPARAM_ROUTINE_PREPAREFORLOGOFF || PrepareForLogoff || || - || || 0x0f<br />
|-<br />
|| NOPARAM_ROUTINE_RELEASECAPTURE || xxxReleaseCapture || || 0x0d || 0x0d || 0x10<br />
|-<br />
|| NOPARAM_ROUTINE_RESETDBLCLICK || _ResetDblClk || || 0x0e || 0x0e || 0x11<br />
|-<br />
|| NOPARAM_ROUTINE_ZAPACTIVEANDFOUS || ZapActiveAndFocus || || 0x0f || 0x0f || 0x12<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTECONSHDWSTOP || xxxRemoteConsoleShadowStop || || 0x10 || 0x10 || 0x13<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTEDISCONNECT || xxxRemoteDisconnect || || 0x11 || 0x11 || 0x14<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTELOGOFF || RemoteLogoff || || 0x12 || 0x12 || 0x15<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTENTSECURITY || RemoteNtSecurity || || 0x13 || 0x13 || 0x16<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTESHDWSETUP || xxxRemoteShadowSetup || || 0x14 || 0x14 || 0x17<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTESHDWSTOP || xxxRemoteShadowStop || || 0x15 || 0x15 || 0x18<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE || xxxRemotePassthruEnable || || 0x16 || 0x16 || 0x19<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE || RemotePassthruDisable || || 0x17 || 0x17 || 0x1a<br />
|-<br />
|| NOPARAM_ROUTINE_REMOTECONNECTSTATE || RemoteConnectState || || 0x18 || 0x18 || 0x1b<br />
|-<br />
|| NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING || UpdatePerUserImmEnabling || || 0x19 || 0x19 || 0x1c<br />
|-<br />
|| NOPARAM_ROUTINE_USERPWRCALLOUTWORKER || xxxUserPowerCalloutWorker || || 0x1a || 0x1a || 0x1d<br />
|-<br />
|| NOPARAM_ROUTINE_WAKERITFORSHTDWN || WakeRITForShutdown|| || - || || 0x1e<br />
|-<br />
|| NOPARAM_ROUTINE_INIT_MESSAGE_PUMP || _DoInitMessagePumpHook || || 0x1b || 0x1b || 0x1f<br />
|-<br />
|| NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP || _DoUninitMessagePumpHook || || 0x1c || 0x1c || 0x20<br />
|-<br />
|| NOPARAM_ROUTINE_LOADUSERAPIHOOK || xxxLoadUserApiHook || || 0x1d || 0x1d || (0x0e)<br />
|-<br />
|| ONEPARAM_ROUTINE_BEGINDEFERWNDPOS || _BeginDeferWindowPos || || 0x1e || 0x1e || 0x21<br />
|-<br />
|| ONEPARAM_ROUTINE_GETSENDMSGRECVR || _GetSendMessageReceiver || || - || || 0x22<br />
|-<br />
|| ONEPARAM_ROUTINE_WINDOWFROMDC || _WindowFromDC || || 0x1f || 0x1f || 0x23<br />
|-<br />
|| ONEPARAM_ROUTINE_ALLOWSETFOREGND || xxxAllowSetForegroundWindow || || 0x20 || 0x20 || 0x24<br />
|-<br />
|| ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT || _CreateEmptyCursorObject || || 0x21 || 0x21 || 0x25<br />
|-<br />
|| ONEPARAM_ROUTINE_CREATESYSTEMTHREADS || xxCreateSystemThreads || || 0x22 || 0x22 || -<br />
|-<br />
|| ONEPARAM_ROUTINE_CSDDEUNINITIALIZE || _CsDdeUninitialize || || 0x23 || 0x23 || 0x26<br />
|-<br />
|| ONEPARAM_ROUTINE_DIRECTEDYIELD || xxxDirectedYield || || 0x24 || 0x24 || 0x27<br />
|-<br />
|| ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS || _EnumClipboardFormats || || 0x25 || 0x25 || 0x28<br />
|-<br />
|| ONEPARAM_ROUTINE_GETCURSORPOS || xxxGetCursorPos || || 0x26 || 0x26 || -<br />
|-<br />
|| ONEPARAM_ROUTINE_GETINPUTEVENT || xxxGetInputEvent || || 0x27 || 0x27 || 0x29<br />
|-<br />
|| ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT || _GetKeyboardLayout || || 0x28 || 0x28 || 0x2a<br />
|-<br />
|| ONEPARAM_ROUTINE_GETKEYBOARDTYPE || _GetKeyboardType || || 0x29 || 0x29 || 0x2b<br />
|-<br />
|| ONEPARAM_ROUTINE_GETPROCDEFLAYOUT || _GetProcessDefaultLayout || || 0x2a || 0x2a || 0x2c<br />
|-<br />
|| ONEPARAM_ROUTINE_GETQUEUESTATUS || _GetQueueStatus || || 0x2b || 0x2b || 0x2d<br />
|-<br />
|| ONEPARAM_ROUTINE_GETWINSTAINFO || _GetWinStationInfo || || 0x2c || 0x2c || 0x2e<br />
|-<br />
|| ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL || HandleSystemThreadCreationFailure || || 0x2d || 0x2d || (0x0b)<br />
|-<br />
|| ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW || _LockSetForegroundWindow || || 0x2e || 0x2e || 0x2f<br />
|-<br />
|| ONEPARAM_ROUTINE_LOADFONTS || xxxLW_LoadFonts || || 0x2f || 0x2f || 0x30<br />
|-<br />
|| ONEPARAM_ROUTINE_MAPDEKTOPOBJECT || _MapDesktopObject || || 0x30 || 0x30 || 0x31<br />
|-<br />
|| ONEPARAM_ROUTINE_MESSAGEBEEP || xxxMessageBeep || || 0x31 || 0x31 || 0x32<br />
|-<br />
|| ONEPARAM_ROUTINE_PLAYEVENTSOUND || PlayEventSound || || 0x32 || 0x32 || 0x33<br />
|-<br />
|| ONEPARAM_ROUTINE_POSTQUITMESSAGE || _PostQuitMessage || || 0x33 || 0x33 || 0x34<br />
|-<br />
|| ONEPARAM_ROUTINE_PREPAREFORLOGOFF || PrepareForLogoff || || 0x34 || 0x34 || (0x0f)<br />
|-<br />
|| ONEPARAM_ROUTINE_REALIZEPALETTE || xxxRealizePalette || || 0x35 || 0x35 || 0x35<br />
|-<br />
|| ONEPARAM_ROUTINE_REGISTERLPK || RegisterLPK || || 0x36 || 0x36 || 0x36<br />
|-<br />
|| ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD || zzzRegisterSystemThread || || - || - || 0x37<br />
|-<br />
|| ONEPARAM_ROUTINE_REMOTERECONNECT || xxxRemoteReconnect || || 0x37 || 0x37 || 0x38<br />
|-<br />
|| ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS || RemoteThinwireStats || || 0x38 || 0x38 || 0x39<br />
|-<br />
|| ONEPARAM_ROUTINE_RELEASEDC || _ReleaseDC || || 0x39 || 0x39 || 0x3a<br />
|-<br />
|| ONEPARAM_ROUTINE_REMOTENOTIFY || xxxRemoteNotify || || - || - || 0x3b<br />
|-<br />
|| ONEPARAM_ROUTINE_REPLYMESSAGE || _ReplyMessage || || 0x3a || 0x3a || 0x3c<br />
|-<br />
|| ONEPARAM_ROUTINE_SETCARETBLINKTIME || _SetCaretBlinkTime || || 0x3b || 0x3b || 0x3d<br />
|-<br />
|| ONEPARAM_ROUTINE_SETDBLCLICKTIME || _SetDoubleClickTime || || 0x3c || 0x3c || 0x3e<br />
|-<br />
|| ONEPARAM_ROUTINE_SETIMESHOWSTATUS || xxxSetIMEShowStatus || || 0x3d || 0x3d || -<br />
|-<br />
|| ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO || _SetMessageExtraInfo || || 0x3e || 0x3e || 0x3f<br />
|-<br />
|| ONEPARAM_ROUTINE_SETPROCDEFLAYOUT || _SetProcessDefaultLayout || || 0x3f || 0x3f || 0x40<br />
|-<br />
|| ONEPARAM_ROUTINE_SETWATERMARKSTRINGS || _SetWatermarkStrings || || - || || 0x41<br />
|-<br />
|| ONEPARAM_ROUTINE_SHOWCURSOR || zzzShowCursor || || 0x40 || 0x40 || 0x42<br />
|-<br />
|| ONEPARAM_ROUTINE_SHOWSTARTGLASS || zzzShowStartGlass || || 0x41 || 0x41 || 0x43<br />
|-<br />
|| ONEPARAM_ROUTINE_SWAPMOUSEBUTTON || _SwapMouseButton || || 0x42 || 0x42 || 0x44<br />
|-<br />
|| || _WOWModuleUnload || || 0x43 || 0x43 || 0x45<br />
|-<br />
|| || xxxRemoteNotify || || 0x44 || 0x44 || (0x3b)<br />
|-<br />
|| HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW || _DeregisterShellHookWindow || || 0x45 || 0x45 || 0x46<br />
|-<br />
|| HWND_ROUTINE_DWP_GETENABLEDPOPUP || DWP_GetEnabledPopup || || 0x46 || 0x46 || 0x47<br />
|-<br />
|| HWND_ROUTINE_GETWNDCONTEXTHLPID || _GetWindowContextHelpId || || 0x47 || 0x47 || 0x48<br />
|-<br />
|| HWND_ROUTINE_REGISTERSHELLHOOKWINDOW || _RegisterShellHookWindow || || 0x48 || 0x48 || 0x49<br />
|-<br />
|| || SetMsgBox || || 0x49 || 0x49 || 0x4a<br />
|-<br />
|| HWNDOPT_ROUTINE_SETPROGMANWINDOW || _SetProgmanWindow || || 0x4a || 0x4a || 0x4b<br />
|-<br />
|| HWNDOPT_ROUTINE_SETTASKMANWINDOW || _SetTaskmanWindow || || 0x4b || 0x4b|| 0x4c<br />
|-<br />
|| HWNDPARAM_ROUTINE_GETCLASSICOCUR || GetClassIcoCur || || 0x4c || 0x4c || 0x4d<br />
|-<br />
|| HWNDPARAM_ROUTINE_CLEARWINDOWSTATE || ClearWindowState || || 0x4d || 0x4d || 0x4e<br />
|-<br />
|| HWNDPARAM_ROUTINE_KILLSYSTEMTIMER || _KillSystemTimer || || 0x4e || 0x4e || 0x4f<br />
|-<br />
|| HWNDPARAM_ROUTINE_SETDIALOGPOINTER || SetDialogPointer || || 0x4f || 0x4f || 0x50<br />
|-<br />
|| HWNDPARAM_ROUTINE_SETVISIBLE || SetVisible || || 0x50 || 0x50 || 0x51<br />
|-<br />
|| HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID || _SetWindowContextHelpId || || 0x51 || 0x51 || 0x52<br />
|-<br />
|| HWNDPARAM_ROUTINE_SETWINDOWSTATE || SetWindowState || || 0x52 || 0x52 || 0x53<br />
|-<br />
|| HWNDLOCK_ROUTINE_WINDOWHASSHADOW? || WindowHasShadow || || 0x53 || 0x53 || 0x54<br />
|-<br />
|| HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS || xxxArrangeIconicWindows || || 0x54 || 0x54 || 0x55<br />
|-<br />
|| HWNDLOCK_ROUTINE_DRAWMENUBAR || xxxDrawMenuBar || || 0x55 || 0x55 || 0x56<br />
|-<br />
|| HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD || xxxCheckImeShowStatusInThread || || 0x56 || 0x56 || 0x57<br />
|-<br />
|| HWNDLOCK_ROUTINE_GETSYSMENUHANDLE || xxxGetSysMenuHandle || || 0x57 || 0x57 || 0x58<br />
|-<br />
|| HWNDLOCK_ROUTINE_REDRAWFRAME || xxxRedrawFrame || || 0x58 || 0x58 || 0x59<br />
|-<br />
|| HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK || xxxRedrawFrameAndHook || || 0x59 || 0x59 || 0x5a<br />
|-<br />
|| HWNDLOCK_ROUTINE_SETDLGSYSMENU || xxxSetDialogSystemMenu || || 0x5a || 0x5a || 0x5b<br />
|-<br />
|| HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW || xxxStubSetForegroundWindow || || 0x5b || 0x5b || 0x5c<br />
|-<br />
|| HWNDLOCK_ROUTINE_SETSYSMENU || xxxSetSysMenu || || 0x5c || 0x5c || 0x5d<br />
|-<br />
|| HWNDLOCK_ROUTINE_UPDATECKIENTRECT || xxxUpdateClientRect || || 0x5d || 0x5d || 0x5e<br />
|-<br />
|| HWNDLOCK_ROUTINE_UPDATEWINDOW || xxxUpdateWindow || || 0x5e || 0x5e || 0x5f<br />
|-<br />
|| || xxxBroadcastImeShowStatusChange || || 0x5f || 0x5f || 0x60<br />
|-<br />
|| TWOPARAM_ROUTINE_ENABLEWINDOW || xxxEnableWindow || || 0x60 || 0x60 || 0x61<br />
|-<br />
|| TWOPARAM_ROUTINE_REDRAWTITLE || xxxRedrawTitle || || 0x61 || 0x61 || 0x62<br />
|-<br />
|| TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS || xxxShowOwnedPopups || || 0x62 || 0x62 || 0x63<br />
|-<br />
|| TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW || xxxSwitchToThisWindow || || 0x63 || 0x63 || 0x64<br />
|-<br />
|| TWOPARAM_ROUTINE_UPDATEWINDOWS || xxxUpdateWindows || || 0x64 || 0x64 || 0x65<br />
|-<br />
|| TWOPARAM_ROUTINE_VALIDATERGN || xxxValidateRgn || || 0x65 || 0x65 || 0x66<br />
|-<br />
|| TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER || _ChangeWindowMessageFilter|| || - || || 0x67<br />
|-<br />
|| TWOPARAM_ROUTINE_GETCURSORPOS || xxxGetCursorPos || || - || || 0x68<br />
|-<br />
|| TWOPARAM_ROUTINE_GETHDEVNAME || GetHDevName || || 0x66 || 0x66 || 0x69<br />
|-<br />
|| TWOPARAM_ROUTINE_INITANSIOEM || InitAnsiOem || || 0x67 || 0x67 || 0x6a<br />
|-<br />
|| TWOPARAM_ROUTINE_NLSSENDIMENOTIFY || NlsKbdSendIMENotification || || 0x68 || 0x68 || 0x6b<br />
|-<br />
|| TWOPARAM_ROUTINE_REGISTERGHSTWND || xxxRegisterGhostWindow|| || - || || 0x6c<br />
|-<br />
|| TWOPARAM_ROUTINE_REGISTERLOGONPROCESS || _RegisterLogonProcess || || 0x69 || 0x69 || 0x6d<br />
|-<br />
|| TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD || zzzRegisterSystemThread || || 0x6a || 0x6a || -<br />
|-<br />
|| TWOPARAM_ROUTINE_REGISTERSBLFROSTWND || xxxRegisterSiblingFrostWindow|| || - || || 0x6e<br />
|-<br />
|| TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS || xxxRegisterUserHungAppHandlers || || 0x6b || 0x6b || 0x6f<br />
|-<br />
|| TWOPARAM_ROUTINE_SHADOWCLEANUP || RemoteShadowCleanup || || 0x6c || 0x6c|| 0x70<br />
|-<br />
|| TWOPARAM_ROUTINE_REMOTESHADOWSTART || RemoteShadowStart || || 0x6d || 0x6d || 0x71<br />
|-<br />
|| TWOPARAM_ROUTINE_SETCARETPOS || zzzSetCaretPos || || 0x6e || 0x6e || 0x72<br />
|-<br />
|| TWOPARAM_ROUTINE_SETCURSORPOS || zzzSetCursorPos || || 0x6f || 0x6f || 0x73<br />
|-<br />
|| TWOPARAM_ROUTINE_SETPHYSCURSORPOS || zzzSetPhysicalCursorPos|| || - || || 0x74<br />
|-<br />
|| TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK || zzzUnhookWindowsHook || || 0x70 || 0x70 || 0x75<br />
|-<br />
|| TWOPARAM_ROUTINE_WOWCLEANUP || _WOWCleanup || || 0x71 || 0x71 || 0x76<br />
|}<br />
<br />
References:<br />
* http://www.reversing.be/article.php?story=20050401013131588</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Supported_Hardware/Video_cards&diff=28878
Supported Hardware/Video cards
2010-10-15T03:20:49Z
<p>CycleGeek: Numbered list; Windows names</p>
<hr />
<div>;[[Supported Hardware]]/[[Supported Hardware/Video cards|Video cards]]<br />
<br />
Please update this page with the status of each Video card that is tested. '''Please add a link to the site where the driver was obtained, driver version and OS version.''' AS YOU CAN SEE, ITS LISTED ALPHABETICALLY, SO PLEASE COMPLY TO THIS ORDER. <br />
<br />
== Driver types ==<br />
* '''VBE driver (vbemp.sys)'''<br />
** Supports only graphic cards supporting VESA BIOS version v2.0 and higher.<br />
** Supports all available resolutions (640x480 and higher)<br />
** Supports all available color resolutions (8, 16, 24, 32 bits)<br />
<br />
* '''VGA driver (vgamp.sys)'''<br />
** Supports a standard resolution of 640x480x4 (4 bit = 16 colors)<br />
** Its presence is necessary at all times, for emergency debug fallback.<br />
<br />
* '''Native driver'''<br />
** This is Video Adapter's own Windows driver.<br />
<br />
== Possible statuses ==<br />
{| cellpadding="3" cellspacing="0" border="1" style="border: gray solid 1px; border-collapse: collapse; background: #ececec;" | <br />
!Status <br />
|Description<br />
|-<br />
! {{not tested}} <br />
| No test has been performed.<br />
|-<br />
! {{works}} <br />
| Works without any major problems<br />
|-<br />
! {{inaccurate}}<br />
| Outdated / insufficient debugging data<br />
|-<br />
! {{failed}} <br />
| Fails to work or crashes ReactOS<br />
|}<br />
<br />
== Tested video cards ==<br />
{| class="sortable wikitable" border="1" cellpadding="5" cellspacing="0" style="font-size: 85%; border: gray solid 1px; border-collapse: collapse; width: 90%; text-align: left;" |<br />
|- style="text-align: center; background: #ececec;"<br />
! style="width: 24%; background: #cccccc;" | Video<br />
! style="width: 5%;" | VGA<br />
! style="width: 5%;" | VESA<br />
! style="width: 5%;" | Native<br />
! style="width: 5%;" | Revision<br />
! style="width: 48%;" | Comments<br />
! style="width: 7%; background: #cccccc;" | Tester<br />
! style="width: 1%;" | Download URL<br />
|-<br />
! style="background: #ececec;" | 3DFX Voodoo3 16MB<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! 47092<br />
| Supports all color bitdepths up to 24bit.<br />
! [[User:Haos|Haos]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | ATI 3D Rage II+<br />
! {{not tested}}<br />
! {{works}}<br />
! {{works}}<br />
! 41228<br />
| Mouse cursor is not being drawn in VGA mode.<br />
! [[User:Haos|Haos]]<br />
| <br />
<br />
|-47134<br />
! style="background: #ececec;" | ATI Mobitity Radeon 7500<br />
! {{not tested}}<br />
! {{works}}<br />
! {{works}}<br />
! Trunk <br />
| Used ATI Driver from lenovo on a T30, stuck into .iso, installs and shows in device manager, no problems that I saw, worked fine. wasn't able to test any opengl apps though. You can't install drivers from the installer as it doesn't work.<br />
! [[User:Techsalvager|Techsalvager]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | ATI Mobitity Radeon HD 2400<br />
! {{not tested}}<br />
! {{works}}<br />
! {{not tested}}<br />
! 0.3.10 live<br />
| <br />
! [[User:Kario|Kario]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon 9250 PCI<br />
! {{works}}<br />
! {{works}}<br />
! {{not tested}}<br />
! 42978<br />
| <br />
! [[User:Techsalvager|Techsalvager]]<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon 9500 AGP<br />
! {{works}}<br />
! {{works}}<br />
! {{failed}}<br />
! 47092<br />
| Slipstreamed ati drivers from amd website into ros cd, crash on 4th stage, {{bug|5362}}.<br />
! [[User:Haos|Haos]]<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon 9550 AGP<br />
! {{not tested}}<br />
! {{works}}<br />
! {{works}}<br />
! 43292<br />
| Slipstreamed ati drivers from amd website into ros cd, drivers load and run natively. no hardware acceleration yet.<br />
! [[User:Techsalvager|Techsalvager]]<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon 9600 Pro AGP<br />
! {{not tested}}<br />
! {{works}}<br />
! {{works}}<br />
! 43304<br />
| No slipstream: I have extracted drivers from Windows XP (after installing Catalyst 9.6) and put them in a CD. Then I used ROS wizard for installation, it installed fine and the VGA is recognised. No hw acceleration.<br />
! [[User:Ey3|Ey3]]<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon HD 2100 onboard<br />
! {{works}}<br />
! {{works}}<br />
! {{not tested}}<br />
! 42978<br />
| <br />
! [[User:Techsalvager|Techsalvager]]<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon HD 3100 Graphics<br />
! {{works}}<br />
! {{works}}<br />
! {{failed}}<br />
! 40825<br />
| Driver installation fails (ATI Catalyst™ 9.5 IGP).<br />
! Unknown<br />
| [http://game.amd.com/us-en/drivers_catalyst.aspx?p=xp/integrated-xp link]<br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon X1300 AGP<br />
! {{not tested}}<br />
! {{works}}<br />
! {{works}}<br />
! 43304<br />
| Slipstreamed ati drivers from amd website into ros cd, drivers load and run natively. no hardware acceleration yet.<br />
! [[User:Techsalvager|Techsalvager]]<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon X1300XT AGP<br />
! {{not tested}}<br />
! {{works}}<br />
! {{not tested}}<br />
! 43304<br />
| <br />
! [[User:Ey3|Ey3]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon X300 PCIe<br />
! {{not tested}}<br />
! {{works}}<br />
! {{not tested}}<br />
! 42978<br />
| <br />
! [[User:Techsalvager|Techsalvager]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | ATI Radeon X800GTO<br />
! {{works}}<br />
! {{works}}<br />
! {{not tested}}<br />
! missing<br />
| No known problems.<br />
! [[User:Bongmaster|Bongmaster]]<br />
|<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | ATI Rage Pro 128 Ultra 32mb<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! 44458<br />
| ATI package uses 16bit InstallShield. Native drivers from ATI suffer from {{bug|4354}}, native drivers bundled in Windows XP work fine.<br />
! [[User:Geoz|Geoz]], [[User:Haos|Haos]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | Intel I815 (IGP I752)<br />
! {{works}}<br />
! {{failed}}<br />
! {{failed}}<br />
! bootcd-47121<br />
| vga driver works fine, vesa failed (video driver init error), native driver failed (installation wizard crash)<br />
<br />
! [[User:m0z4rt|m0z4rt]]<br />
| [http://downloadmirror.intel.com/4657/a08/win2k_xp67.zip xp_driver_ziped] [http://downloadmirror.intel.com/4665/eng/win2k_xpe67.exe xp_driver_exe]<br />
<br />
|-<br />
! style="background: #ececec;" | Intel Extreme Graphics (integrated Intel 845GE chipset)<br />
! {{works}}<br />
! {{works}}<br />
! {{not tested}}<br />
! Missing<br />
| <br />
! Unknown<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 03)<br />
! {{not tested}}<br />
! {{not tested}}<br />
! {{not tested}}<br />
! livecd-47135<br />
| <br />
! [[User:m0z4rt|m0z4rt]]<br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | Matrox MGA-100 AGP 2MB<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! 41438<br />
| Minor issues, see {{bug|4563}}<br />
! [[User:Haos|Haos]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | Matrox Millenium G400 AGP 32MB<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! Missing<br />
| Minor issues, see {{bug|4563}}, opengl ICD doesnt work.<br />
! [[User:Haos|Haos]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | NVIDIA TNT RIVA 16MB<br />
! {{works}}<br />
! {{works}}<br />
! {{failed}}<br />
! <br />
| used drivers 44.x going to test with 71.89 that Haos used on the TNT2<br />
! [[User:Techsalvager|Techsalvager]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | NVIDIA TNT2 Model 64 32MB<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! 41438<br />
| OpenGL ICD doesnt work.<br />
! [[User:Haos|Haos]]<br />
| [http://download.nvidia.com/Windows/71.89/71.89_win2kxp_international.exe Driver]<br />
<br />
|-<br />
! style="background: #ececec;" | NVIDIA GeForce 4 MX440 AGP 8x<br />
! {{not tested}}<br />
! {{failed}}<br />
! {{not tested}}<br />
! 42978<br />
| system crash on 2nd stage same as the geforce fx 5200 problem<br />
! [[User:Techsalvager|Techsalvager]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | NVIDIA GeForce 4 Ti 4200 128MB AGP<br />
! {{works}}<br />
! {{works}}<br />
! {{failed}}<br />
! Missing<br />
| Drivers do not install<br />
! [[User:LinoSP|LinoSP]]<br />
| [http://es.download.nvidia.com/Windows/93.71/93.71_forceware_winxp2k_international_whql.exe Windows XP / Windows 2000]<br />
<br />
|-<br />
! style="background: #ececec;" | NVIDIA GeForce 5200 128MB AGP<br />
! {{works}}<br />
! {{failed}}<br />
! {{failed}}<br />
! Missing \ 42978<br />
| Card fails to display picture after bootscreen; monitor 'sleeps.' - Geoz \ 2nd stage gets "!!! Unhandled or Unexpected Code at line: 808b8b64!!!" in debug output - Unknown reporter.<br />
! [[User:Geoz|Geoz]] <br />
|<br />
<br />
|-<br />
! style="background: #ececec;" | NVIDIA GeForce 5900 PCIe<br />
! {{failed}}<br />
! {{failed}}<br />
! {{not tested}}<br />
! Missing<br />
| No debug output due to system used on had no serial port, will test on another system later.<br />
! [[User:Techsalvager|Techsalvager]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | NVIDIA Quadro 4 980 XGL<br />
! {{not tested}}<br />
! {{works}}<br />
! {{works}}<br />
! 42978<br />
| Installer fails to install video drivers, common, will test with a slipstream disc of files. EDIT: slipstream of nvidia drivers to cd works, ROS loads native nvidia drivers, after reboot ROS locks up.<br />
! [[User:Techsalvager|Techsalvager]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | S3 Trio64+<br />
! {{works}}<br />
! {{failed}}<br />
! {{works}}<br />
! Missing<br />
| Doesnt support VESA 2.0. For VGA, please see point 3 of "Known Issues". With native Windows XP drivers, see {{bug|4354}}<br />
! [[User:Haos|Haos]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | S3 VIRGE 86c325<br />
! {{failed}}<br />
! {{failed}}<br />
! {{not tested}}<br />
! Missing<br />
| Doesnt support VESA 2.0. For VGA, please see point 3 of "Known Issues".<br />
! Unknown<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | S3 VIRGE/DX 86c375<br />
! {{works}}<br />
! {{failed}}<br />
! {{not tested}}<br />
! bootcd-47121<br />
| vga driver work fine, vesa failed (video driver init error), native not tested<br />
! [[User:m0z4rt|m0z4rt]]<br />
|[ftp://ftp.ufanet.ru/pub/drivers/video/S3/wnt32309.zip NT4.0 ziped]<br />
<br />
|-<br />
! style="background: #ececec;" | S3 Salvage<br />
! {{not tested}}<br />
! {{works}}<br />
! {{works}}<br />
! Missing<br />
| Works using drivers but has problem and drops into the debugger, running cont will contiune to desktop, no working 3d acccerlation as of yet.<br />
! [[User:Techsalvager|Techsalvager]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | VIA/S3G UniChrome IGP 64MB (KM400)<br />
! {{works}}<br />
! {{works}}<br />
! {{failed}}<br />
! 40825<br />
| Driver installation fails (KM400/KM266 PRO/P4M800 Chipset VGA Driver).<br />
! Unknown<br />
| [http://www.pcchips.com.tw/PCCWebSite/Downloads/ProductsDetail_Download.aspx?detailid=358&DetailName=Driver&DetailDesc=&CategoryID=1&MenuID=6&LanID=0 Windows XP / Windows 2000]<br />
<br />
|-<br />
! style="background: #ececec;" | VM QEMU Cirrus CL-54xx<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! Missing<br />
| Requires ReactOS VESA driver being present at all times, see {{bug|2286}}<br />
! Unknown<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | VM VirtualBox Video<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! Missing<br />
| Own driver starts up in 640x480x8, but supports all modes up to 1024x768x32. Necessary for Vbox OpenGL 3d host acceleration passthrough (it doesnt work in VirtualBox 3.1.0 - see add.4)<br />
! [[User:Haos|Haos]]<br />
| <br />
<br />
|-<br />
! style="background: #ececec;" | VM VMWARE Video<br />
! {{works}}<br />
! {{works}}<br />
! {{works}}<br />
! Missing<br />
| No known problems.<br />
! Unknown<br />
|<br />
|}<br />
<br />
== Known issues ==<br />
# VESA Driver accepts only VESA 2.0 compatible adapters.<br />
# Some INF files have both Windows 2000 and Windows XP sections, with separate drivers for both. When trying to install the Windows 2000 driver version ReactOS is being detected as Windows XP, thus the Windows XP driver is attempted to be installed, even though its driver file may be missing in the Windows 2000 driver directory. As ReactOS does not fail when copying nonexistent file, successful installation is reported, alas driver file is not copied to system32\driver directory. This will cause "Successful install, please restart" window to appear at every boot.<br />
# Original drivers (VGA/VESA) are hardcoded, so the native ones are not really used {{Bug|2286}}.<br />
# VirtualBox 3.1.0 Video driver is no longer providing 3d acceleration in ReactOS, due to missing Mm functionality {{Bug|4996}}. Silencing the UNIMPLEMENTED macro in both functions in question is a possible workaround.<br />
# Windows XP/Windows Server 2003 drivers should be used, as earlier ones are very likely to fail.</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Printing&diff=28877
Printing
2010-10-15T03:04:19Z
<p>CycleGeek: Mark outdated; Windows names</p>
<hr />
<div>{{outdated}}<br />
<br />
I am beginning work on implementing printing support in ReactOS. If you have any ideas or want to help with [[printer]]s, it would be very much appreciated. Please leave your name and some way of getting hold of you.<br />
<br />
There are a number of components to have code written for them in order to maintain compatibility with the existing Windows 2000/Windows XP architecture. For this reason, the implementation I am currently planning will follow that of the latter systems. Unfortunately we can use precious little from WINE.<br />
<br />
Some things we need:<br />
* Print spooler components (driver winspool.drv - stubbed but out of date in WINE/ReactOS, service spoolsv.exe - I started writing one, router spoolss.dll)<br />
* Print processor (WinPrint.dll 'integrated into localspl.dll from Windows 2000 onwards')<br />
* Local print provider (localspl.dll) There is an skeletal example of a print provider in the ddk called pp, also an example in ceps.<br />
* Port monitors (Localmon sample in DDK; integrated into localspl.dll from Windows 2000 onwards)<br />
* Language monitor (see PJLMon sample in DDK)<br />
* PrintUI.dll (possibly at some point)<br />
* compstui.dll (property sheet pages etc)<br />
* add necessary win32k, gdi functions for print drivers (EngWritePrinter, etc.)<br />
<br />
My initial plan is that winspool will directly call localspl.dll (the local spooler) as RPC still seems to be in it is infancy in ReactOS. However, I see that there is code in svn for RPC though I haven't had chance to play yet.<br />
<br />
One bonus is that the Windows 2000/Windows XP print system is very modular making testing a lot easier.<br />
<br />
Once I can use my laser printer I can write my Master's project in LaTeX on ReactOS and print it as well. Eventually I'd love to have something like [http://www.fineprint.com/ FinePrint] built into ReactOS<br />
<br />
== Current status ==<br />
* 09/02/07 - have started a PhD and it is currently taking a lot of time, so have halted work on the print subsystem<br />
*13/07/06 - I am currently focusing on the print spooler service, spoolsrv<br />
* 10/08/05 - My main focus is on writing local print provider. It behaves as expected in Windows XP Professional so far so good.<br />
* 14/09/05 - whoah a month's gone by and localspl is all stubbed out and I've got around 1/3 of a print provider<br />
<br />
== Resources ==<br />
* The DDK has some nice diagrams to illustrate what goes on and also some samples.<br />
* [http://www.fengyuan.com/ Feng Yuan's book: "Windows Graphics Programming: Win32 GDI and DirectDraw"]<br />
* [http://ceps.sourceforge.net/ CEPS (Cisco enterprise print system)]<br />
* [http://msdn.microsoft.com/en-us/library/aa506518.aspx Print Devices Reference]<br />
* [http://www.codeproject.com/useritems/wpa.asp Windows printing architecture]<br />
* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_62ia.asp Printing and print spooler]<br />
* [http://www.microsoft.com/whdc/device/print/default.mspx Printing - Architecture and Driver Support]<br />
* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/graphics/hh/graphics/splarch_ae5e7e21-9184-4597-b7a5-177998682b14.xml.asp Introduction to Print Providers]<br />
* [http://www.microsoft.com/resources/documentation/Windows/2000/server/reskit/en-us/Default.asp?url=/resources/documentation/Windows/2000/server/reskit/en-us/core/fnbe_prn_EOEW.asp More printing architecture]<br />
* [http://www.microsoft.com/windows2000/technologies/fileandprint/print/default.asp Windows 2000 Print Services]<br />
* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/graphics/hh/graphics/drvarch_b2c30d51-4fe1-4c8e-9fa2-b1a80bba3597.xml.asp Printer graphics dll]<br />
* [http://www.lprng.com/ LPRng, Berkeley based LPR print spooler]<br />
<br />
[[Category:Documentation]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=USB_Stack&diff=28876
USB Stack
2010-10-15T02:56:24Z
<p>CycleGeek: Windows names</p>
<hr />
<div>The USB stack is the component which provides the communication between USB devices and their respective drivers and applications. It consists of multiple files, each with a distinct function. The USB stack in ReactOS is currently extremely limited. This page documents the development of the new USB stack. Development work on a USB 3 stack is not planned at this time.<br />
<br />
== Overview ==<br />
The goal is to develop a USB stack which:<br />
* is USB 1.1 - 2.0 compliant<br />
* uses WDM (NT 5) API<br />
* is compatible with all USB devices and drivers (which adhere to the standard)<br />
<br />
The entire stack will be fully documented and the implementation progress detailed on this page.<br />
<br />
== Goals ==<br />
* Primary Goal: USB HID (human input devices) and storage functionality working (Alpha).<br />
* Secondary Goal: Audio and other support added.<br />
* Beyond: testing and debugging.<br />
<br />
Due to the complexity and size, no release dates will be provided as of now.<br />
<br />
== Status ==<br />
'''2010-01-08''' - [[Michael Martin]] has started re-implementation. The plan is to start with the EHCI controller and then work up the stack. Drivers will be developed against Windows 2000 and Windows XP for starting off. Progress can be found [http://cia.vc/stats/author/mjmartin here].<br />
<br />
== Outdated information ==<br />
See [http://www.reactos.org/wiki/index.php?title=USB_Stack&oldid=24303#Historical_.28outdated.29_information here].<br />
<br />
== See Also ==<br />
[[USB Stack Template]]<br />
<br />
== References ==<br />
* [http://www.usb.org/developers/docs/ USB.org specifications]<br />
* [http://xenbits.xensource.com/ext/win-pvdrivers.hg XEN PV Usb Drivers]<br />
* [http://msdn.microsoft.com/en-us/library/ff537858.aspx Roadmap for Developing USB Drivers]<br />
* Windows Driver Kit (Driver Development Kit).<br />
* various books and sites on the WDM model, to be expanded later.<br />
* [http://www.microsoft.com/whdc/archive/usb2support.mspx?pf=true USB Driver Stack for Windows XP and later]<br />
* [http://msdn.microsoft.com/en-us/library/ff539301.aspx USB Device Stack for Windows XP and later]<br />
<br />
[[Category:Documentation]]</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Techwiki:Win32k/syscalls&diff=28875
Techwiki:Win32k/syscalls
2010-10-15T02:31:10Z
<p>CycleGeek: Windows names</p>
<hr />
<div>{| border="1" cellpadding="1" cellspacing="0" style="font-size: 85%; border: gray solid 1px; border-collapse: collapse; text-align: left; width: 100%"<br />
| Function<br />
| colspan="2" | Windows 2000<br />
| colspan="2" | Windows XP<br />
| colspan="2" | Windows Server 2003<br />
| colspan="2" | Windows Vista<br />
| colspan="2" | Windows Vista x64<br />
|-<br />
|<br />
| id<br />
| #<br />
| id<br />
| #<br />
| id<br />
| #<br />
| id<br />
| #<br />
| id<br />
| #<br />
|-<br />
|| NtGdiAbortDoc || 0x1000 || 1 || 0x1000 || 1 || 0x1000 || 1 || 0x1000 || 1 || 0x1128 || ?<br />
|-<br />
|| NtGdiAbortPath || 0x1001 || 1 || 0x1001 || 1 || 0x1001 || 1 || 0x1001 || 1 || 0x1129 || ?<br />
|-<br />
|| NtGdiAddFontResourceW || 0x1002 || 6 || 0x1002 || 6 || 0x1002 || 6 || 0x1002 || 6 || 0x112b || 6<br />
|-<br />
|| NtGdiAddRemoteFontToDC || 0x1003 || 4 || 0x1003 || 4 || 0x1003 || 4 || 0x1003 || 4 || 0x112c || 4?<br />
|-<br />
|| NtGdiAddFontMemResourceEx || 0x1004 || 5 || 0x1004 || 5 || 0x1004 || 5 || 0x1004 || 5 || 0x1117 || 5<br />
|-<br />
|| NtGdiRemoveMergeFont || 0x1005 || 2 || 0x1005 || 2 || 0x1005 || 2 || 0x1005 || 2 <br />
|-<br />
|| NtGdiAddRemoteMMInstanceToDC || 0x1006 || 3 || 0x1006 || 3 || 0x1006 || 3 || 0x1006 || 3 <br />
|-<br />
|| NtGdiAlphaBlend || 0x1007 || 12 || 0x1007 || 12 || 0x1007 || 12 || 0x1007 || 12 || || 12<br />
|-<br />
|| NtGdiAngleArc || 0x1008 || 6 || 0x1008 || 6 || 0x1008 || 6 || 0x1008 || 6 <br />
|-<br />
|| NtGdiAnyLinkedFonts || 0x1009 || 0 || 0x1009 || 0 || 0x1009 || 0 || 0x1009 || 0 <br />
|-<br />
|| NtGdiFontIsLinked || 0x100A || 1 || 0x100A || 1 || 0x100A || 1 || 0x100A || 1 <br />
|-<br />
|| NtGdiArcInternal || 0x100B || 10 || 0x100B || 10 || 0x100B || 10 || 0x100B || 10 <br />
|-<br />
|| NtGdiBeginPath || 0x100C || 1 || 0x100C || 1 || 0x100C || 1 || 0x100C || 1 <br />
|-<br />
|| NtGdiBitBlt || 0x100D || 11 || 0x100D || 11 || 0x100D || 11 || 0x100D || 11 || 0x1008 || 11<br />
|-<br />
|| NtGdiCancelDC || 0x100E || 1 || 0x100E || 1 || 0x100E || 1 || 0x100E || 1 <br />
|-<br />
|| NtGdiCheckBitmapBits || 0x100F || 8 || 0x100F || 8 || 0x100F || 8 || 0x100F || 8 <br />
|-<br />
|| NtGdiCloseFigure || 0x1010 || 1 || 0x1010 || 1 || 0x1010 || 1 || 0x1010 || 1 <br />
|-<br />
|| NtGdiClearBitmapAttributes || || || 0x1011 || 2 || 0x1011 || 2 || 0x1011 || 2 <br />
|-<br />
|| NtGdiClearBrushAttributes || || || 0x1012 || 2 || 0x1012 || 2 || 0x1012 || 2 <br />
|-<br />
|| NtGdiColorCorrectPalette || 0x1011 || 6 || 0x1013 || 6 || 0x1013 || 6 || 0x1013 || 6 <br />
|-<br />
|| NtGdiCombineRgn || 0x1012 || 4 || 0x1014 || 4 || 0x1014 || 4 || 0x1014 || 4 <br />
|-<br />
|| NtGdiCombineTransform || 0x1013 || 3 || 0x1015 || 3 || 0x1015 || 3 || 0x1015 || 3 <br />
|-<br />
|| NtGdiComputeXformCoefficients || 0x1014 || 1 || 0x1016 || 1 || 0x1016 || 1 || 0x1016 || 1 <br />
|-<br />
|| NtGdiConfigureOPMProtectedOutput || || || || || || || 0x1017 || 4 <br />
|-<br />
|| NtGdiConsoleTextOut || 0x1015 || 4 || 0x1017 || 4 || 0x1017 || 4 || 0x1018 || 4 <br />
|-<br />
|| NtGdiConvertMetafileRect || 0x1016 || 2 || 0x1018 || 2 || 0x1018 || 2 || 0x1019 || 2 <br />
|-<br />
|| NtGdiCreateBitmap || 0x1017 || 5 || 0x1019 || 5 || 0x1019 || 5 || 0x101A || 5 <br />
|-<br />
|| NtGdiCreateClientObj || 0x1018 || 1 || 0x101A || 1 || 0x101A || 1 || 0x101B || 1 <br />
|-<br />
|| NtGdiCreateColorSpace || 0x1019 || 1 || 0x101B || 1 || 0x101B || 1 || 0x101C || 1 <br />
|-<br />
|| NtGdiCreateColorTransform || 0x101A || 8 || 0x101C || 8 || 0x101C || 8 || 0x101D || 8 <br />
|-<br />
|| NtGdiCreateCompatibleBitmap || 0x101B || 3 || 0x101D || 3 || 0x101D || 3 || 0x101E || 3 <br />
|-<br />
|| NtGdiCreateCompatibleDC || 0x101C || 1 || 0x101E || 1 || 0x101E || 1 || 0x101F || 1 <br />
|-<br />
|| NtGdiCreateDIBBrush || 0x101D || 6 || 0x101F || 6 || 0x101F || 6 || 0x1020 || 6 <br />
|-<br />
|| NtGdiCreateDIBitmapInternal || 0x101E || 11 || 0x1020 || 11 || 0x1020 || 11 || 0x1021 || 11 <br />
|-<br />
|| NtGdiCreateDIBSection || 0x101F || 9 || 0x1021 || 9 || 0x1021 || 9 || 0x1022 || 9 <br />
|-<br />
|| NtGdiCreateEllipticRgn || 0x1020 || 4 || 0x1022 || 4 || 0x1022 || 4 || 0x1023 || 4 <br />
|-<br />
|| NtGdiCreateHalftonePalette || 0x1021 || 1 || 0x1023 || 1 || 0x1023 || 1 || 0x1024 || 1 <br />
|-<br />
|| NtGdiCreateHatchBrushInternal || 0x1022 || 3 || 0x1024 || 3 || 0x1024 || 3 || 0x1025 || 3 <br />
|-<br />
|| NtGdiCreateMetafileDC || 0x1023 || 1 || 0x1025 || 1 || 0x1025 || 1 || 0x1026 || 1 <br />
|-<br />
|| NtGdiCreateOPMProtectedOutputs || || || || || || || 0x1027 || 5 <br />
|-<br />
|| NtGdiCreatePaletteInternal || 0x1024 || 2 || 0x1026 || 2 || 0x1026 || 2 || 0x1028 || 2 <br />
|-<br />
|| NtGdiCreatePatternBrushInternal || 0x1025 || 3 || 0x1027 || 3 || 0x1027 || 3 || 0x1029 || 3 <br />
|-<br />
|| NtGdiCreatePen || 0x1026 || 4 || 0x1028 || 4 || 0x1028 || 4 || 0x102A || 4 <br />
|-<br />
|| NtGdiCreateRectRgn || 0x1027 || 4 || 0x1029 || 4 || 0x1029 || 4 || 0x102B || 4 <br />
|-<br />
|| NtGdiCreateRoundRectRgn || 0X1028 || 6 || 0x102A || 6 || 0x102A || 6 || 0x102C || 6 <br />
|-<br />
|| NtGdiCreateServerMetaFile || 0X1029 || 6 || 0x102B || 6 || 0x102B || 6 || 0x102D || 6 <br />
|-<br />
|| NtGdiCreateSolidBrush || 0x102A || 2 || 0x102C || 2 || 0x102C || 2 || 0x102E || 2 <br />
|-<br />
|| [[Techwiki:NtGdiD3dContextCreate|NtGdiD3dContextCreate]] || 0x102B || 4 || 0x102D || 4 || 0x102D || 4 || 0x102F || 4 <br />
|-<br />
|| NtGdiD3dContextDestroy || 0x102C || 1 || 0x102E || 1 || 0x102E || 1 || 0x1030 || 1 <br />
|-<br />
|| NtGdiD3dContextDestroyAll || 0x102D || 1 || 0x102F || 1 || 0x102F || 1 || 0x1031 || 1 <br />
|-<br />
|| NtGdiD3dValidateTextureStageState || 0x102E || 1 || 0x1030 || 1 || 0x1030 || 1 || 0x1032 || 1 <br />
|-<br />
|| NtGdiD3dDrawPrimitives2 || 0X102F || 7 || 0x1031 || 7 || 0x1031 || 7 || 0x1033 || 7 <br />
|-<br />
|| NtGdiDdGetDriverState || 0x1030 || 1 || 0x1032 || 1 || 0x1032 || 1 || 0x1034 || 1 <br />
|-<br />
|| NtGdiDdAddAttachedSurface || 0x1031 || 3 || 0x1033 || 3 || 0x1033 || 3 || 0x1035 || 3 <br />
|-<br />
|| NtGdiDdAlphaBlt || 0x1032 || 3 || 0x1034 || 3 || 0x1034 || 3 || 0x1036 || 3 <br />
|-<br />
|| NtGdiDdAttachSurface || 0x1033 || 2 || 0x1035 || 2 || 0x1035 || 2 || 0x1037 || 2 <br />
|-<br />
|| NtGdiDdBeginMoCompFrame || 0x1034 || 2 || 0x1036 || 2 || 0x1036 || 2 || 0x1038 || 2 <br />
|-<br />
|| NtGdiDdBlt || 0x1035 || 3 || 0x1037 || 3 || 0x1037 || 3 || 0x1039 || 3 <br />
|-<br />
|| NtGdiDdCanCreateSurface || 0x1036 || 2 || 0x1038 || 2 || 0x1038 || 2 || 0x103A || 2 <br />
|-<br />
|| [[Techwiki:NtGdiDdCanCreateD3DBuffer|NtGdiDdCanCreateD3DBuffer]] || 0x1037 || 2 || 0x1039 || 2 || 0x1039 || 2 || 0x103B || 2 <br />
|-<br />
|| NtGdiDdColorControl || 0x1038 || 2 || 0x103A || 2 || 0x103A || 2 || 0x103C || 2 <br />
|-<br />
|| NtGdiDdCreateDirectDrawObject || 0x1039 || 1 || 0x103B || 1 || 0x103B || 1 || 0x103D || 1 <br />
|-<br />
|| NtGdiDdCreateSurface || 0X103A || 8 || 0x103C || 8 || 0x103C || 8 || 0x103E || 8 <br />
|-<br />
|| NtGdiDdCreateD3DBuffer || 0X103B || 8 || 0x103D || 8 || 0x103D || 8 || 0x103F || 8 <br />
|-<br />
|| NtGdiDdCreateMoComp || 0X103C || 2 || 0x103E || 2 || 0x103E || 2 || 0x1040 || 2 <br />
|-<br />
|| NtGdiDdCreateSurfaceObject || 0X103D || 6 || 0x103F || 6 || 0x103F || 6 || 0x1041 || 6 <br />
|-<br />
|| NtGdiDdDeleteDirectDrawObject || 0x103E || 1 || 0x1040 || 1 || 0x1040 || 1 || 0x1042 || 1 <br />
|-<br />
|| NtGdiDdDeleteSurfaceObject || 0x103F || 1 || 0x1041 || 1 || 0x1041 || 1 || 0x1043 || 1 <br />
|-<br />
|| NtGdiDdDestroyMoComp || 0x1040 || 2 || 0x1042 || 2 || 0x1042 || 2 || 0x1044 || 2 <br />
|-<br />
|| NtGdiDdDestroySurface || 0x1041 || 2 || 0x1043 || 2 || 0x1043 || 2 || 0x1045 || 2 <br />
|-<br />
|| NtGdiDdDestroyD3DBuffer || 0x1042 || 1 || 0x1044 || 1 || 0x1044 || 1 || 0x1046 || 1 <br />
|-<br />
|| NtGdiDdEndMoCompFrame || 0x1043 || 2 || 0x1045 || 2 || 0x1045 || 2 || 0x1047 || 2 <br />
|-<br />
|| NtGdiDdFlip || 0x1044 || 5 || 0x1046 || 5 || 0x1046 || 5 || 0x1048 || 5 <br />
|-<br />
|| NtGdiDdFlipToGDISurface || 0x1045 || 2 || 0x1047 || 2 || 0x1047 || 2 || 0x1049 || 2 <br />
|-<br />
|| NtGdiDdGetAvailDriverMemory || 0x1046 || 2 || 0x1048 || 2 || 0x1048 || 2 || 0x104A || 2 <br />
|-<br />
|| NtGdiDdGetBltStatus || 0x1047 || 2 || 0x1049 || 2 || 0x1049 || 2 || 0x104B || 2 <br />
|-<br />
|| NtGdiDdGetDC || 0x1048 || 2 || 0x104A || 2 || 0x104A || 2 || 0x104C || 2 <br />
|-<br />
|| NtGdiDdGetDriverInfo || 0x1049 || 2 || 0x104B || 2 || 0x104B || 2 || 0x104D || 2 <br />
|-<br />
|| NtGdiDdGetDxHandle || 0x104A || 3 || 0x104C || 3 || 0x104C || 3 || 0x104E || 3 <br />
|-<br />
|| NtGdiDdGetFlipStatus || 0x104B || 2 || 0x104D || 2 || 0x104D || 2 || 0x104F || 2 <br />
|-<br />
|| NtGdiDdGetInternalMoCompInfo || 0x104C || 2 || 0x104E || 2 || 0x104E || 2 || 0x1050 || 2 <br />
|-<br />
|| NtGdiDdGetMoCompBuffInfo || 0x104D || 2 || 0x104F || 2 || 0x104F || 2 || 0x1051 || 2 <br />
|-<br />
|| NtGdiDdGetMoCompGuids || 0x104E || 2 || 0x1050 || 2 || 0x1050 || 2 || 0x1052 || 2 <br />
|-<br />
|| NtGdiDdGetMoCompFormats || 0x104F || 2 || 0x1051 || 2 || 0x1051 || 2 || 0x1053 || 2 <br />
|-<br />
|| NtGdiDdGetScanLine || 0x1050 || 2 || 0x1052 || 2 || 0x1052 || 2 || 0x1054 || 2 <br />
|-<br />
|| NtGdiDdLock || 0x1051 || 3 || 0x1053 || 3 || 0x1053 || 3 || 0x1055 || 3 <br />
|-<br />
|| NtGdiDdLockD3D || 0x1052 || 2 || 0x1054 || 2 || 0x1054 || 2 || 0x1056 || 2 <br />
|-<br />
|| NtGdiDdQueryDirectDrawObject || 0X1053 || 11 || 0x1055 || 11 || 0x1055 || 11 || 0x1057 || 11 <br />
|-<br />
|| NtGdiDdQueryMoCompStatus || 0x1054 || 2 || 0x1056 || 2 || 0x1056 || 2 || 0x1058 || 2 <br />
|-<br />
|| NtGdiDdReenableDirectDrawObject || 0x1055 || 2 || 0x1057 || 2 || 0x1057 || 2 || 0x1059 || 2 <br />
|-<br />
|| NtGdiDdReleaseDC || 0x1056 || 1 || 0x1058 || 1 || 0x1058 || 1 || 0x105A || 1 <br />
|-<br />
|| NtGdiDdRenderMoComp || 0x1057 || 2 || 0x1059 || 2 || 0x1059 || 2 || 0x105B || 2 <br />
|-<br />
|| NtGdiDdResetVisrgn || 0x1058 || 2 || 0x105A || 2 || 0x105A || 2 || 0x105C || 2 <br />
|-<br />
|| NtGdiDdSetColorKey || 0x1059 || 2 || 0x105B || 2 || 0x105B || 2 || 0x105D || 2 <br />
|-<br />
|| NtGdiDdSetExclusiveMode || 0x105A || 2 || 0x105C || 2 || 0x105C || 2 || 0x105E || 2 <br />
|-<br />
|| NtGdiDdSetGammaRamp || 0x105B || 3 || 0x105D || 3 || 0x105D || 3 || 0x105F || 3 <br />
|-<br />
|| NtGdiDdCreateSurfaceEx || 0x105C || 3 || 0x105E || 3 || 0x105E || 3 || 0x1060 || 3 <br />
|-<br />
|| NtGdiDdSetOverlayPosition || 0x105D || 3 || 0x105F || 3 || 0x105F || 3 || 0x1061 || 3 <br />
|-<br />
|| NtGdiDdUnattachSurface || 0x105E || 2 || 0x1060 || 2 || 0x1060 || 2 || 0x1062 || 2 <br />
|-<br />
|| NtGdiDdUnlock || 0x105F || 2 || 0x1061 || 2 || 0x1061 || 2 || 0x1063 || 2 <br />
|-<br />
|| NtGdiDdUnlockD3D || 0x1060 || 2 || 0x1062 || 2 || 0x1062 || 2 || 0x1064 || 2 <br />
|-<br />
|| NtGdiDdUpdateOverlay || 0x1061 || 3 || 0x1063 || 3 || 0x1063 || 3 || 0x1065 || 3 <br />
|-<br />
|| NtGdiDdWaitForVerticalBlank || 0x1062 || 2 || 0x1064 || 2 || 0x1064 || 2 || 0x1066 || 2 <br />
|-<br />
|| NtGdiDvpCanCreateVideoPort || 0x1063 || 2 || 0x1065 || 2 || 0x1065 || 2 || 0x1067 || 2 <br />
|-<br />
|| NtGdiDvpColorControl || 0x1064 || 2 || 0x1066 || 2 || 0x1066 || 2 || 0x1068 || 2 <br />
|-<br />
|| NtGdiDvpCreateVideoPort || 0x1065 || 2 || 0x1067 || 2 || 0x1067 || 2 || 0x1069 || 2 <br />
|-<br />
|| NtGdiDvpDestroyVideoPort || 0x1066 || 2 || 0x1068 || 2 || 0x1068 || 2 || 0x106A || 2 <br />
|-<br />
|| NtGdiDvpFlipVideoPort || 0x1067 || 4 || 0x1069 || 4 || 0x1069 || 4 || 0x106B || 4 <br />
|-<br />
|| NtGdiDvpGetVideoPortBandwidth || 0x1068 || 2 || 0x106A || 2 || 0x106A || 2 || 0x106C || 2 <br />
|-<br />
|| NtGdiDvpGetVideoPortField || 0x1069 || 2 || 0x106B || 2 || 0x106B || 2 || 0x106D || 2 <br />
|-<br />
|| NtGdiDvpGetVideoPortFlipStatus || 0x106A || 2 || 0x106C || 2 || 0x106C || 2 || 0x106E || 2 <br />
|-<br />
|| NtGdiDvpGetVideoPortInputFormats || 0x106B || 2 || 0x106D || 2 || 0x106D || 2 || 0x106F || 2 <br />
|-<br />
|| NtGdiDvpGetVideoPortLine || 0x106C || 2 || 0x106E || 2 || 0x106E || 2 || 0x1070 || 2 <br />
|-<br />
|| NtGdiDvpGetVideoPortOutputFormats || 0x106D || 2 || 0x106F || 2 || 0x106F || 2 || 0x1071 || 2 <br />
|-<br />
|| NtGdiDvpGetVideoPortConnectInfo || 0x106E || 2 || 0x1070 || 2 || 0x1070 || 2 || 0x1072 || 2 <br />
|-<br />
|| NtGdiDvpGetVideoSignalStatus || 0x106F || 2 || 0x1071 || 2 || 0x1071 || 2 || 0x1073 || 2 <br />
|-<br />
|| NtGdiDvpUpdateVideoPort || 0x1070 || 4 || 0x1072 || 4 || 0x1072 || 4 || 0x1074 || 4 <br />
|-<br />
|| NtGdiDvpWaitForVideoPortSync || 0x1071 || 2 || 0x1073 || 2 || 0x1073 || 2 || 0x1075 || 2 <br />
|-<br />
|| NtGdiDvpAcquireNotification || || || 0x1074 || 3 || 0x1074 || 3 || 0x1076 || 3 <br />
|-<br />
|| NtGdiDvpReleaseNotification || || || 0x1075 || 2 || 0x1075 || 2 || 0x1077 || 2 <br />
|-<br />
|| [[Techwiki:NtGdiDxgGenericThunk|NtGdiDxgGenericThunk]] || || || 0x1076 || 6 || 0x1076 || 6 || 0x1078 || 6 <br />
|-<br />
|| NtGdiDeleteClientObj || 0x1072 || 1 || 0x1077 || 1 || 0x1077 || 1 || 0x1079 || 1 <br />
|-<br />
|| NtGdiDeleteColorSpace || 0x1073 || 1 || 0x1078 || 1 || 0x1078 || 1 || 0x107A || 1 <br />
|-<br />
|| NtGdiDeleteColorTransform || 0x1074 || 2 || 0x1079 || 2 || 0x1079 || 2 || 0x107B || 2 <br />
|-<br />
|| NtGdiDeleteObjectApp || 0x1075 || 1 || 0x107A || 1 || 0x107A || 1 || 0x107C || 1 <br />
|-<br />
|| NtGdiDescribePixelFormat || 0x1076 || 4 || 0x107B || 4 || 0x107B || 4 || 0x107D || 4 <br />
|-<br />
|| NtGdiDestroyOPMProtectedOutput || || || || || || || 0x107E || 1 <br />
|-<br />
|| NtGdiGetPerBandInfo || 0x1077 || 2 || 0x107C || 2 || 0x107C || 2 || 0x107F || 2 <br />
|-<br />
|| NtGdiDoBanding || 0x1078 || 4 || 0x107D || 4 || 0x107D || 4 || 0x1080 || 4 <br />
|-<br />
|| NtGdiDoPalette || 0X1079 || 6 || 0x107E || 6 || 0x107E || 6 || 0x1081 || 6 <br />
|-<br />
|| NtGdiDrawEscape || 0x107A || 4 || 0x107F || 4 || 0x107F || 4 || 0x1082 || 4 <br />
|-<br />
|| NtGdiEllipse || 0x107B || 5 || 0x1080 || 5 || 0x1080 || 5 || 0x1083 || 5 <br />
|-<br />
|| NtGdiEnableEudc || 0x107C || 1 || 0x1081 || 1 || 0x1081 || 1 || 0x1084 || 1 <br />
|-<br />
|| NtGdiEndDoc || 0x107D || 1 || 0x1082 || 1 || 0x1082 || 1 || 0x1085 || 1 <br />
|-<br />
|| NtGdiEndPage || 0x107E || 1 || 0x1083 || 1 || 0x1083 || 1 || 0x1086 || 1 <br />
|-<br />
|| NtGdiEndPath || 0x107F || 1 || 0x1084 || 1 || 0x1084 || 1 || 0x1087 || 1 <br />
|-<br />
|| NtGdiEnumFontChunk || 0x1080 || 5 || 0x1085 || 5 || 0x1085 || 5 || 0x1088 || 5 <br />
|-<br />
|| NtGdiEnumFontClose || 0x1081 || 1 || 0x1086 || 1 || 0x1086 || 1 || 0x1089 || 1 <br />
|-<br />
|| NtGdiEnumFontOpen || 0x1082 || 7 || 0x1087 || 7 || 0x1087 || 7 || 0x108A || 7 <br />
|-<br />
|| NtGdiEnumObjects || 0x1083 || 4 || 0x1088 || 4 || 0x1088 || 4 || 0x108B || 4 <br />
|-<br />
|| NtGdiEqualRgn || 0x1084 || 2 || 0x1089 || 2 || 0x1089 || 2 || 0x108C || 2 <br />
|-<br />
|| NtGdiEudcEnumFaceNameLinkW || 0x1085 || 4 || || || || || || <br />
|-<br />
|| NtGdiEudcLoadUnloadLink || 0X1086 || 7 || 0x108A || 7 || 0x108A || 7 || 0x108D || 7 <br />
|-<br />
|| NtGdiExcludeClipRect || 0x1087 || 5 || 0x108B || 5 || 0x108B || 5 || 0x108E || 5 <br />
|-<br />
|| NtGdiExtCreatePen || 0X1088 || 11 || 0x108C || 11 || 0x108C || 11 || 0x108F || 11 <br />
|-<br />
|| NtGdiExtCreateRegion || 0x1089 || 3 || 0x108D || 3 || 0x108D || 3 || 0x1090 || 3 <br />
|-<br />
|| NtGdiExtEscape || 0X108A || 8 || 0x108E || 8 || 0x108E || 8 || 0x1091 || 8 <br />
|-<br />
|| NtGdiExtFloodFill || 0x108B || 5 || 0x108F || 5 || 0x108F || 5 || 0x1092 || 5 <br />
|-<br />
|| NtGdiExtGetObjectW || 0x108C || 3 || 0x1090 || 3 || 0x1090 || 3 || 0x1093 || 3 <br />
|-<br />
|| NtGdiExtSelectClipRgn || 0x108D || 3 || 0x1091 || 3 || 0x1091 || 3 || 0x1094 || 3 <br />
|-<br />
|| NtGdiExtTextOutW || 0x108E || 9 || 0x1092 || 9 || 0x1092 || 9 || 0x1095 || 9 <br />
|-<br />
|| NtGdiFillPath || 0x108F || 1 || 0x1093 || 1 || 0x1093 || 1 || 0x1096 || 1 <br />
|-<br />
|| NtGdiFillRgn || 0x1090 || 3 || 0x1094 || 3 || 0x1094 || 3 || 0x1097 || 3 <br />
|-<br />
|| NtGdiFlattenPath || 0x1091 || 1 || 0x1095 || 1 || 0x1095 || 1 || 0x1098 || 1 <br />
|-<br />
|| NtGdiFlushUserBatch || 0x1092 || 0 || 0x1096 || 0 || || || || <br />
|-<br />
|| NtGdiFlush || 0x1093 || 0 || 0x1097 || 0 || 0x1096 || 0 || 0x1099 || 0 <br />
|-<br />
|| NtGdiForceUFIMapping || 0x1094 || 2 || 0x1098 || 2 || 0x1097 || 2 || 0x109A || 2 <br />
|-<br />
|| NtGdiFrameRgn || 0x1095 || 5 || 0x1099 || 5 || 0x1098 || 5 || 0x109B || 5 <br />
|-<br />
|| NtGdiFullscreenControl || 0x1096 || 5 || 0x109A || 5 || 0x1099 || 5 || 0x109C || 5 <br />
|-<br />
|| NtGdiGetAndSetDCDword || 0x1097 || 4 || 0x109B || 4 || 0x109A || 4 || 0x109D || 4 <br />
|-<br />
|| NtGdiGetAppClipBox || 0x1098 || 2 || 0x109C || 2 || 0x109B || 2 || 0x109E || 2 <br />
|-<br />
|| NtGdiGetBitmapBits || 0x1099 || 3 || 0x109D || 3 || 0x109C || 3 || 0x109F || 3 <br />
|-<br />
|| NtGdiGetBitmapDimension || 0x109A || 2 || 0x109E || 2 || 0x109D || 2 || 0x10A0 || 2 <br />
|-<br />
|| NtGdiGetBoundsRect || 0x109B || 3 || 0x109F || 3 || 0x109E || 3 || 0x10A1 || 3 <br />
|-<br />
|| NtGdiGetCertificate || || || || || || || 0x10A2 || 4 <br />
|-<br />
|| NtGdiGetCertificateSize || || || || || || || 0x10A3 || 3 <br />
|-<br />
|| NtGdiGetCharABCWidthsW || 0X109C || 6 || 0x10A0 || 6 || 0x109F || 6 || 0x10A4 || 6 <br />
|-<br />
|| NtGdiGetCharacterPlacementW || 0X109D || 6 || 0x10A1 || 6 || 0x10A0 || 6 || 0x10A5 || 6 <br />
|-<br />
|| NtGdiGetCharSet || 0x109E || 1 || 0x10A2 || 1 || 0x10A1 || 1 || 0x10A6 || 1 || 0x1009 || ?<br />
|-<br />
|| NtGdiGetCharWidthW || 0x109F || 6 || 0x10A3 || 6 || 0x10A2 || 6 || 0x10A7 || 6 <br />
|-<br />
|| NtGdiGetCharWidthInfo || 0x10A0 || 2 || 0x10A4 || 2 || 0x10A3 || 2 || 0x10A8 || 2 <br />
|-<br />
|| NtGdiGetColorAdjustment || 0x10A1 || 2 || 0x10A5 || 2 || 0x10A4 || 2 || 0x10A9 || 2 <br />
|-<br />
|| NtGdiGetColorSpaceforBitmap || 0x10A2 || 1 || 0x10A6 || 1 || 0x10A5 || 1 || 0x10AA || 1 <br />
|-<br />
|| NtGdiGetCOPPCompatibleOPMInformation || || || || || || || 0x10AB || 3 <br />
|-<br />
|| NtGdiGetDCDword || 0x10A3 || 3 || 0x10A7 || 3 || 0x10A6 || 3 || 0x10AC || 3 <br />
|-<br />
|| NtGdiGetDCforBitmap || 0x10A4 || 1 || 0x10A8 || 1 || 0x10A7 || 1 || 0x10AD || 1 <br />
|-<br />
|| NtGdiGetDCObject || 0x10A5 || 2 || 0x10A9 || 2 || 0x10A8 || 2 || 0x10AE || 2 <br />
|-<br />
|| NtGdiGetDCPoint || 0x10A6 || 3 || 0x10AA || 3 || 0x10A9 || 3 || 0x10AF || 3 <br />
|-<br />
|| NtGdiGetDeviceCaps || 0x10A7 || 2 || 0x10AB || 2 || 0x10AA || 2 || 0x10B0 || 2 <br />
|-<br />
|| NtGdiGetDeviceGammaRamp || 0x10A8 || 2 || 0x10AC || 2 || 0x10AB || 2 || 0x10B1 || 2 <br />
|-<br />
|| NtGdiGetDeviceCapsAll || 0x10A9 || 2 || 0x10AD || 2 || 0x10AC || 2 || 0x10B2 || 2 <br />
|-<br />
|| NtGdiGetDIBitsInternal || 0x10AA || 9 || 0x10AE || 9 || 0x10AD || 9 || 0x10B3 || 9 <br />
|-<br />
|| NtGdiGetETM || 0x10AB || 2 || 0x10AF || 2 || 0x10AE || 2 || 0x10B4 || 2 <br />
|-<br />
|| NtGdiGetEudcTimeStampEx || 0x10AC || 3 || 0x10B0 || 3 || 0x10AF || 3 || 0x10B5 || 3 <br />
|-<br />
|| NtGdiGetFontData || 0x10AD || 5 || 0x10B1 || 5 || 0x10B0 || 5 || 0x10B6 || 5 <br />
|-<br />
|| [[Techwiki:win32k/NtGdiGetFontResourceInfoInternalW |NtGdiGetFontResourceInfoInternalW]] || 0X10AE || 7 || 0x10B2 || 7 || 0x10B1 || 7 || 0x10B7 || 7 <br />
|-<br />
|| NtGdiGetGlyphIndicesW || 0x10AF || 5 || 0x10B3 || 5 || 0x10B2 || 5 || 0x10B8 || 5 <br />
|-<br />
|| NtGdiGetGlyphIndicesWInternal || 0x10B0 || 6 || 0x10B4 || 6 || 0x10B3 || 6 || 0x10B9 || 6 <br />
|-<br />
|| NtGdiGetGlyphOutline || 0X10B1 || 8 || 0x10B5 || 8 || 0x10B4 || 8 || 0x10BA || 8 <br />
|-<br />
|| NtGdiGetOPMInformation || || || || || || || 0x10BB || 3 <br />
|-<br />
|| NtGdiGetKerningPairs || 0x10B2 || 3 || 0x10B6 || 3 || 0x10B5 || 3 || 0x10BC || 3 <br />
|-<br />
|| NtGdiGetLinkedUFIs || 0x10B3 || 3 || 0x10B7 || 3 || 0x10B6 || 3 || 0x10BD || 3 <br />
|-<br />
|| NtGdiGetMiterLimit || 0x10B4 || 2 || 0x10B8 || 2 || 0x10B7 || 2 || 0x10BE || 2 <br />
|-<br />
|| NtGdiGetMonitorID || 0x10B5 || 3 || 0x10B9 || 3 || 0x10B8 || 3 || 0x10BF || 3 <br />
|-<br />
|| NtGdiGetNearestColor || 0x10B6 || 2 || 0x10BA || 2 || 0x10B9 || 2 || 0x10C0 || 2 <br />
|-<br />
|| NtGdiGetNearestPaletteIndex || 0x10B7 || 2 || 0x10BB || 2 || 0x10BA || 2 || 0x10C1 || 2 <br />
|-<br />
|| NtGdiGetObjectBitmapHandle || 0x10B8 || 2 || 0x10BC || 2 || 0x10BB || 2 || 0x10C2 || 2 <br />
|-<br />
|| NtGdiGetOPMRandomNumber || || || || || || || 0x10C3 || 2 <br />
|-<br />
|| NtGdiGetOutlineTextMetricsInternalW || 0x10B9 || 4 || 0x10BD || 4 || 0x10BC || 4 || 0x10C4 || 4 <br />
|-<br />
|| NtGdiGetPath || 0x10BA || 4 || 0x10BE || 4 || 0x10BD || 4 || 0x10C5 || 4 <br />
|-<br />
|| NtGdiGetPixel || 0x10BB || 3 || 0x10BF || 3 || 0x10BE || 3 || 0x10C6 || 3 <br />
|-<br />
|| NtGdiGetRandomRgn || 0x10BC || 3 || 0x10C0 || 3 || 0x10BF || 3 || 0x10C7 || 3 <br />
|-<br />
|| NtGdiGetRasterizerCaps || 0x10BD || 2 || 0x10C1 || 2 || 0x10C0 || 2 || 0x10C8 || 2 <br />
|-<br />
|| NtGdiGetRealizationInfo || 0x10BE || 2 || 0x10C2 || 3 || 0x10C1 || 3 || 0x10C9 || 3 <br />
|-<br />
|| NtGdiGetRegionData || 0x10BF || 3 || 0x10C3 || 3 || 0x10C2 || 3 || 0x10CA || 3 <br />
|-<br />
|| NtGdiGetRgnBox || 0x10C0 || 2 || 0x10C4 || 2 || 0x10C3 || 2 || 0x10CB || 2 <br />
|-<br />
|| NtGdiGetServerMetaFileBits || 0x10C1 || 7 || 0x10C5 || 7 || 0x10C4 || 7 || 0x10CC || 7 <br />
|-<br />
|| NtGdiGetSpoolMessage || 0x10C2 || 4 || 0x10C6 || 4 || 0x10C5 || 4 || 0x10CD || 4 <br />
|-<br />
|| NtGdiGetStats || 0x10C3 || 5 || 0x10C7 || 5 || 0x10C6 || 5 || 0x10CE || 5 <br />
|-<br />
|| NtGdiGetStockObject || 0x10C4 || 1 || 0x10C8 || 1 || 0x10C7 || 1 || 0x10CF || 1 <br />
|-<br />
|| NtGdiGetStringBitmapW || 0x10C5 || 5 || 0x10C9 || 5 || 0x10C8 || 5 || 0x10D0 || 5 <br />
|-<br />
|| NtGdiGetSuggestedOPMProtectedOutputArraySize || || || || || || || 0x10D1 || 2 <br />
|-<br />
|| NtGdiGetSystemPaletteUse || 0x10C6 || 1 || 0x10CA || 1 || 0x10C9 || 1 || 0x10D2 || 1 <br />
|-<br />
|| NtGdiGetTextCharsetInfo || 0x10C7 || 3 || 0x10CB || 3 || 0x10CA || 3 || 0x10D3 || 3 <br />
|-<br />
|| NtGdiGetTextExtent || 0x10C8 || 5 || 0x10CC || 5 || 0x10CB || 5 || 0x10D4 || 5 <br />
|-<br />
|| NtGdiGetTextExtentExW || 0x10C9 || 8 || 0x10CD || 8 || 0x10CC || 8 || 0x10D5 || 8 <br />
|-<br />
|| NtGdiGetTextFaceW || 0x10CA || 4 || 0x10CE || 4 || 0x10CD || 4 || 0x10D6 || 4 <br />
|-<br />
|| NtGdiGetTextMetricsW || 0x10CB || 3 || 0x10CF || 3 || 0x10CE || 3 || 0x10D7 || 3 <br />
|-<br />
|| NtGdiGetTransform || 0x10CC || 3 || 0x10D0 || 3 || 0x10CF || 3 || 0x10D8 || 3 <br />
|-<br />
|| NtGdiGetUFI || 0X10CD || 6 || 0x10D1 || 6 || 0x10D0 || 6 || 0x10D9 || 6 <br />
|-<br />
|| NtGdiGetEmbUFI || || || 0x10D2 || 7 || 0x10D1 || 7 || 0x10DA || 7 <br />
|-<br />
|| NtGdiGetUFIPathname || 0x10CE || 10 || 0x10D3 || 10 || 0x10D2 || 10 || 0x10DB || 10 <br />
|-<br />
|| NtGdiGetEmbedFonts || || || 0x10D4 || 0 || 0x10D3 || 0 || 0x10DC || 0 <br />
|-<br />
|| NtGdiChangeGhostFont || || || 0x10D5 || 2 || 0x10D4 || 2 || 0x10DD || 2 <br />
|-<br />
|| NtGdiAddEmbFontToDC || || || 0x10D6 || 2 || 0x10D5 || 2 || 0x10DE || 2 <br />
|-<br />
|| NtGdiGetFontUnicodeRanges || 0x10CF || 2 || 0x10D7 || 2 || 0x10D6 || 2 || 0x10DF || 2 <br />
|-<br />
|| NtGdiGetWidthTable || 0x10D0 || 7 || 0x10D8 || 7 || 0x10D7 || 7 || 0x10E0 || 7 <br />
|-<br />
|| NtGdiGradientFill || 0x10D1 || 6 || 0x10D9 || 6 || 0x10D8 || 6 || 0x10E1 || 6 <br />
|-<br />
|| NtGdiHfontCreate || 0x10D2 || 5 || 0x10DA || 5 || 0x10D9 || 5 || 0x10E2 || 5 <br />
|-<br />
|| NtGdiIcmBrushInfo || 0x10D3 || 8 || 0x10DB || 8 || 0x10DA || 8 || 0x10E3 || 8 <br />
|-<br />
|| NtGdiInit || 0x10D4 || 0 || 0x10DC || 0 || 0x10DB || 0 || 0x10E4 || 0 <br />
|-<br />
|| NtGdiInitSpool || 0x10D5 || 0 || 0x10DD || 0 || 0x10DC || 0 || 0x10E5 || 0 <br />
|-<br />
|| NtGdiIntersectClipRect || 0x10D6 || 5 || 0x10DE || 5 || 0x10DD || 5 || 0x10E6 || 5 <br />
|-<br />
|| NtGdiInvertRgn || 0x10D7 || 2 || 0x10DF || 2 || 0x10DE || 2 || 0x10E7 || 2 <br />
|-<br />
|| NtGdiLineTo || 0x10D8 || 3 || 0x10E0 || 3 || 0x10DF || 3 || 0x10E8 || 3 <br />
|-<br />
|| NtGdiMakeFontDir || 0x10D9 || 5 || 0x10E1 || 5 || 0x10E0 || 5 || 0x10E9 || 5 <br />
|-<br />
|| NtGdiMakeInfoDC || 0x10DA || 2 || 0x10E2 || 2 || 0x10E1 || 2 || 0x10EA || 2 <br />
|-<br />
|| NtGdiMaskBlt || 0x10DB || 13 || 0x10E3 || 13 || 0x10E2 || 13 || 0x10EB || 13 <br />
|-<br />
|| NtGdiModifyWorldTransform || 0x10DC || 3 || 0x10E4 || 3 || 0x10E3 || 3 || 0x10EC || 3 <br />
|-<br />
|| NtGdiMonoBitmap || 0x10DD || 1 || 0x10E5 || 1 || 0x10E4 || 1 || 0x10ED || 1 <br />
|-<br />
|| NtGdiMoveTo || 0x10DE || 4 || 0x10E6 || 4 || 0x10E5 || 4 || 0x10EE || 4 <br />
|-<br />
|| NtGdiOffsetClipRgn || 0x10DF || 3 || 0x10E7 || 3 || 0x10E6 || 3 || 0x10EF || 3 <br />
|-<br />
|| NtGdiOffsetRgn || 0x10E0 || 3 || 0x10E8 || 3 || 0x10E7 || 3 || 0x10F0 || 3 <br />
|-<br />
|| NtGdiOpenDCW || 0x10E1 || 7 || 0x10E9 || 7 || 0x10E8 || 7 || 0x10F1 || 8 <br />
|-<br />
|| NtGdiPatBlt || 0x10E2 || 6 || 0x10EA || 6 || 0x10E9 || 6 || 0x10F2 || 6 <br />
|-<br />
|| NtGdiPolyPatBlt || 0x10E3 || 5 || 0x10EB || 5 || 0x10EA || 5 || 0x10F3 || 5 <br />
|-<br />
|| NtGdiPathToRegion || 0x10E4 || 1 || 0x10EC || 1 || 0x10EB || 1 || 0x10F4 || 1 <br />
|-<br />
|| NtGdiPlgBlt || 0x10E5 || 11 || 0x10ED || 11 || 0x10EC || 11 || 0x10F5 || 11 <br />
|-<br />
|| NtGdiPolyDraw || 0x10E6 || 4 || 0x10EE || 4 || 0x10ED || 4 || 0x10F6 || 4 <br />
|-<br />
|| NtGdiPolyPolyDraw || 0x10E7 || 5 || 0x10EF || 5 || 0x10EE || 5 || 0x10F7 || 5 <br />
|-<br />
|| NtGdiPolyTextOutW || 0X10E8 || 4 || 0x10F0 || 4 || 0x10EF || 4 || 0x10F8 || 4 <br />
|-<br />
|| NtGdiPtInRegion || 0X10E9 || 3 || 0x10F1 || 3 || 0x10F0 || 3 || 0x10F9 || 3 <br />
|-<br />
|| NtGdiPtVisible || 0X10EA || 3 || 0x10F2 || 3 || 0x10F1 || 3 || 0x10FA || 3 <br />
|-<br />
|| NtGdiQueryFonts || 0X10EB || 3 || 0x10F3 || 3 || 0x10F2 || 3 || 0x10FB || 3 <br />
|-<br />
|| NtGdiQueryFontAssocInfo || 0X10EC || 1 || 0x10F4 || 1 || 0x10F3 || 1 || 0x10FC || 1 <br />
|-<br />
|| NtGdiRectangle || 0X10ED || 5 || 0x10F5 || 5 || 0x10F4 || 5 || 0x10FD || 5 <br />
|-<br />
|| NtGdiRectInRegion || 0X10EE || 2 || 0x10F6 || 2 || 0x10F5 || 2 || 0x10FE || 2 <br />
|-<br />
|| NtGdiRectVisible || 0x10EF || 2 || 0x10F7 || 2 || 0x10F6 || 2 || 0x10FF || 2 <br />
|-<br />
|| NtGdiRemoveFontResourceW || 0X10F0 || 6 || 0x10F8 || 6 || 0x10F7 || 6 || 0x1100 || 6 <br />
|-<br />
|| NtGdiRemoveFontMemResourceEx || 0X10F1 || 1 || 0x10F9 || 1 || 0x10F8 || 1 || 0x1101 || 1 <br />
|-<br />
|| NtGdiResetDC || 0X10F2 || 5 || 0x10FA || 5 || 0x10F9 || 5 || 0x1102 || 5 <br />
|-<br />
|| NtGdiResizePalette || 0X10F3 || 2 || 0x10FB || 2 || 0x10FA || 2 || 0x1103 || 2 <br />
|-<br />
|| NtGdiRestoreDC || 0x10F4 || 2 || 0x10FC || 2 || 0x10FB || 2 || 0x1104 || 2 <br />
|-<br />
|| NtGdiRoundRect || 0x10F5 || 7 || 0x10FD || 7 || 0x10FC || 7 || 0x1105 || 7 <br />
|-<br />
|| NtGdiSaveDC || 0x10F6 || 1 || 0x10FE || 1 || 0x10FD || 1 || 0x1106 || 1 <br />
|-<br />
|| NtGdiScaleViewportExtEx || 0x10F7 || 6 || 0x10FF || 6 || 0x10FE || 6 || 0x1107 || 6 <br />
|-<br />
|| NtGdiScaleWindowExtEx || 0x10F8 || 6 || 0x1100 || 6 || 0x10FF || 6 || 0x1108 || 6 <br />
|-<br />
|| NtGdiSelectBitmap || 0x10F9 || 2 || 0x1101 || 2 || 0x1100 || 2 || 0x1109 || 2 || 0x100b || ?<br />
|-<br />
|| NtGdiSelectBrush || 0x10FA || 2 || 0x1102 || 2 || 0x1101 || 2 || 0x110A || 2 <br />
|-<br />
|| NtGdiSelectClipPath || 0x10FB || 2 || 0x1103 || 2 || 0x1102 || 2 || 0x110B || 2 <br />
|-<br />
|| NtGdiSelectFont || 0x10FC || 2 || 0x1104 || 2 || 0x1103 || 2 || 0x110C || 2 <br />
|-<br />
|| NtGdiSelectPen || 0x10FD || 2 || 0x1105 || 2 || 0x1104 || 2 || 0x110D || 2 <br />
|-<br />
|| NtGdiSetBitmapAttributes || || || 0x1106 || 2 || 0x1105 || 2 || 0x110E || 2 <br />
|-<br />
|| NtGdiSetBitmapBits || 0x10FE || 3 || 0x1107 || 3 || 0x1106 || 3 || 0x110F || 3 <br />
|-<br />
|| NtGdiSetBitmapDimension || 0x10FF || 4 || 0x1108 || 4 || 0x1107 || 4 || 0x1110 || 4 <br />
|-<br />
|| NtGdiSetBoundsRect || 0x1100 || 3 || 0x1109 || 3 || 0x1108 || 3 || 0x1111 || 3 <br />
|-<br />
|| NtGdiSetBrushAttributes || || || 0x110A || 2 || 0x1109 || 2 || 0x1112 || 2 <br />
|-<br />
|| NtGdiSetBrushOrg || 0x1101 || 4 || 0x110B || 4 || 0x110A || 4 || 0x1113 || 4 <br />
|-<br />
|| NtGdiSetColorAdjustment || 0x1102 || 2 || 0x110C || 2 || 0x110B || 2 || 0x1114 || 2 <br />
|-<br />
|| NtGdiSetColorSpace || 0x1103 || 2 || 0x110D || 2 || 0x110C || 2 || 0x1115 || 2 <br />
|-<br />
|| NtGdiSetDeviceGammaRamp || 0x1104 || 2 || 0x110E || 2 || 0x110D || 2 || 0x1116 || 2 <br />
|-<br />
|| NtGdiSetDIBitsToDeviceInternal || 0x1105 || 16 || 0x110F || 16 || 0x110E || 16 || 0x1117 || 16 <br />
|-<br />
|| NtGdiSetFontEnumeration || 0x1106 || 1 || 0x1110 || 1 || 0x110F || 1 || 0x1118 || 1 <br />
|-<br />
|| NtGdiSetFontXform || 0x1107 || 3 || 0x1111 || 3 || 0x1110 || 3 || 0x1119 || 3 <br />
|-<br />
|| NtGdiSetIcmMode || 0x1108 || 3 || 0x1112 || 3 || 0x1111 || 3 || 0x111A || 3 <br />
|-<br />
|| NtGdiSetLinkedUFIs || 0x1109 || 3 || 0x1113 || 3 || 0x1112 || 3 || 0x111B || 3 <br />
|-<br />
|| NtGdiSetMagicColors || 0x110A || 3 || 0x1114 || 3 || 0x1113 || 3 || 0x111C || 3 <br />
|-<br />
|| NtGdiSetMetaRgn || 0x110B || 1 || 0x1115 || 1 || 0x1114 || 1 || 0x111D || 1 <br />
|-<br />
|| NtGdiSetMiterLimit || 0x110C || 3 || 0x1116 || 3 || 0x1115 || 3 || 0x111E || 3 <br />
|-<br />
|| NtGdiGetDeviceWidth || 0x110D || 1 || 0x1117 || 1 || 0x1116 || 1 || 0x111F || 1 <br />
|-<br />
|| NtGdiMirrorWindowOrg || 0x110E || 1 || 0x1118 || 1 || 0x1117 || 1 || 0x1120 || 1 <br />
|-<br />
|| NtGdiSetLayout || 0x110F || 3 || 0x1119 || 3 || 0x1118 || 3 || 0x1121 || 3 <br />
|-<br />
|| NtGdiSetOPMSigningKeyAndSequenceNumbers || || || || || || || 0x1122 || 2 <br />
|-<br />
|| NtGdiSetPixel || 0x1110 || 4 || 0x111A || 4 || 0x1119 || 4 || 0x1123 || 4 <br />
|-<br />
|| NtGdiSetPixelFormat || 0X1111 || 2 || 0x111B || 2 || 0x111A || 2 || 0x1124 || 2 <br />
|-<br />
|| NtGdiSetRectRgn || 0X1112 || 5 || 0x111C || 5 || 0x111B || 5 || 0x1125 || 5 <br />
|-<br />
|| NtGdiSetSystemPaletteUse || 0X1113 || 2 || 0x111D || 2 || 0x111C || 2 || 0x1126 || 2 <br />
|-<br />
|| NtGdiSetTextJustification || 0x1114 || 3 || 0x111E || 3 || 0x111D || 3 || 0x1127 || 3 <br />
|-<br />
|| NtGdiSetupPublicCFONT || 0x1115 || 3 || 0x111F || 3 || 0x111E || 3 || 0x1128 || 3 <br />
|-<br />
|| NtGdiSetVirtualResolution || 0X1116 || 5 || 0x1120 || 5 || 0x111F || 5 || 0x1129 || 5 <br />
|-<br />
|| NtGdiSetSizeDevice || 0X1117 || 3 || 0x1121 || 3 || 0x1120 || 3 || 0x112A || 3 <br />
|-<br />
|| NtGdiStartDoc || 0X1118 || 4 || 0x1122 || 4 || 0x1121 || 4 || 0x112B || 4 <br />
|-<br />
|| NtGdiStartPage || 0X1119 || 1 || 0x1123 || 1 || 0x1122 || 1 || 0x112C || 1 <br />
|-<br />
|| NtGdiStretchBlt || 0x111A || 12 || 0x1124 || 12 || 0x1123 || 12 || 0x112D || 12 <br />
|-<br />
|| NtGdiStretchDIBitsInternal || 0x111B || 16 || 0x1125 || 16 || 0x1124 || 16 || 0x112E || 16 <br />
|-<br />
|| NtGdiStrokeAndFillPath || 0X111C || 1 || 0x1126 || 1 || 0x1125 || 1 || 0x112F || 1 <br />
|-<br />
|| NtGdiStrokePath || 0X111D || 1 || 0x1127 || 1 || 0x1126 || 1 || 0x1130 || 1 <br />
|-<br />
|| NtGdiSwapBuffers || 0X111E || 1 || 0x1128 || 1 || 0x1127 || 1 || 0x1131 || 1 <br />
|-<br />
|| NtGdiTransformPoints || 0X111F || 5 || 0x1129 || 5 || 0x1128 || 5 || 0x1132 || 5 <br />
|-<br />
|| NtGdiTransparentBlt || 0x1120 || 11 || 0x112A || 11 || 0x1129 || 11 || 0x1133 || 11 <br />
|-<br />
|| NtGdiUnloadPrinterDriver || 0X1121 || 2 || 0x112B || 2 || 0x112A || 2 || 0x1134 || 2 || 0x126a || ?<br />
|-<br />
|| NtGdiUnmapMemFont || 0x1122 || 1 || 0x112C || 1 || 0x112B || 1 || 0x1135 || 4 <br />
|-<br />
|| NtGdiUnrealizeObject || 0X1123 || 1 || 0x112D || 1 || 0x112C || 1 || 0x1136 || 1 <br />
|-<br />
|| NtGdiUpdateColors || 0X1124 || 1 || 0x112E || 1 || 0x112D || 1 || 0x1137 || 1 <br />
|-<br />
|| NtGdiWidenPath || 0X1125 || 1 || 0x112F || 1 || 0x112E || 1 || 0x1138 || 1 <br />
|-<br />
|| NtUserActivateKeyboardLayout || 0x1126 || 2 || 0x1130 || 2 || 0x112F || 2 || 0x1139 || 2 <br />
|-<br />
|| NtUserAddClipboardFormatListener || || || || || || || 0x113A || 1 <br />
|-<br />
|| NtUserAlterWindowStyle || 0x1127 || 3 || 0x1131 || 3 || 0x1130 || 3 || 0x113B || 3 <br />
|-<br />
|| NtUserAssociateInputContext || 0X1128 || 3 || 0x1132 || 3 || 0x1131 || 3 || 0x113C || 3 <br />
|-<br />
|| NtUserAttachThreadInput || 0x1129 || 3 || 0x1133 || 3 || 0x1132 || 3 || 0x113D || 3 <br />
|-<br />
|| NtUserBeginPaint || 0x112A || 2 || 0x1134 || 2 || 0x1133 || 2 || 0x113E || 2 <br />
|-<br />
|| NtUserBitBltSysBmp || 0x112B || 8 || 0x1135 || 8 || 0x1134 || 8 || 0x113F || 8 <br />
|-<br />
|| NtUserBlockInput || 0x112C || 1 || 0x1136 || 1 || 0x1135 || 1 || 0x1140 || 1 <br />
|-<br />
|| NtUserBuildHimcList || 0x112D || 4 || 0x1137 || 4 || 0x1136 || 4 || 0x1141 || 4 <br />
|-<br />
|| NtUserBuildHwndList || 0x112E || 7 || 0x1138 || 7 || 0x1137 || 7 || 0x1142 || 7 <br />
|-<br />
|| NtUserBuildNameList || 0x112F || 4 || 0x1139 || 4 || 0x1138 || 4 || 0x1143 || 4 <br />
|-<br />
|| NtUserBuildPropList || 0x1130 || 4 || 0x113A || 4 || 0x1139 || 4 || 0x1144 || 4 <br />
|-<br />
|| NtUserCallHwnd || 0x1131 || 2 || 0x113B || 2 || 0x113A || 2 || 0x1145 || 2 <br />
|-<br />
|| NtUserCallHwndLock || 0x1132 || 2 || 0x113C || 2 || 0x113B || 2 || 0x1146 || 2 <br />
|-<br />
|| NtUserCallHwndOpt || 0x1133 || 2 || 0x113D || 2 || 0x113C || 2 || 0x1147 || 2 <br />
|-<br />
|| NtUserCallHwndParam || 0x1134 || 3 || 0x113E || 3 || 0x113D || 3 || 0x1148 || 3 <br />
|-<br />
|| NtUserCallHwndParamLock || 0x1135 || 3 || 0x113F || 3 || 0x113E || 3 || 0x1149 || 3 <br />
|-<br />
|| NtUserCallMsgFilter || 0x1136 || 2 || 0x1140 || 2 || 0x113F || 2 || 0x114A || 2 <br />
|-<br />
|| NtUserCallNextHookEx || 0x1137 || 4 || 0x1141 || 4 || 0x1140 || 4 || 0x114B || 4 <br />
|-<br />
|| [[Techwiki:win32k/NtUserCallNoParam|NtUserCallNoParam]] || 0x1138 || 1 || 0x1142 || 1 || 0x1141 || 1 || 0x114C || 1 || 0x1005 || ?<br />
|-<br />
|| [[Techwiki:win32k/NtUserCallOneParam|NtUserCallOneParam]] || 0x1139 || 1 || 0x1143 || 2 || 0x1142 || 2 || 0x114D || 2 || 0x1002 || ?<br />
|-<br />
|| [[Techwiki:win32k/NtUserCallTwoParam|NtUserCallTwoParam]] || 0x113A || 3 || 0x1144 || 3 || 0x1143 || 3 || 0x114E || 3 <br />
|-<br />
|| NtUserChangeClipboardChain || 0x113B || 2 || 0x1145 || 2 || 0x1144 || 2 || 0x114F || 2 <br />
|-<br />
|| NtUserChangeDisplaySettings || 0x113C || 5 || 0x1146 || 5 || 0x1145 || 4 || 0x1150 || 4 <br />
|-<br />
|| NtUserCheckAccessForIntegrityLevel || || || || || || || 0x1151 || 3 <br />
|-<br />
|| NtUserCheckDesktopByThreadId || || || || || || || 0x1152 || 1 <br />
|-<br />
|| NtUserCheckWindowThreadDesktop || || || || || || || 0x1153 || 3 <br />
|-<br />
|| NtUserCheckImeHotKey || 0x113D || 3 || 0x1147 || 2 || 0x1146 || 2 || 0x1154 || 2 <br />
|-<br />
|| NtUserCheckMenuItem || 0x113E || 3 || 0x1148 || 3 || 0x1147 || 3 || 0x1155 || 3 <br />
|-<br />
|| NtUserChildWindowFromPointEx || 0x113F || 4 || 0x1149 || 4 || 0x1148 || 4 || 0x1156 || 4 <br />
|-<br />
|| NtUserClipCursor || 0x1140 || 1 || 0x114A || 1 || 0x1149 || 1 || 0x1157 || 1 <br />
|-<br />
|| NtUserCloseClipboard || 0x1141 || 0 || 0x114B || 0 || 0x114A || 0 || 0x1158 || 0 <br />
|-<br />
|| NtUserCloseDesktop || 0x1142 || 1 || 0x114C || 1 || 0x114B || 1 || 0x1159 || 1 <br />
|-<br />
|| NtUserCloseWindowStation || 0x1143 || 1 || 0x114D || 1 || 0x114C || 1 || 0x115A || 1 <br />
|-<br />
|| NtUserConsoleControl || 0x1144 || 3 || 0x114E || 3 || 0x114D || 3 || 0x115B || 3 <br />
|-<br />
|| NtUserConvertMemHandle || 0x1145 || 2 || 0x114F || 2 || 0x114E || 2 || 0x115C || 2 <br />
|-<br />
|| NtUserCopyAcceleratorTable || 0x1146 || 3 || 0x1150 || 3 || 0x114F || 3 || 0x115D || 3 <br />
|-<br />
|| NtUserCountClipboardFormats || 0x1147 || 1 || 0x1151 || 0 || 0x1150 || 0 || 0x115E || 0 <br />
|-<br />
|| NtUserCreateAcceleratorTable || 0x1148 || 2 || 0x1152 || 2 || 0x1151 || 2 || 0x115F || 2 <br />
|-<br />
|| NtUserCreateCaret || 0x1149 || 4 || 0x1153 || 4 || 0x1152 || 4 || 0x1160 || 4 <br />
|-<br />
|| NtUserCreateDesktop || 0x114A || 5 || 0x1154 || 5 || 0x1153 || 5 || 0x1161 || 6 <br />
|-<br />
|| NtUserCreateInputContext || 0x114B || 1 || 0x1155 || 1 || 0x1154 || 1 || 0x1162 || 1 <br />
|-<br />
|| NtUserCreateLocalMemHandle || 0x114C || 4 || 0x1156 || 4 || 0x1155 || 4 || 0x1163 || 4 <br />
|-<br />
|| [[Techwiki:win32k/NtUserCreateWindowEx|NtUserCreateWindowEx]] || 0x114D || 13 || 0x1157 || 15 || 0x1156 || 15 || 0x1164 || 15 <br />
|-<br />
|| NtUserCreateWindowStation || 0x114E || 6 || 0x1158 || 7 || 0x1157 || 7 || 0x1165 || 7 <br />
|-<br />
|| NtUserDdeGetQualityOfService || 0x114F || 3 || 0x1159 || 3 || 0x1158 || 3 || || <br />
|-<br />
|| NtUserDdeInitialize || 0x1150 || 5 || 0x115A || 5 || 0x1159 || 5 || 0x1166 || 5 <br />
|-<br />
|| NtUserDdeSetQualityOfService || 0x1151 || 3 || 0x115B || 3 || 0x115A || 3 || || <br />
|-<br />
|| NtUserDeferWindowPos || 0x1152 || 8 || 0x115C || 8 || 0x115B || 8 || 0x1167 || 8 <br />
|-<br />
|| NtUserDefSetText || 0x1153 || 2 || 0x115D || 2 || 0x115C || 2 || 0x1168 || 2 <br />
|-<br />
|| NtUserDeleteMenu || 0x1154 || 3 || 0x115E || 3 || 0x115D || 3 || 0x1169 || 3 <br />
|-<br />
|| NtUserDestroyAcceleratorTable || 0x1155 || 1 || 0x115F || 1 || 0x115E || 1 || 0x116A || 1 <br />
|-<br />
|| NtUserDestroyCursor || 0x1156 || 2 || 0x1160 || 2 || 0x115F || 2 || 0x116B || 2 <br />
|-<br />
|| NtUserDestroyInputContext || 0x1157 || 1 || 0x1161 || 1 || 0x1160 || 1 || 0x116C || 1 <br />
|-<br />
|| NtUserDestroyMenu || 0x1158 || 1 || 0x1162 || 1 || 0x1161 || 1 || 0x116D || 1 <br />
|-<br />
|| NtUserDestroyWindow || 0x1159 || 1 || 0x1163 || 1 || 0x1162 || 1 || 0x116E || 1 <br />
|-<br />
|| NtUserDisableThreadIme || 0x115A || 1 || 0x1164 || 1 || 0x1163 || 1 || 0x116F || 1 <br />
|-<br />
|| NtUserDispatchMessage || 0x115B || 1 || 0x1165 || 1 || 0x1164 || 1 || 0x1170 || 1 <br />
|-<br />
|| NtUserDoSoundConnect || || || || || || || 0x1171 || 0 <br />
|-<br />
|| NtUserDoSoundDisconnect || || || || || || || 0x1172 || 0 <br />
|-<br />
|| NtUserDragDetect || 0x115C || 3 || 0x1166 || 3 || 0x1165 || 3 || 0x1173 || 3 <br />
|-<br />
|| NtUserDragObject || 0x115D || 5 || 0x1167 || 5 || 0x1166 || 5 || 0x1174 || 5 <br />
|-<br />
|| NtUserDrawAnimatedRects || 0x115E || 4 || 0x1168 || 4 || 0x1167 || 4 || 0x1175 || 4 <br />
|-<br />
|| NtUserDrawCaption || 0x115F || 4 || 0x1169 || 4 || 0x1168 || 4 || 0x1176 || 4 <br />
|-<br />
|| NtUserDrawCaptionTemp || 0x1160 || 7 || 0x116A || 7 || 0x1169 || 7 || 0x1177 || 7 <br />
|-<br />
|| NtUserDrawIconEx || 0x1161 || 11 || 0x116B || 11 || 0x116A || 11 || 0x1178 || 11 <br />
|-<br />
|| NtUserDrawMenuBarTemp || 0x1162 || 5 || 0x116C || 5 || 0x116B || 5 || 0x1179 || 5 <br />
|-<br />
|| NtUserEmptyClipboard || 0x1163 || 0 || 0x116D || 0 || 0x116C || 0 || 0x117A || 0 <br />
|-<br />
|| NtUserEnableMenuItem || 0x1164 || 3 || 0x116E || 3 || 0x116D || 3 || 0x117B || 3 <br />
|-<br />
|| NtUserEnableScrollBar || 0x1165 || 3 || 0x116F || 3 || 0x116E || 3 || 0x117C || 3 <br />
|-<br />
|| NtUserEndDeferWindowPosEx || 0x1166 || 2 || 0x1170 || 2 || 0x116F || 2 || 0x117D || 2 <br />
|-<br />
|| NtUserEndMenu || 0x1167 || 0 || 0x1171 || 0 || 0x1170 || 0 || 0x117E || 0 <br />
|-<br />
|| NtUserEndPaint || 0x1168 || 2 || 0x1172 || 2 || 0x1171 || 2 || 0x117F || 2 <br />
|-<br />
|| NtUserEnumDisplayDevices || 0x1169 || 4 || 0x1173 || 4 || 0x1172 || 4 || 0x1180 || 4 <br />
|-<br />
|| NtUserEnumDisplayMonitors || 0x116A || 4 || 0x1174 || 4 || 0x1173 || 4 || 0x1181 || 4 <br />
|-<br />
|| NtUserEnumDisplaySettings || 0x116B || 4 || 0x1175 || 4 || 0x1174 || 4 || 0x1182 || 4 <br />
|-<br />
|| NtUserEvent || 0x116C || 1 || 0x1176 || 1 || 0x1175 || 1 || 0x1183 || 1 <br />
|-<br />
|| NtUserExcludeUpdateRgn || 0x116D || 2 || 0x1177 || 2 || 0x1176 || 2 || 0x1184 || 2 <br />
|-<br />
|| NtUserFillWindow || 0x116E || 4 || 0x1178 || 4 || 0x1177 || 4 || 0x1185 || 4 <br />
|-<br />
|| NtUserFindExistingCursorIcon || 0x116F || 3 || 0x1179 || 3 || 0x1178 || 3 || 0x1186 || 3 <br />
|-<br />
|| NtUserFindWindowEx || 0x1170 || 5 || 0x117A || 5 || 0x1179 || 5 || 0x1187 || 5 <br />
|-<br />
|| NtUserFlashWindowEx || 0x1171 || 1 || 0x117B || 1 || 0x117A || 1 || 0x1188 || 1 <br />
|-<br />
|| NtUserFrostCrashedWindow || || || || || || || 0x1189 || 2 <br />
|-<br />
|| NtUserGetAltTabInfo || 0x1172 || 6 || 0x117C || 6 || 0x117B || 6 || 0x118A || 6 <br />
|-<br />
|| NtUserGetAncestor || 0x1173 || 2 || 0x117D || 2 || 0x117C || 2 || 0x118B || 2 <br />
|-<br />
|| NtUserGetAppImeLevel || 0x1174 || 1 || 0x117E || 1 || 0x117D || 1 || 0x118C || 1 <br />
|-<br />
|| NtUserGetAsyncKeyState || 0x1175 || 1 || 0x117F || 1 || 0x117E || 1 || 0x118D || 1 <br />
|-<br />
|| NtUserGetAtomName || || || 0x1180 || 2 || 0x117F || 2 || 0x118E || 2 <br />
|-<br />
|| NtUserGetCaretBlinkTime || 0x1176 || 0 || 0x1181 || 0 || 0x1180 || 0 || 0x118F || 0 <br />
|-<br />
|| NtUserGetCaretPos || 0x1177 || 1 || 0x1182 || 1 || 0x1181 || 1 || 0x1190 || 1 <br />
|-<br />
|| NtUserGetClassInfo || 0x1178 || 5 || 0x1183 || 5 || || || || <br />
|-<br />
|| NtUserGetClassInfoEx || || || || || 0x1182 || 5 || 0x1191 || 5 <br />
|-<br />
|| NtUserGetClassName || 0x1179 || 3 || 0x1184 || 3 || 0x1183 || 3 || 0x1192 || 3 <br />
|-<br />
|| NtUserGetClipboardData || 0x117A || 2 || 0x1185 || 2 || 0x1184 || 2 || 0x1193 || 2 <br />
|-<br />
|| NtUserGetClipboardFormatName || 0x117B || 3 || 0x1186 || 3 || 0x1185 || 3 || 0x1194 || 3 <br />
|-<br />
|| NtUserGetClipboardOwner || 0x117C || 0 || 0x1187 || 0 || 0x1186 || 0 || 0x1195 || 0 <br />
|-<br />
|| NtUserGetClipboardSequenceNumber || 0x117D || 0 || 0x1188 || 0 || 0x1187 || 0 || 0x1196 || 0 <br />
|-<br />
|| NtUserGetClipboardViewer || 0x117E || 0 || 0x1189 || 0 || 0x1188 || 0 || 0x1197 || 0 <br />
|-<br />
|| NtUserGetClipCursor || 0x117F || 1 || 0x118A || 1 || 0x1189 || 1 || 0x1198 || 1 <br />
|-<br />
|| NtUserGetComboBoxInfo || 0x1180 || 2 || 0x118B || 2 || 0x118A || 2 || 0x1199 || 2 <br />
|-<br />
|| NtUserGetControlBrush || 0x1181 || 3 || 0x118C || 3 || 0x118B || 3 || 0x119A || 3 <br />
|-<br />
|| NtUserGetControlColor || 0x1182 || 4 || 0x118D || 4 || 0x118C || 4 || 0x119B || 4 <br />
|-<br />
|| NtUserGetCPD || 0x1183 || 3 || 0x118E || 3 || 0x118D || 3 || 0x119C || 3 <br />
|-<br />
|| NtUserGetCursorFrameInfo || 0x1184 || 4 || 0x118F || 4 || 0x118E || 4 || 0x119D || 4 <br />
|-<br />
|| NtUserGetCursorInfo || 0x1185 || 1 || 0x1190 || 1 || 0x118F || 1 || 0x119E || 1 <br />
|-<br />
|| NtUserGetDC || 0x1186 || 1 || 0x1191 || 1 || 0x1190 || 1 || 0x119F || 1 || 0x100a || ?<br />
|-<br />
|| NtUserGetDCEx || 0x1187 || 3 || 0x1192 || 3 || 0x1191 || 3 || 0x11A0 || 3 <br />
|-<br />
|| NtUserGetDoubleClickTime || 0x1188 || 0 || 0x1193 || 0 || 0x1192 || 0 || 0x11A1 || 0 <br />
|-<br />
|| NtUserGetForegroundWindow || 0x1189 || 0 || 0x1194 || 0 || 0x1193 || 0 || 0x11A2 || 0 <br />
|-<br />
|| NtUserGetGuiResources || 0x118A || 2 || 0x1195 || 2 || 0x1194 || 2 || 0x11A3 || 2 <br />
|-<br />
|| NtUserGetGUIThreadInfo || 0x118B || 2 || 0x1196 || 2 || 0x1195 || 2 || 0x11A4 || 2 <br />
|-<br />
|| NtUserGetIconInfo || 0x118C || 6 || 0x1197 || 6 || 0x1196 || 6 || 0x11A5 || 6 <br />
|-<br />
|| NtUserGetIconSize || 0x118D || 4 || 0x1198 || 4 || 0x1197 || 4 || 0x11A6 || 4 <br />
|-<br />
|| NtUserGetImeHotKey || 0x118E || 4 || 0x1199 || 4 || 0x1198 || 4 || 0x11A7 || 4 <br />
|-<br />
|| NtUserGetImeInfoEx || 0x118F || 2 || 0x119A || 2 || 0x1199 || 2 || 0x11A8 || 2 <br />
|-<br />
|| NtUserGetInternalWindowPos || 0x1190 || 3 || 0x119B || 3 || 0x119A || 3 || 0x11A9 || 3 <br />
|-<br />
|| NtUserGetKeyboardLayoutList || 0x1191 || 2 || 0x119C || 2 || 0x119B || 2 || 0x11AA || 2 <br />
|-<br />
|| NtUserGetKeyboardLayoutName || 0x1192 || 1 || 0x119D || 1 || 0x119C || 1 || 0x11AB || 1 <br />
|-<br />
|| NtUserGetKeyboardState || 0x1193 || 1 || 0x119E || 1 || 0x119D || 1 || 0x11AC || 1 <br />
|-<br />
|| NtUserGetKeyNameText || 0x1194 || 3 || 0x119F || 3 || 0x119E || 3 || 0x11AD || 3 <br />
|-<br />
|| NtUserGetKeyState || 0x1195 || 1 || 0x11A0 || 1 || 0x119F || 1 || 0x11AE || 1 || 0x1003 || ?<br />
|-<br />
|| NtUserGetListBoxInfo || 0x1196 || 1 || 0x11A1 || 1 || 0x11A0 || 1 || 0x11AF || 1 <br />
|-<br />
|| NtUserGetMenuBarInfo || 0x1197 || 4 || 0x11A2 || 4 || 0x11A1 || 4 || 0x11B0 || 4 <br />
|-<br />
|| NtUserGetMenuIndex || 0x1198 || 2 || 0x11A3 || 2 || 0x11A2 || 2 || 0x11B1 || 2 <br />
|-<br />
|| NtUserGetMenuItemRect || 0x1199 || 4 || 0x11A4 || 4 || 0x11A3 || 4 || 0x11B2 || 4 <br />
|-<br />
|| NtUserGetMessage || 0x119A || 4 || 0x11A5 || 4 || 0x11A4 || 4 || 0x11B3 || 4 || 0x1006 || ?<br />
|-<br />
|| NtUserGetMouseMovePointsEx || 0x119B || 5 || 0x11A6 || 5 || 0x11A5 || 5 || 0x11B4 || 5 <br />
|-<br />
|| NtUserGetObjectInformation || 0x119C || 5 || 0x11A7 || 5 || 0x11A6 || 5 || 0x11B5 || 5 <br />
|-<br />
|| NtUserGetOpenClipboardWindow || 0x119D || 0 || 0x11A8 || 0 || 0x11A7 || 0 || 0x11B6 || 0 <br />
|-<br />
|| NtUserGetPriorityClipboardFormat || 0x119E || 2 || 0x11A9 || 2 || 0x11A8 || 2 || 0x11B7 || 2 <br />
|-<br />
|| NtUserGetProcessWindowStation || 0x119F || 0 || 0x11AA || 0 || 0x11A9 || 0 || 0x11B8 || 0 <br />
|-<br />
|| NtUserGetRawInputBuffer || || || 0x11AB || 3 || 0x11AA || 3 || 0x11B9 || 3 <br />
|-<br />
|| NtUserGetRawInputData || || || 0x11AC || 5 || 0x11AB || 5 || 0x11BA || 5 <br />
|-<br />
|| NtUserGetRawInputDeviceInfo || || || 0x11AD || 4 || 0x11AC || 4 || 0x11BB || 4 <br />
|-<br />
|| NtUserGetRawInputDeviceList || || || 0x11AE || 3 || 0x11AD || 3 || 0x11BC || 3 <br />
|-<br />
|| NtUserGetRegisteredRawInputDevices || || || 0x11AF || 3 || 0x11AE || 3 || 0x11BD || 3 <br />
|-<br />
|| NtUserGetScrollBarInfo || 0x11A0 || 3 || 0x11B0 || 3 || 0x11AF || 3 || 0x11BE || 3 <br />
|-<br />
|| NtUserGetSystemMenu || 0x11A1 || 2 || 0x11B1 || 2 || 0x11B0 || 2 || 0x11BF || 2 <br />
|-<br />
|| NtUserGetThreadDesktop || 0x11A2 || 2 || 0x11B2 || 2 || 0x11B1 || 2 || 0x11C0 || 2 <br />
|-<br />
|| NtUserGetThreadState || 0x11A3 || 1 || 0x11B3 || 1 || 0x11B2 || 1 || 0x11C1 || 1 || 0x1000 || ?<br />
|-<br />
|| NtUserGetTitleBarInfo || 0x11A4 || 2 || 0x11B4 || 2 || 0x11B3 || 2 || 0x11C2 || 2 <br />
|-<br />
|| NtUserGetUpdatedClipboardFormats || || || || || || || 0x11C3 || 3 <br />
|-<br />
|| NtUserGetUpdateRect || 0x11A5 || 3 || 0x11B5 || 3 || 0x11B4 || 3 || 0x11C4 || 3 <br />
|-<br />
|| NtUserGetUpdateRgn || 0x11A6 || 3 || 0x11B6 || 3 || 0x11B5 || 3 || 0x11C5 || 3 <br />
|-<br />
|| NtUserGetWindowDC || 0x11A7 || 1 || 0x11B7 || 1 || 0x11B6 || 1 || 0x11C6 || 1 <br />
|-<br />
|| NtUserGetWindowPlacement || 0x11A8 || 2 || 0x11B8 || 2 || 0x11B7 || 2 || 0x11C7 || 2 <br />
|-<br />
|| NtUserGetWOWClass || 0x11A9 || 2 || 0x11B9 || 2 || 0x11B8 || 2 || 0x11C8 || 2 <br />
|-<br />
|| NtUserGhostWindowFromHungWindow || || || || || || || 0x11C9 || 1 <br />
|-<br />
|| NtUserHardErrorControl || 0x11AA || 3 || 0x11BA || 3 || 0x11B9 || 3 || 0x11CA || 3 <br />
|-<br />
|| NtUserHideCaret || 0x11AB || 1 || 0x11BB || 1 || 0x11BA || 1 || 0x11CB || 1 <br />
|-<br />
|| NtUserHiliteMenuItem || 0x11AC || 4 || 0x11BC || 4 || 0x11BB || 4 || 0x11CC || 4 <br />
|-<br />
|| NtUserHungWindowFromGhostWindow || || || || || || || 0x11CD || 1 <br />
|-<br />
|| NtUserImpersonateDdeClientWindow || 0x11AD || 2 || 0x11BD || 2 || 0x11BC || 2 || 0x11CE || 2 <br />
|-<br />
|| NtUserInitialize || 0x11AE || 3 || 0x11BE || 3 || 0x11BD || 3 || 0x11CF || 2 <br />
|-<br />
|| NtUserInitializeClientPfnArrays || 0x11AF || 4 || 0x11BF || 4 || 0x11BE || 4 || 0x11D0 || 4 <br />
|-<br />
|| NtUserInitTask || 0x11B0 || 11 || 0x11C0 || 12 || 0x11BF || 12 || 0x11D1 || 12 <br />
|-<br />
|| NtUserInternalGetWindowText || 0x11B1 || 3 || 0x11C1 || 3 || 0x11C0 || 3 || 0x11D2 || 3 <br />
|-<br />
|| NtUserInternalGetWindowIcon || || || || || || || 0x11D3 || 2 <br />
|-<br />
|| NtUserInvalidateRect || 0x11B2 || 3 || 0x11C2 || 3 || 0x11C1 || 3 || 0x11D4 || 3 || 0x1004 || ?<br />
|-<br />
|| NtUserInvalidateRgn || 0x11B3 || 3 || 0x11C3 || 3 || 0x11C2 || 3 || 0x11D5 || 3 <br />
|-<br />
|| NtUserIsClipboardFormatAvailable || 0x11B4 || 1 || 0x11C4 || 1 || 0x11C3 || 1 || 0x11D6 || 1 <br />
|-<br />
|| NtUserKillTimer || 0x11B5 || 2 || 0x11C5 || 2 || 0x11C4 || 2 || 0x11D7 || 2 <br />
|-<br />
|| NtUserLoadKeyboardLayoutEx || 0x11B6 || 6 || 0x11C6 || 7 || 0x11C5 || 7 || 0x11D8 || 7 <br />
|-<br />
|| NtUserLockWindowStation || 0x11B7 || 1 || 0x11C7 || 1 || 0x11C6 || 1 || 0x11D9 || 1 <br />
|-<br />
|| NtUserLockWindowUpdate || 0x11B8 || 1 || 0x11C8 || 1 || 0x11C7 || 1 || 0x11DA || 1 <br />
|-<br />
|| NtUserLockWorkStation || 0x11B9 || 0 || 0x11C9 || 0 || 0x11C8 || 0 || 0x11DB || 0 <br />
|-<br />
|| NtUserLogicalToPhysicalPoint || || || || || || || 0x11DC || 2 <br />
|-<br />
|| NtUserMapVirtualKeyEx || 0x11BA || 4 || 0x11CA || 4 || 0x11C9 || 4 || 0x11DD || 4 <br />
|-<br />
|| NtUserMenuItemFromPoint || 0x11BB || 4 || 0x11CB || 4 || 0x11CA || 4 || 0x11DE || 4 <br />
|-<br />
|| NtUserMessageCall || 0x11BC || 7 || 0x11CC || 7 || 0x11CB || 7 || 0x11DF || 7 || 0x1007 || 7<br />
|-<br />
|| NtUserMinMaximize || 0x11BD || 3 || 0x11CD || 3 || 0x11CC || 3 || 0x11E0 || 3 <br />
|-<br />
|| NtUserMNDragLeave || 0x11BE || 0 || 0x11CE || 0 || 0x11CD || 0 || 0x11E1 || 0 <br />
|-<br />
|| NtUserMNDragOver || 0x11BF || 2 || 0x11CF || 2 || 0x11CE || 2 || 0x11E2 || 2 <br />
|-<br />
|| NtUserModifyUserStartupInfoFlags || 0x11C0 || 2 || 0x11D0 || 2 || 0x11CF || 2 || 0x11E3 || 2 <br />
|-<br />
|| NtUserMoveWindow || 0x11C1 || 6 || 0x11D1 || 6 || 0x11D0 || 6 || 0x11E4 || 6 <br />
|-<br />
|| NtUserNotifyIMEStatus || 0x11C2 || 3 || 0x11D2 || 3 || 0x11D1 || 3 || 0x11E5 || 3 <br />
|-<br />
|| NtUserNotifyProcessCreate || 0x11C3 || 4 || 0x11D3 || 4 || 0x11D2 || 4 || 0x11E6 || 4 <br />
|-<br />
|| NtUserNotifyWinEvent || 0x11C4 || 4 || 0x11D4 || 4 || 0x11D3 || 4 || 0x11E7 || 4 <br />
|-<br />
|| NtUserOpenClipboard || 0x11C5 || 2 || 0x11D5 || 2 || 0x11D4 || 2 || 0x11E8 || 2 <br />
|-<br />
|| NtUserOpenDesktop || 0x11C6 || 3 || 0x11D6 || 3 || 0x11D5 || 3 || 0x11E9 || 3 <br />
|-<br />
|| NtUserOpenInputDesktop || 0x11C7 || 3 || 0x11D7 || 3 || 0x11D6 || 3 || 0x11EA || 3 <br />
|-<br />
|| NtUserOpenThreadDesktop || || || || || || || 0x11EB || 5 <br />
|-<br />
|| NtUserOpenWindowStation || 0x11C8 || 2 || 0x11D8 || 2 || 0x11D7 || 2 || 0x11EC || 2 <br />
|-<br />
|| NtUserPaintDesktop || 0x11C9 || 1 || 0x11D9 || 1 || 0x11D8 || 1 || 0x11ED || 1 <br />
|-<br />
|| NtUserPaintMonitor || || || || || || || 0x11EE || 3 <br />
|-<br />
|| NtUserPeekMessage || 0x11CA || 5 || 0x11DA || 5 || 0x11D9 || 5 || 0x11EF || 5 || 0x1001 || 5<br />
|-<br />
|| NtUserPhysicalToLogicalPoint || || || || || || || 0x11F0 || 2 <br />
|-<br />
|| NtUserPostMessage || 0x11CB || 4 || 0x11DB || 4 || 0x11DA || 4 || 0x11F1 || 4 <br />
|-<br />
|| NtUserPostThreadMessage || 0x11CC || 4 || 0x11DC || 4 || 0x11DB || 4 || 0x11F2 || 4 <br />
|-<br />
|| NtUserPrintWindow || 0x11CD || 3 || 0x11DD || 3 || 0x11DC || 3 || 0x11F3 || 3 <br />
|-<br />
|| NtUserProcessConnect || || || 0x11DE || 3 || 0x11DD || 3 || 0x11F4 || 2 <br />
|-<br />
|| NtUserQueryInformationThread || 0x11CE || 5 || 0x11DF || 5 || 0x11DE || 4 || 0x11F5 || 4 <br />
|-<br />
|| NtUserQueryInputContext || 0x11CF || 2 || 0x11E0 || 2 || 0x11DF || 2 || 0x11F6 || 2 <br />
|-<br />
|| NtUserQuerySendMessage || 0x11D0 || 1 || 0x11E1 || 1 || 0x11E0 || 1 || 0x11F7 || 1 <br />
|-<br />
|| NtUserQueryUserCounters || 0x11D1 || 5 || 0x11E2 || 5 || || || || <br />
|-<br />
|| NtUserQueryWindow || 0x11D2 || 2 || 0x11E3 || 2 || 0x11E1 || 2 || 0x11F8 || 2 <br />
|-<br />
|| NtUserRealChildWindowFromPoint || 0x11D3 || 3 || 0x11E4 || 3 || 0x11E2 || 3 || 0x11F9 || 3 <br />
|-<br />
|| NtUserRealInternalGetMessage || 0x11D4 || 4 || 0x11E5 || 6 || 0x11E3 || 6 || 0x11FA || 6 <br />
|-<br />
|| NtUserRealWaitMessageEx || || || 0x11E6 || 2 || 0x11E4 || 2 || 0x11FB || 2 <br />
|-<br />
|| NtUserRedrawWindow || || || 0x11E7 || 4 || 0x11E5 || 4 || 0x11FC || 4 <br />
|-<br />
|| NtUserRegisterClassExWOW || 0x11D5 || 6 || 0x11E8 || 7 || 0x11E6 || 7 || 0x11FD || 7 <br />
|-<br />
|| NtUserRegisterErrorReportingDialog || || || || || || || 0x11FE || 2 <br />
|-<br />
|| NtUserRegisterUserApiHook || || || 0x11E9 || 2 || 0x11E7 || 4 || 0x11FF || 4 <br />
|-<br />
|| NtUserRegisterHotKey || 0x11D6 || 4 || 0x11EA || 4 || 0x11E8 || 4 || 0x1200 || 4 <br />
|-<br />
|| NtUserRegisterRawInputDevices || || || 0x11EB || 3 || 0x11E9 || 3 || 0x1201 || 3 <br />
|-<br />
|| NtUserRegisterTasklist || 0x11D7 || 1 || 0x11EC || 1 || 0x11EA || 1 || 0x1202 || 1 <br />
|-<br />
|| NtUserRegisterWindowMessage || 0x11D8 || 1 || 0x11ED || 1 || 0x11EB || 1 || 0x1203 || 1 <br />
|-<br />
|| NtUserRemoveClipboardFormatListener || || || || || || || 0x1204 || 1 <br />
|-<br />
|| NtUserRemoveMenu || 0x11D9 || 3 || 0x11EE || 3 || 0x11EC || 3 || 0x1205 || 3 <br />
|-<br />
|| NtUserRemoveProp || 0x11DA || 2 || 0x11EF || 2 || 0x11ED || 2 || 0x1206 || 2 <br />
|-<br />
|| NtUserResolveDesktop || 0x11DB || 4 || 0x11F0 || 4 || 0x11EE || 4 || 0x1207 || 4 <br />
|-<br />
|| NtUserResolveDesktopForWOW || 0x11DC || 1 || 0x11F1 || 1 || 0x11EF || 1 || 0x1208 || 1 <br />
|-<br />
|| NtUserSBGetParms || 0x11DD || 4 || 0x11F2 || 4 || 0x11F0 || 4 || 0x1209 || 4 <br />
|-<br />
|| NtUserScrollDC || 0x11DE || 7 || 0x11F3 || 7 || 0x11F1 || 7 || 0x120A || 7 <br />
|-<br />
|| NtUserScrollWindowEx || 0x11DF || 8 || 0x11F4 || 8 || 0x11F2 || 8 || 0x120B || 8 <br />
|-<br />
|| NtUserSelectPalette || 0x11E0 || 3 || 0x11F5 || 3 || 0x11F3 || 3 || 0x120C || 3 <br />
|-<br />
|| NtUserSendInput || 0x11E1 || 3 || 0x11F6 || 3 || 0x11F4 || 3 || 0x120D || 3 <br />
|-<br />
|| NtUserSendMessageCallback || 0x11E2 || 6 || || || || || || <br />
|-<br />
|| NtUserSendNotifyMessage || 0x11E3 || 4 || || || || || || <br />
|-<br />
|| NtUserSetActiveWindow || 0x11E4 || 1 || 0x11F7 || 1 || 0x11F5 || 1 || 0x120E || 1 <br />
|-<br />
|| NtUserSetAppImeLevel || 0x11E5 || 2 || 0x11F8 || 2 || 0x11F6 || 2 || 0x120F || 2 <br />
|-<br />
|| NtUserSetCapture || 0x11E6 || 1 || 0x11F9 || 1 || 0x11F7 || 1 || 0x1210 || 1 <br />
|-<br />
|| NtUserSetClassLong || 0x11E7 || 4 || 0x11FA || 4 || 0x11F8 || 4 || 0x1211 || 4 <br />
|-<br />
|| NtUserSetClassWord || 0x11E8 || 3 || 0x11FB || 3 || 0x11F9 || 3 || 0x1212 || 3 <br />
|-<br />
|| NtUserSetClipboardData || 0x11E9 || 3 || 0x11FC || 3 || 0x11FA || 3 || 0x1213 || 3 <br />
|-<br />
|| NtUserSetClipboardViewer || 0x11EA || 1 || 0x11FD || 1 || 0x11FB || 1 || 0x1214 || 1 <br />
|-<br />
|| NtUserSetConsoleReserveKeys || 0x11EB || 2 || 0x11FE || 2 || 0x11FC || 2 || 0x1215 || 2 <br />
|-<br />
|| NtUserSetCursor || 0x11EC || 1 || 0x11FF || 1 || 0x11FD || 1 || 0x1216 || 1 <br />
|-<br />
|| NtUserSetCursorContents || 0x11ED || 2 || 0x1200 || 2 || 0x11FE || 2 || 0x1217 || 2 <br />
|-<br />
|| NtUserSetCursorIconData || 0x11EE || 4 || 0x1201 || 4 || 0x11FF || 4 || 0x1218 || 4 <br />
|-<br />
|| NtUserSetDbgTag || 0x11EF || 2 || 0x1202 || 2 || || || || <br />
|-<br />
|| NtUserSetFocus || 0x11F0 || 1 || 0x1203 || 1 || 0x1200 || 1 || 0x1219 || 1 <br />
|-<br />
|| NtUserSetImeHotKey || 0x11F1 || 5 || 0x1204 || 5 || 0x1201 || 5 || 0x121A || 5 <br />
|-<br />
|| NtUserSetImeInfoEx || 0x11F2 || 1 || 0x1205 || 1 || 0x1202 || 1 || 0x121B || 1 <br />
|-<br />
|| NtUserSetImeOwnerWindow || 0x11F3 || 2 || 0x1206 || 2 || 0x1203 || 2 || 0x121C || 2 <br />
|-<br />
|| NtUserSetInformationProcess || 0x11F4 || 4 || 0x1207 || 4 || 0x1204 || 4 || 0x121D || 4 <br />
|-<br />
|| NtUserSetInformationThread || 0x11F5 || 4 || 0x1208 || 4 || 0x1205 || 4 || 0x121E || 4 <br />
|-<br />
|| NtUserSetInternalWindowPos || 0x11F6 || 4 || 0x1209 || 4 || 0x1206 || 4 || 0x121F || 4 <br />
|-<br />
|| NtUserSetKeyboardState || 0x11F7 || 1 || 0x120A || 1 || 0x1207 || 1 || 0x1220 || 1 <br />
|-<br />
|| NtUserSetLogonNotifyWindow || 0x11F8 || 1 || 0x120B || 1 || 0x1208 || 1 || || <br />
|-<br />
|| NtUserSetMenu || 0x11F9 || 3 || 0x120C || 3 || 0x1209 || 3 || 0x1221 || 3 <br />
|-<br />
|| NtUserSetMenuContextHelpId || 0x11FA || 2 || 0x120D || 2 || 0x120A || 2 || 0x1222 || 2 <br />
|-<br />
|| NtUserSetMenuDefaultItem || 0x11FB || 3 || 0x120E || 3 || 0x120B || 3 || 0x1223 || 3 <br />
|-<br />
|| NtUserSetMenuFlagRtoL || 0x11FC || 1 || 0x120F || 1 || 0x120C || 1 || 0x1224 || 1 <br />
|-<br />
|| NtUserSetObjectInformation || 0x11FD || 4 || 0x1210 || 4 || 0x120D || 4 || 0x1225 || 4 <br />
|-<br />
|| NtUserSetParent || 0x11FE || 2 || 0x1211 || 2 || 0x120E || 2 || 0x1226 || 2 <br />
|-<br />
|| NtUserSetProcessWindowStation || 0x11FF || 1 || 0x1212 || 1 || 0x120F || 1 || 0x1227 || 1 <br />
|-<br />
|| NtUserSetProp || 0x1200 || 3 || 0x1213 || 3 || 0x1210 || 3 || 0x1228 || 2 <br />
|-<br />
|| NtUserSetRipFlags || 0x1201 || 2 || 0x1214 || 2 || || || 0x1229 || 3 <br />
|-<br />
|| NtUserSetScrollInfo || 0x1202 || 4 || 0x1215 || 4 || 0x1211 || 4 || 0x122A || 4 <br />
|-<br />
|| NtUserSetShellWindowEx || 0x1203 || 2 || 0x1216 || 2 || 0x1212 || 2 || 0x122B || 2 <br />
|-<br />
|| NtUserSetSysColors || 0x1204 || 4 || 0x1217 || 4 || 0x1213 || 4 || 0x122C || 4 <br />
|-<br />
|| NtUserSetSystemCursor || 0x1205 || 2 || 0x1218 || 2 || 0x1214 || 2 || 0x122D || 2 <br />
|-<br />
|| NtUserSetSystemMenu || 0x1206 || 2 || 0x1219 || 2 || 0x1215 || 2 || 0x122E || 2 <br />
|-<br />
|| NtUserSetSystemTimer || 0x1207 || 4 || 0x121A || 4 || 0x1216 || 4 || 0x122F || 3 <br />
|-<br />
|| NtUserSetThreadDesktop || 0x1208 || 1 || 0x121B || 1 || 0x1217 || 1 || 0x1230 || 1 <br />
|-<br />
|| NtUserSetThreadLayoutHandles || 0x1209 || 2 || 0x121C || 2 || 0x1218 || 2 || 0x1231 || 2 <br />
|-<br />
|| NtUserSetThreadState || 0x120A || 2 || 0x121D || 2 || 0x1219 || 2 || 0x1232 || 2 <br />
|-<br />
|| NtUserSetTimer || 0x120B || 4 || 0x121E || 4 || 0x121A || 4 || 0x1233 || 4 <br />
|-<br />
|| NtUserSetProcessDPIAware || || || || || || || 0x1234 || 0 <br />
|-<br />
|| NtUserSetWindowFNID || 0x120C || 2 || 0x121F || 2 || 0x121B || 2 || 0x1235 || 2 <br />
|-<br />
|| NtUserSetWindowLong || 0x120D || 4 || 0x1220 || 4 || 0x121C || 4 || 0x1236 || 4 <br />
|-<br />
|| NtUserSetWindowPlacement || 0x120E || 2 || 0x1221 || 2 || 0x121D || 2 || 0x1237 || 2 <br />
|-<br />
|| NtUserSetWindowPos || 0x120F || 7 || 0x1222 || 7 || 0x121E || 7 || 0x1238 || 7 <br />
|-<br />
|| NtUserSetWindowRgn || 0x1210 || 3 || 0x1223 || 3 || 0x121F || 3 || 0x1239 || 3 <br />
|-<br />
|| NtUserGetWindowRgnEx || || || || || || || 0x123A || 3 <br />
|-<br />
|| NtUserSetWindowRgnEx || || || || || || || 0x123B || 3 <br />
|-<br />
|| NtUserSetWindowsHookAW || 0x1211 || 3 || 0x1224 || 3 || 0x1220 || 3 || 0x123C || 3 <br />
|-<br />
|| NtUserSetWindowsHookEx || 0x1212 || 6 || 0x1225 || 6 || 0x1221 || 6 || 0x123D || 6 <br />
|-<br />
|| NtUserSetWindowStationUser || 0x1213 || 4 || 0x1226 || 4 || 0x1222 || 4 || 0x123E || 4 <br />
|-<br />
|| NtUserSetWindowWord || 0x1214 || 3 || 0x1227 || 3 || 0x1223 || 3 || 0x123F || 3 <br />
|-<br />
|| NtUserSetWinEventHook || 0x1215 || 8 || 0x1228 || 8 || 0x1224 || 8 || 0x1240 || 8 <br />
|-<br />
|| NtUserShowCaret || 0x1216 || 1 || 0x1229 || 1 || 0x1225 || 1 || 0x1241 || 1 <br />
|-<br />
|| NtUserShowScrollBar || 0x1217 || 3 || 0x122A || 3 || 0x1226 || 3 || 0x1242 || 3 <br />
|-<br />
|| NtUserShowWindow || 0x1218 || 2 || 0x122B || 2 || 0x1227 || 2 || 0x1243 || 2 <br />
|-<br />
|| NtUserShowWindowAsync || 0x1219 || 2 || 0x122C || 2 || 0x1228 || 2 || 0x1244 || 2 <br />
|-<br />
|| NtUserSoundSentry || 0x121A || 0 || 0x122D || 0 || 0x1229 || 0 || 0x1245 || 0 <br />
|-<br />
|| NtUserSwitchDesktop || 0x121B || 1 || 0x122E || 1 || 0x122A || 1 || 0x1246 || 2 <br />
|-<br />
|| NtUserSystemParametersInfo || 0x121C || 4 || 0x122F || 4 || 0x122B || 4 || 0x1247 || 4 <br />
|-<br />
|| NtUserTestForInteractiveUser || 0x121D || 1 || 0x1230 || 1 || 0x122C || 1 || 0x1248 || 1 <br />
|-<br />
|| NtUserThunkedMenuInfo || 0x121E || 2 || 0x1231 || 2 || 0x122D || 2 || 0x1249 || 2 <br />
|-<br />
|| NtUserThunkedMenuItemInfo || 0x121F || 6 || 0x1232 || 6 || 0x122E || 6 || 0x124A || 6 <br />
|-<br />
|| NtUserToUnicodeEx || 0x1220 || 7 || 0x1233 || 7 || 0x122F || 7 || 0x124B || 7 <br />
|-<br />
|| NtUserTrackMouseEvent || 0x1221 || 1 || 0x1234 || 1 || 0x1230 || 1 || 0x124C || 1 <br />
|-<br />
|| NtUserTrackPopupMenuEx || 0x1222 || 6 || 0x1235 || 6 || 0x1231 || 6 || 0x124D || 6 <br />
|-<br />
|| NtUserCalcMenuBar || || || 0x1236 || 5 || 0x1232 || 5 || 0x124E || 5 <br />
|-<br />
|| NtUserPaintMenuBar || || || 0x1237 || 6 || 0x1233 || 6 || 0x124F || 6 <br />
|-<br />
|| NtUserTranslateAccelerator || 0x1223 || 3 || 0x1238 || 3 || 0x1234 || 3 || 0x1250 || 3 <br />
|-<br />
|| NtUserTranslateMessage || 0x1224 || 2 || 0x1239 || 2 || 0x1235 || 2 || 0x1251 || 2 || 0x100d || ?<br />
|-<br />
|| NtUserUnhookWindowsHookEx || 0x1225 || 1 || 0x123A || 1 || 0x1236 || 1 || 0x1252 || 1 <br />
|-<br />
|| NtUserUnhookWinEvent || 0x1226 || 1 || 0x123B || 1 || 0x1237 || 1 || 0x1253 || 1 <br />
|-<br />
|| NtUserUnloadKeyboardLayout || 0x1227 || 1 || 0x123C || 1 || 0x1238 || 1 || 0x1254 || 1 <br />
|-<br />
|| NtUserUnlockWindowStation || 0x1228 || 1 || 0x123D || 1 || 0x1239 || 1 || 0x1255 || 1 <br />
|-<br />
|| NtUserUnregisterClass || 0x1229 || 3 || 0x123E || 3 || 0x123A || 3 || 0x1256 || 3 <br />
|-<br />
|| NtUserUnregisterUserApiHook || || || 0x123F || 0 || 0x123B || 0 || 0x1257 || 0 <br />
|-<br />
|| NtUserUnregisterHotKey || 0x122A || 2 || 0x1240 || 2 || 0x123C || 2 || 0x1258 || 2 <br />
|-<br />
|| NtUserUpdateInputContext || 0x122B || 3 || 0x1241 || 3 || 0x123D || 3 || 0x1259 || 3 <br />
|-<br />
|| NtUserUpdateInstance || 0x122C || 3 || 0x1242 || 3 || 0x123E || 3 || 0x125A || 3 <br />
|-<br />
|| NtUserUpdateLayeredWindow || 0x122D || 9 || 0x1243 || 9 || 0x123F || 10 || 0x125B || 10 <br />
|-<br />
|| NtUserGetLayeredWindowAttributes || || || 0x1244 || 4 || 0x1240 || 4 || 0x125C || 4 <br />
|-<br />
|| NtUserSetLayeredWindowAttributes || 0x122E || 4 || 0x1245 || 4 || 0x1241 || 4 || 0x125D || 4 <br />
|-<br />
|| NtUserUpdatePerUserSystemParameters || 0x122F || 2 || 0x1246 || 2 || 0x1242 || 2 || 0x125E || 1 <br />
|-<br />
|| NtUserUserHandleGrantAccess || 0x1230 || 3 || 0x1247 || 3 || 0x1243 || 3 || 0x125F || 3 <br />
|-<br />
|| NtUserValidateHandleSecure || 0x1231 || 1 || 0x1248 || 2 || 0x1244 || 1 || 0x1260 || 1 <br />
|-<br />
|| NtUserValidateRect || 0x1232 || 2 || 0x1249 || 2 || 0x1245 || 2 || 0x1261 || 2 <br />
|-<br />
|| NtUserValidateTimerCallback || 0x127F || 3 || 0x124A || 3 || 0x1246 || 1 || 0x1262 || 1 <br />
|-<br />
|| NtUserVkKeyScanEx || 0x1233 || 3 || 0x124B || 3 || 0x1247 || 3 || 0x1263 || 3 <br />
|-<br />
|| NtUserWaitForInputIdle || 0x1234 || 3 || 0x124C || 3 || 0x1248 || 3 || 0x1264 || 3 <br />
|-<br />
|| NtUserWaitForMsgAndEvent || 0x1235 || 1 || 0x124D || 1 || 0x1249 || 1 || 0x1265 || 1 <br />
|-<br />
|| NtUserWaitMessage || 0x1236 || 0 || 0x124E || 0 || 0x124A || 0 || 0x1266 || 0 || 0x100c || ?<br />
|-<br />
|| NtUserWin32PoolAllocationStats || 0x1237 || 6 || 0x124F || 6 || 0x124B || 6 || 0x1267 || 6 || 0x1301 || 6<br />
|-<br />
|| NtUserWindowFromPhysicalPoint || || || || || || || 0x1268 || 2 <br />
|-<br />
|| NtUserWindowFromPoint || 0x1238 || 2 || 0x1250 || 2 || 0x124C || 2 || 0x1269 || 2 <br />
|-<br />
|| NtUserYieldTask || 0x1239 || 0 || 0x1251 || 0 || 0x124D || 0 || 0x126A || 0 <br />
|-<br />
|| NtUserRemoteConnect || 0x123A || 3 || 0x1252 || 3 || 0x124E || 3 || 0x126B || 3 <br />
|-<br />
|| NtUserRemoteRedrawRectangle || 0x123B || 4 || 0x1253 || 4 || 0x124F || 4 || 0x126C || 4 <br />
|-<br />
|| NtUserRemoteRedrawScreen || 0x123C || 0 || 0x1254 || 0 || 0x1250 || 0 || 0x126D || 0 <br />
|-<br />
|| NtUserRemoteStopScreenUpdates || 0x123D || 0 || 0x1255 || 0 || 0x1251 || 0 || 0x126E || 0 <br />
|-<br />
|| NtUserCtxDisplayIOCtl || 0x123E || 3 || 0x1256 || 3 || 0x1252 || 3 || 0x126F || 3 <br />
|-<br />
|| NtUserRegisterSessionPort || || || || || || || 0x1270 || 1 <br />
|-<br />
|| NtUserUnregisterSessionPort || || || || || || || 0x1271 || 0 <br />
|-<br />
|| NtUserUpdateWindowTransform || || || || || || || 0x1272 || 3 <br />
|-<br />
|| NtUserDwmStartRedirection || || || || || || || 0x1273 || 1 <br />
|-<br />
|| NtUserDwmStopRedirection || || || || || || || 0x1274 || 0 <br />
|-<br />
|| NtUserDwmHintDxUpdate || || || || || || || 0x1275 || 2 <br />
|-<br />
|| NtUserDwmGetDxRgn || || || || || || || 0x1276 || 3 <br />
|-<br />
|| NtUserGetWindowMinimizeRect || || || || || || || 0x1277 || 2 <br />
|-<br />
|| NtGdiEngAssociateSurface || 0X123F || 3 || 0x1257 || 3 || 0x1253 || 3 || 0x1278 || 3 <br />
|-<br />
|| NtGdiEngCreateBitmap || 0X1240 || 6 || 0x1258 || 6 || 0x1254 || 6 || 0x1279 || 6 <br />
|-<br />
|| NtGdiEngCreateDeviceSurface || 0X1241 || 4 || 0x1259 || 4 || 0x1255 || 4 || 0x127A || 4 <br />
|-<br />
|| NtGdiEngCreateDeviceBitmap || 0X1242 || 4 || 0x125A || 4 || 0x1256 || 4 || 0x127B || 4 <br />
|-<br />
|| NtGdiEngCreatePalette || 0X1243 || 6 || 0x125B || 6 || 0x1257 || 6 || 0x127C || 6 <br />
|-<br />
|| NtGdiEngComputeGlyphSet || 0X1244 || 3 || 0x125C || 3 || 0x1258 || 3 || 0x127D || 3 <br />
|-<br />
|| NtGdiEngCopyBits || 0x1245 || 6 || 0x125D || 6 || 0x1259 || 6 || 0x127E || 6 <br />
|-<br />
|| NtGdiEngDeletePalette || 0X1246 || 1 || 0x125E || 1 || 0x125A || 1 || 0x127F || 1 <br />
|-<br />
|| NtGdiEngDeleteSurface || 0X1247 || 1 || 0x125F || 1 || 0x125B || 1 || 0x1280 || 1 <br />
|-<br />
|| NtGdiEngEraseSurface || 0X1248 || 3 || 0x1260 || 3 || 0x125C || 3 || 0x1281 || 3 <br />
|-<br />
|| NtGdiEngUnlockSurface || 0X1249 || 1 || 0x1261 || 1 || 0x125D || 1 || 0x1282 || 1 <br />
|-<br />
|| NtGdiEngLockSurface || 0X124A || 1 || 0x1262 || 1 || 0x125E || 1 || 0x1283 || 1 <br />
|-<br />
|| NtGdiEngBitBlt || 0x124B || 11 || 0x1263 || 11 || 0x125F || 11 || 0x1284 || 11 <br />
|-<br />
|| NtGdiEngStretchBlt || 0x124C || 11 || 0x1264 || 11 || 0x1260 || 11 || 0x1285 || 11 <br />
|-<br />
|| NtGdiEngPlgBlt || 0x124D || 11 || 0x1265 || 11 || 0x1261 || 11 || 0x1286 || 11 <br />
|-<br />
|| NtGdiEngMarkBandingSurface || 0X124E || 1 || 0x1266 || 1 || 0x1262 || 1 || 0x1287 || 1 <br />
|-<br />
|| NtGdiEngStrokePath || 0x124F || 8 || 0x1267 || 8 || 0x1263 || 8 || 0x1288 || 8 <br />
|-<br />
|| NtGdiEngFillPath || 0x1250 || 7 || 0x1268 || 7 || 0x1264 || 7 || 0x1289 || 7 <br />
|-<br />
|| NtGdiEngStrokeAndFillPath || 0x1251 || 10 || 0x1269 || 10 || 0x1265 || 10 || 0x128A || 10 <br />
|-<br />
|| NtGdiEngPaint || 0X1252 || 5 || 0x126A || 5 || 0x1266 || 5 || 0x128B || 5 <br />
|-<br />
|| NtGdiEngLineTo || 0x1253 || 9 || 0x126B || 9 || 0x1267 || 9 || 0x128C || 9 <br />
|-<br />
|| NtGdiEngAlphaBlend || 0X1254 || 7 || 0x126C || 7 || 0x1268 || 7 || 0x128D || 7 <br />
|-<br />
|| NtGdiEngGradientFill || 0x1255 || 10 || 0x126D || 10 || 0x1269 || 10 || 0x128E || 10 <br />
|-<br />
|| NtGdiEngTransparentBlt || 0x1256 || 8 || 0x126E || 8 || 0x126A || 8 || 0x128F || 8 <br />
|-<br />
|| NtGdiEngTextOut || 0x1257 || 10 || 0x126F || 10 || 0x126B || 10 || 0x1290 || 10 <br />
|-<br />
|| NtGdiEngStretchBltROP || 0x1258 || 13 || 0x1270 || 13 || 0x126C || 13 || 0x1291 || 13 <br />
|-<br />
|| NtGdiXLATEOBJ_cGetPalette || 0X1259 || 4 || 0x1271 || 4 || 0x126D || 4 || 0x1292 || 4 <br />
|-<br />
|| NtGdiXLATEOBJ_iXlate || 0X125A || 2 || 0x1272 || 2 || 0x126E || 2 || 0x1293 || 2 <br />
|-<br />
|| NtGdiXLATEOBJ_hGetColorTransform || 0X125B || 1 || 0x1273 || 1 || 0x126F || 1 || 0x1294 || 1 <br />
|-<br />
|| NtGdiCLIPOBJ_bEnum || 0X125C || 3 || 0x1274 || 3 || 0x1270 || 3 || 0x1295 || 3 <br />
|-<br />
|| NtGdiCLIPOBJ_cEnumStart || 0X125D || 5 || 0x1275 || 5 || 0x1271 || 5 || 0x1296 || 5 <br />
|-<br />
|| NtGdiCLIPOBJ_ppoGetPath || 0X125E || 1 || 0x1276 || 1 || 0x1272 || 1 || 0x1297 || 1 <br />
|-<br />
|| NtGdiEngDeletePath || 0X125F || 1 || 0x1277 || 1 || 0x1273 || 1 || 0x1298 || 1 <br />
|-<br />
|| NtGdiEngCreateClip || 0X1260 || 0 || 0x1278 || 0 || 0x1274 || 0 || 0x1299 || 0 <br />
|-<br />
|| NtGdiEngDeleteClip || 0X1261 || 1 || 0x1279 || 1 || 0x1275 || 1 || 0x129A || 1 <br />
|-<br />
|| NtGdiBRUSHOBJ_ulGetBrushColor || 0X1262 || 1 || 0x127A || 1 || 0x1276 || 1 || 0x129B || 1 <br />
|-<br />
|| NtGdiBRUSHOBJ_pvAllocRbrush || 0X1263 || 2 || 0x127B || 2 || 0x1277 || 2 || 0x129C || 2 <br />
|-<br />
|| NtGdiBRUSHOBJ_pvGetRbrush || 0X1264 || 1 || 0x127C || 1 || 0x1278 || 1 || 0x129D || 1 <br />
|-<br />
|| NtGdiBRUSHOBJ_hGetColorTransform || 0X1265 || 1 || 0x127D || 1 || 0x1279 || 1 || 0x129E || 1 <br />
|-<br />
|| NtGdiXFORMOBJ_bApplyXform || 0X1266 || 5 || 0x127E || 5 || 0x127A || 5 || 0x129F || 5 <br />
|-<br />
|| NtGdiXFORMOBJ_iGetXform || 0X1267 || 2 || 0x127F || 2 || 0x127B || 2 || 0x12A0 || 2 <br />
|-<br />
|| NtGdiFONTOBJ_vGetInfo || 0X1268 || 3 || 0x1280 || 3 || 0x127C || 3 || 0x12A1 || 3 <br />
|-<br />
|| NtGdiFONTOBJ_pxoGetXform || 0X1269 || 1 || 0x1281 || 1 || 0x127D || 1 || 0x12A2 || 1 <br />
|-<br />
|| NtGdiFONTOBJ_cGetGlyphs || 0X126A || 5 || 0x1282 || 5 || 0x127E || 5 || 0x12A3 || 5 <br />
|-<br />
|| NtGdiFONTOBJ_pifi || 0X126B || 1 || 0x1283 || 1 || 0x127F || 1 || 0x12A4 || 1 <br />
|-<br />
|| NtGdiFONTOBJ_pfdg || 0X126C || 1 || 0x1284 || 1 || 0x1280 || 1 || 0x12A5 || 1 <br />
|-<br />
|| NtGdiFONTOBJ_pQueryGlyphAttrs || 0X126D || 2 || 0x1285 || 2 || 0x1281 || 2 || 0x12A6 || 2 <br />
|-<br />
|| NtGdiFONTOBJ_pvTrueTypeFontFile || 0x126E || 2 || 0x1286 || 2 || 0x1282 || 2 || 0x12A7 || 2 <br />
|-<br />
|| NtGdiFONTOBJ_cGetAllGlyphHandles || 0x126F || 2 || 0x1287 || 2 || 0x1283 || 2 || 0x12A8 || 2 <br />
|-<br />
|| NtGdiSTROBJ_bEnum || 0x1270 || 3 || 0x1288 || 3 || 0x1284 || 3 || 0x12A9 || 3 <br />
|-<br />
|| NtGdiSTROBJ_bEnumPositionsOnly || 0x1271 || 3 || 0x1289 || 3 || 0x1285 || 3 || 0x12AA || 3 <br />
|-<br />
|| NtGdiSTROBJ_bGetAdvanceWidths || 0x1272 || 4 || 0x128A || 4 || 0x1286 || 4 || 0x12AB || 4 <br />
|-<br />
|| NtGdiSTROBJ_vEnumStart || 0x1273 || 1 || 0x128B || 1 || 0x1287 || 1 || 0x12AC || 1 <br />
|-<br />
|| NtGdiSTROBJ_dwGetCodePage || 0x1274 || 1 || 0x128C || 1 || 0x1288 || 1 || 0x12AD || 1 <br />
|-<br />
|| NtGdiPATHOBJ_vGetBounds || 0x1275 || 2 || 0x128D || 2 || 0x1289 || 2 || 0x12AE || 2 <br />
|-<br />
|| NtGdiPATHOBJ_bEnum || 0x1276 || 2 || 0x128E || 2 || 0x128A || 2 || 0x12AF || 2 <br />
|-<br />
|| NtGdiPATHOBJ_vEnumStart || 0x1277 || 1 || 0x128F || 1 || 0x128B || 1 || 0x12B0 || 1 <br />
|-<br />
|| NtGdiPATHOBJ_vEnumStartClipLines || 0x1278 || 4 || 0x1290 || 4 || 0x128C || 4 || 0x12B1 || 4 <br />
|-<br />
|| NtGdiPATHOBJ_bEnumClipLines || 0x1279 || 3 || 0x1291 || 3 || 0x128D || 3 || 0x12B2 || 3 <br />
|-<br />
|| NtGdiGetDhpdev || 0x127A || 1 || 0x1292 || 1 || 0x128E || 1 || 0x12B3 || 1 <br />
|-<br />
|| NtGdiEngCheckAbort || 0x127B || 1 || 0x1293 || 1 || 0x128F || 1 || 0x12B4 || 1 <br />
|-<br />
|| NtGdiHT_Get8BPPFormatPalette || 0x127C || 4 || 0x1294 || 4 || 0x1290 || 4 || 0x12B5 || 4 <br />
|-<br />
|| NtGdiHT_Get8BPPMaskPalette || 0x127D || 6 || 0x1295 || 6 || 0x1291 || 6 || 0x12B6 || 6 <br />
|-<br />
|| NtGdiUpdateTransform || 0x127E || 1 || 0x1296 || 1 || 0x1292 || 1 || 0x12B7 || 1 <br />
|-<br />
|| NtGdiSetPUMPDOBJ || || || 0x1297 || 4 || 0x1293 || 4 || 0x12B8 || 4 <br />
|-<br />
|| NtGdiBRUSHOBJ_DeleteRbrush || || || 0x1298 || 2 || 0x1294 || 2 || 0x12B9 || 2 <br />
|-<br />
|| NtGdiUMPDEngFreeUserMem || || || 0x1299 || 1 || 0x1295 || 1 || 0x12BA || 1 <br />
|-<br />
|| NtGdiDrawStream || || || 0x129A || 3 || 0x1296 || 3 || 0x12BB || 3 <br />
|-<br />
|| NtGdiDwmGetDirtyRgn || || || || || || || 0x12BC || 5 <br />
|-<br />
|| NtGdiDwmGetSurfaceData || || || || || || || 0x12BD || 2 <br />
|-<br />
|| NtGdiDdDDICreateAllocation || || || || || || || 0x12BE || 1 <br />
|-<br />
|| NtGdiDdDDIQueryResourceInfo || || || || || || || 0x12BF || 1 <br />
|-<br />
|| NtGdiDdDDIOpenResource || || || || || || || 0x12C0 || 1 <br />
|-<br />
|| NtGdiDdDDIDestroyAllocation || || || || || || || 0x12C1 || 1 <br />
|-<br />
|| NtGdiDdDDISetAllocationPriority || || || || || || || 0x12C2 || 1 <br />
|-<br />
|| NtGdiDdDDIQueryAllocationResidency || || || || || || || 0x12C3 || 1 <br />
|-<br />
|| NtGdiDdDDICreateDevice || || || || || || || 0x12C4 || 1 <br />
|-<br />
|| NtGdiDdDDIDestroyDevice || || || || || || || 0x12C5 || 1 <br />
|-<br />
|| NtGdiDdDDICreateContext || || || || || || || 0x12C6 || 1 <br />
|-<br />
|| NtGdiDdDDIDestroyContext || || || || || || || 0x12C7 || 1 <br />
|-<br />
|| NtGdiDdDDICreateSynchronizationObject || || || || || || || 0x12C8 || 1 <br />
|-<br />
|| NtGdiDdDDIDestroySynchronizationObject || || || || || || || 0x12C9 || 1 <br />
|-<br />
|| NtGdiDdDDIWaitForSynchronizationObject || || || || || || || 0x12CA || 1 <br />
|-<br />
|| NtGdiDdDDISignalSynchronizationObject || || || || || || || 0x12CB || 1 <br />
|-<br />
|| NtGdiDdDDIGetRuntimeData || || || || || || || 0x12CC || 1 <br />
|-<br />
|| NtGdiDdDDIQueryAdapterInfo || || || || || || || 0x12CD || 1 <br />
|-<br />
|| NtGdiDdDDILock || || || || || || || 0x12CE || 1 <br />
|-<br />
|| NtGdiDdDDIUnlock || || || || || || || 0x12CF || 1 <br />
|-<br />
|| NtGdiDdDDIGetDisplayModeList || || || || || || || 0x12D0 || 1 <br />
|-<br />
|| NtGdiDdDDISetDisplayMode || || || || || || || 0x12D1 || 1 <br />
|-<br />
|| NtGdiDdDDIGetMultisampleMethodList || || || || || || || 0x12D2 || 1 <br />
|-<br />
|| NtGdiDdDDIPresent || || || || || || || 0x12D3 || 1 <br />
|-<br />
|| NtGdiDdDDIRender || || || || || || || 0x12D4 || 1 <br />
|-<br />
|| NtGdiDdDDIOpenAdapterFromDeviceName || || || || || || || 0x12D5 || 1 <br />
|-<br />
|| NtGdiDdDDIOpenAdapterFromHdc || || || || || || || 0x12D6 || 1 <br />
|-<br />
|| NtGdiDdDDICloseAdapter || || || || || || || 0x12D7 || 1 <br />
|-<br />
|| NtGdiDdDDIGetSharedPrimaryHandle || || || || || || || 0x12D8 || 1 <br />
|-<br />
|| NtGdiDdDDIEscape || || || || || || || 0x12D9 || 1 <br />
|-<br />
|| NtGdiDdDDIQueryStatistics || || || || || || || 0x12DA || 1 <br />
|-<br />
|| NtGdiDdDDISetVidPnSourceOwner || || || || || || || 0x12DB || 1 <br />
|-<br />
|| NtGdiDdDDIGetPresentHistory || || || || || || || 0x12DC || 1 <br />
|-<br />
|| NtGdiDdDDICreateOverlay || || || || || || || 0x12DD || 1 <br />
|-<br />
|| NtGdiDdDDIUpdateOverlay || || || || || || || 0x12DE || 1 <br />
|-<br />
|| NtGdiDdDDIFlipOverlay || || || || || || || 0x12DF || 1 <br />
|-<br />
|| NtGdiDdDDIDestroyOverlay || || || || || || || 0x12E0 || 1 <br />
|-<br />
|| NtGdiDdDDIWaitForVerticalBlankEvent || || || || || || || 0x12E1 || 1 <br />
|-<br />
|| NtGdiDdDDISetGammaRamp || || || || || || || 0x12E2 || 1 <br />
|-<br />
|| NtGdiDdDDIGetDeviceState || || || || || || || 0x12E3 || 1 <br />
|-<br />
|| NtGdiDdDDICreateDCFromMemory || || || || || || || 0x12E4 || 1 <br />
|-<br />
|| NtGdiDdDDIDestroyDCFromMemory || || || || || || || 0x12E5 || 1 <br />
|-<br />
|| NtGdiDdDDISetContextSchedulingPriority || || || || || || || 0x12E6 || 1 <br />
|-<br />
|| NtGdiDdDDIGetContextSchedulingPriority || || || || || || || 0x12E7 || 1 <br />
|-<br />
|| NtGdiDdDDISetProcessSchedulingPriorityClass || || || || || || || 0x12E8 || 2 <br />
|-<br />
|| NtGdiDdDDIGetProcessSchedulingPriorityClass || || || || || || || 0x12E9 || 2 <br />
|-<br />
|| NtGdiDdDDIReleaseProcessVidPnSourceOwners || || || || || || || 0x12EA || 1 <br />
|-<br />
|| NtGdiDdDDIGetScanLine || || || || || || || 0x12EB || 1 <br />
|-<br />
|| NtGdiDdDDISetQueuedLimit || || || || || || || 0x12EC || 1 <br />
|-<br />
|| NtGdiDdDDIPollDisplayChildren || || || || || || || 0x12ED || 1 <br />
|-<br />
|| NtGdiDdDDIInvalidateActiveVidPn || || || || || || || 0x12EE || 1 <br />
|-<br />
|| NtGdiDdDDICheckOcclusion || || || || || || || 0x12EF || 1 <br />
|-<br />
|| NtGdiDdDDIWaitForIdle || || || || || || || 0x12F0 || 1 <br />
|-<br />
|| NtGdiDdDDICheckMonitorPowerState || || || || || || || 0x12F1 || 1 <br />
|-<br />
|| NtGdiDdDDICheckExclusiveOwnership || || || || || || || 0x12F2 || 0 <br />
|-<br />
|| NtGdiDdDDISetDisplayPrivateDriverFormat || || || || || || || 0x12F3 || 1 <br />
|-<br />
|| NtGdiDdDDISharedPrimaryLockNotification || || || || || || || 0x12F4 || 1 <br />
|-<br />
|| NtGdiDdDDISharedPrimaryUnLockNotification || || || || || || || 0x12F5 || 1 <br />
|-<br />
|| NtGdiMakeObjectXferable || || || || || 0x1297 || 2 || 0x12F6 || 2 <br />
|-<br />
|| NtGdiMakeObjectUnXferable || || || || || 0x1298 || 1 || 0x12F7 || 1 <br />
|-<br />
|| NtGdiGetNumberOfPhysicalMonitors || || || || || || || 0x12F8 || 2 <br />
|-<br />
|| NtGdiGetPhysicalMonitors || || || || || || || 0x12F9 || 4 <br />
|-<br />
|| NtGdiGetPhysicalMonitorDescription || || || || || || || 0x12FA || 3 <br />
|-<br />
|| NtGdiDestroyPhysicalMonitor || || || || || || || 0x12FB || 1 <br />
|-<br />
|| NtGdiDDCCIGetVCPFeature || || || || || || || 0x12FC || 5 <br />
|-<br />
|| NtGdiDDCCISetVCPFeature || || || || || || || 0x12FD || 3 <br />
|-<br />
|| NtGdiDDCCISaveCurrentSettings || || || || || || || 0x12FE || 1 <br />
|-<br />
|| NtGdiDDCCIGetCapabilitiesStringLength || || || || || || || 0x12FF || 2 <br />
|-<br />
|| NtGdiDDCCIGetCapabilitiesString || || || || || || || 0x1300 || 3 <br />
|-<br />
|| NtGdiDDCCIGetTimingReport || || || || || || || 0x1301 || 2 <br />
|-<br />
|| NtUserSetMirrorRendering || || || || || || || 0x1302 || 2 <br />
|-<br />
|| NtUserShowSystemCursor || || || || || || || 0x1303 || 1 <br />
|-<br />
|| NtUserGetProp || || || || || || || || || 0x100e || ?<br />
|}<br />
<br />
===Remarks===<br />
NtGdiUnmapMemFont = NtGdiUMPDEngFreeUserMem, see http://inside.iatp.org.ua/Calllist.html</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Supported_Hardware/Network_cards&diff=28874
Supported Hardware/Network cards
2010-10-15T02:22:30Z
<p>CycleGeek: Windows names</p>
<hr />
<div>;[[Supported Hardware]]/[[Supported Hardware/Network cards|Network cards]]<br />
<br />
Please update this page with the status of each NIC that is tested. '''Try to test a Windows XP driver and if that fails try a Windows 2000 driver (but be sure to mention the failure of the XP driver in your comments).''' AS YOU CAN SEE, ITS LISTED ALPHABETICALLY, SO PLEASE COMPLY TO THIS ORDER.<br />
<br />
== Possible statuses ==<br />
<br />
{| cellpadding="3" cellspacing="0" border="1" style="border: gray solid 1px; border-collapse: collapse; background: #ececec;" | <br />
!Status <br />
|Description<br />
|-<br />
! {{works}} <br />
| Works without any major problems<br />
|-<br />
! {{not tested}} <br />
| No test has been performed.<br />
|-<br />
! {{failed}} <br />
| Fails to work or crashes ROS<br />
|}<br />
<br />
== Tested NICs ==<br />
<br />
{| class="sortable wikitable" border="1" cellpadding="3" cellspacing="0" style="font-size: 85%; border: gray solid 1px; border-collapse: collapse; width: 90%; text-align: left;" |<br />
|- style="text-align: center; background: #ececec;"<br />
! style="width: 20%; background: #cccccc;" | NIC<br />
! style="width: 16%;" | Chipset<br />
! style="width: 5%;" | Status<br />
! style="width: 5%;" | Revision<br />
! style="width: 38%;" | Comments<br />
! style="width: 6%; background: #cccccc;" | Tester<br />
! style="width: 10%;" | Driver Target OS<br />
|-<br />
! style="background: #ececec;" | 3COM 3C900-TPO EtherLink XL<br />
| Parallel tasking II Performance 40-0336-004<br />
! {{works}}<br />
! 41356<br />
| See bug 2 below, you need to use expand.exe on EL90XND5.SY_ and copy it to %windir%\system32\drivers.<br />
! [[user:Gabrielilardi|gabriel_it]]<br />
! Multisection INF (Windows 2000/Windows XP)<br />
|-<br />
! style="background: #ececec;" | 3COM 3C905B-TX-NM<br />
| Parallel tasking II Performance 40-0483-005<br />
! {{failed}}<br />
! 42095<br />
| ReactOS crashes after restart. See {{bug|4330}}. See bug 2 below, you need to use expand.exe on EL90XBC5.SY_ and copy it to %windir%\system32\drivers.<br />
! [[user:Gabrielilardi|gabriel_it]]<br />
! [http://www.3com.com/products/en_US/result.jsp?selected=all&sku=3C905B-TX-NM&sort=effdt&order=desc Multisection INF (Windows 2000/Windows XP)]<br />
<br />
|-<br />
! style="background: #ececec;" | 3COM 3C905B-TX-M<br />
| [http://www.3com.com/products/en_US/result.jsp?selected=all&sku=3C905B-TX-NM&sort=effdt&order=desc 3com] 920-ST06<br />
! {{works}}<br />
! 41235<br />
| Works using XP native driver.<br />
! [[user:Haos|Haos]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | 3COM 3C905CX-TX-M<br />
| [http://www.3com.com/swd/jsp/user/result.jsp?selected=all&sort=effdt&sku=3C905CX-TX-M&order=desc 3com] 920-ST06<br />
! {{failed}}<br />
! 48899<br />
| {{bug|4330}} <br />
! [[user:Netzimme|Netzimme]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | 3COM 3CSOHO100-TX (OfficeConnect FastEthernet)<br />
| [ftp://ftp.3com.com/pub/nic/3csoho100-tx/Sohown2k.exe 3com]<br />
! {{failed}}<br />
! 41722<br />
| See {{bug|4330}}. I only found Windows 9x and Windows 2000 Drivers.<br />
! [[user:Timitry|Timitry]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | Accton EN1207B-TX<br />
| [http://www.accton.com/support/driver.htm Accton] DECchip 21143<br />
! {{works}}<br />
! 41235<br />
| Works using XP native driver.<br />
! [[user:Haos|Haos]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | Accton EN1207D-TX<br />
| [http://www.accton.com/support/driver.htm Accton] MPX EN5038A1<br />
! {{failed}}<br />
! 41356<br />
| It installs but doesn't work. See {{bug|3796}} (see bug 1 below).<br />
! [[user:Gabrielilardi|gabriel_it]]<br />
! Windows 2000/Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | Accton EN1207D-TX / WOL<br />
| [http://www.accton.com/support/driver.htm Accton] MPX EN5038B<br />
! {{failed}}<br />
! 41356<br />
| It installs but doesn't work. (probably bug 1 below).<br />
! [[user:Gabrielilardi|gabriel_it]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | ADMtek AN983B <!--This board is genuine ADMtek, if you have XWAY™ AN983B, please add another entry--><br />
|[http://www.soft32.com/download_172686.html ADMTek] AN983B<br />
! {{works}}<br />
! 40588<br />
| It installs and works on real hardware, using Windows 2000 drivers.<br />
! [[User:Haos|Haos]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | AMD PCnet™-PRO<br />
| [http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_6629,00.html AMD] Am79C976<br />
! {{works}}<br />
! Missing<br />
| Works using our pcnet driver<br />
! Unknown<br />
! ReactOS<br />
<br />
|-<br />
! style="background: #ececec;" | AMD PCnet™-FAST III<br />
| [http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_6629,00.html AMD] Am79C973/Am79C975<br />
! {{works}}<br />
! Missing<br />
| Works using our pcnet driver<br />
! Unknown<br />
! ReactOS<br />
<br />
|-<br />
! style="background: #ececec;" | AMD PCnet™-FAST+<br />
| [http://www.amd.com/us-en/ConnectivitySolutions/ProductInformation/0,,50_2330_6629,00.html AMD] Am79C972<br />
! {{works}}<br />
! Missing<br />
| Works using our pcnet driver<br />
! Unknown<br />
! ReactOS<br />
<br />
|-<br />
! style="background: #ececec;" | Broadcom 440x 10/100<br />
|<br />
! {{works}}<br />
! 41291<br />
| Working using official XP drivers.<br />
! [[User:aicommander|aicom]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | Compex ReadyLINK RL100-TX/PCI<br />
| Compex RL2000-9881<br />
! {{failed}}<br />
! Missing<br />
| Compex own driver is too old, NDIS 3.0, see {{bug|4530}}.<br />
! [[User:Haos|Haos]]<br />
! <br />
<br />
|-<br />
! style="background: #ececec;" | Compex ReadyLINK RL2000-PCI<br />
| Compex RL2000-9881<br />
! {{works}}<br />
! Missing<br />
| Use Winbond W89C940 drivers (Compex ones have inf file way too old).<br />
! [[User:Haos|Haos]]<br />
! <br />
<br />
|-<br />
! style="background: #ececec;" | D-Link DFE-528TX<br />
| [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=14&PFid=6&Level=5&Conn=4 Realtek] RTL8139<br />
! {{failed}}<br />
! Missing<br />
| <br />
! [[User:Haos|Haos]]<br />
! <br />
<br />
|-<br />
! style="background: #ececec;" | D-Link DFE-530TX<br />
|<br />
! {{works}}<br />
! 40673<br />
| Working with builds >= 40673<br />
! Unknown<br />
! <br />
<br />
|-<br />
! style="background: #ececec;" | Davicom DM9102AF<br />
|<br />
! {{works}}<br />
! 40821<br />
| Used Windows 2000 drivers downloaded from [http://www.davicom.com.tw/page1.aspx?no=149749 vendor's site]. Works with Windows XP offical drivers as well<br />
! [[User:Techsalvager|Techsalvager]]<br />
! Windows 2000/Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | HP J2585B 10/100VG<br />
| <br />
! {{works}}<br />
! 40487<br />
| Driver installs and works on real hardware.<br />
! Unknown<br />
! <br />
<br />
|-<br />
! style="background: #ececec;" | Intel PRO/100<br />
|<br />
! {{works}}<br />
! 41134<br />
| Works on real hardware (replace XP driver files with Windows 2000 ones)<br />
! [[User:aicommander|aicom]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | Intel PRO/100 VE<br />
|<br />
! {{works}}<br />
! 42095<br />
| PC Fujitsu-Siemens Scenic D i845D 1331<br />
! [[User:gabrielilardi|gabriel_it]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | Intel PRO/1000<br />
| <br />
! {{works}}<br />
! 40673<br />
| Works with builds >= 40673 (replace Windows XP driver files with Windows 2000 ones)<br />
! [[User:aicommander|aicom]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | Intel PRO 1000 MT Dual Server Adapter<br />
| <br />
! {{Failed}}<br />
! 41930<br />
| Tested with Windows 2000 drivers, failed to work, needs more testing when I can get a serial port out of the computer<br />
! [[User:Techsalvager|Techsalvager]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | Intel 8255x (10/100)<br />
| Intel 8255x Family<br />
! {{Failed}}<br />
! 43437<br />
| Tested with WinXP drivers, BSOD at restart<br />
! [[User:Ey3|Ey3]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | Linksys LNE100TX<br />
| [http://www.linksysbycisco.com/US/en/products/LNE100TX Linksys] LNE100TX<br />
! {{works}}<br />
! 40475<br />
| Works with builds >= 40475 using official Windows 2000 drivers<br />
! [[User:aicommander|aicom]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | MSI PC60G-F Wireless <sub>Germany</sub> [http://de.msi.com/index.php?func=proddesc&prod_no=10019&maincat_no=131 MSI] <br />
| [http://www.atheros.com/pt/bulletins/AR6001G_Bulletin.pdf Atheros]<!--AR5001g 802.11B,G AR5001x 802.11A--> AR5001 <br />
! {{works}}<br />
! Missing<br />
| It installs and works using Windows 2000/Windows XP driver, but ReactOS lacks wireless support so the card is not really usable.<br />
! [[User:Netzimme|Netzimme]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | NE2000-compatible cards<br />
| [http://www.novell.com Novell] NE2000<br />
! {{works}}<br />
! Missing<br />
| Works using our ne2000 driver<br />
! Unknown<br />
! ReactOS<br />
<br />
|-<br />
! style="background: #ececec;" |Netgear FA311 REV-B1<br />
| [http://www.netgear.com Netgear] <br />
! {{works}}<br />
! 41930<br />
| Works using XP drivers extracted from xp install using driver doubler<br />
! [[User:Techsalvager|Techsalvager]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" |Netgear MA311<br />
| [http://www.netgear.com Netgear] <br />
! {{failed}}<br />
! 43304<br />
| Wireless 32bit PCI Model MA311 802.11b, Failed using XP drivers from installer.<br />
! [[User:Techsalvager|Techsalvager]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | QEMU Realtek 8139<br />
| [http://www.nongnu.org/qemu/ QEMU] RTL8139 QEMU<br />
! {{works}}<br />
! 40673<br />
| Works with builds >= 40673 using Windows 2000 drivers<br />
! [[User:aicommander|aicom]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | Pluscom NGP-RTL8169<br />
| [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=14&PFid=6&Level=5&Conn=4 Realtek] RTL8169<br />
! {{failed}}<br />
! Missing<br />
| Installation fails.<br />
! [[User:Geoz|Geoz]]<br />
! <br />
<br />
|-<br />
! style="background: #ececec;" | Realtek 8139C<br />
| [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=14&PFid=6&Level=5&Conn=4 Realtek] Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139] (rev 10)<br />
! {{works}}<br />
! 48899<br />
| Windows XP drivers work. Official Realtek drivers work too.<br />
! [[User:Netzimme|Netzimme]]<br />
! Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | Realtek 8139D<br />
| [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=14&PFid=6&Level=5&Conn=4 Realtek] RTL8139D<br />
! {{works}}<br />
! 43280<br />
| Windows 2000 driver, v.5.713.121.2009 works fine. DHCP assings IP right after NIC is installed.<br />
! [[User:Ey3|Ey3]]<br />
! Windows 2000/Windows XP<br />
<br />
|-<br />
! style="background: #ececec;" | Realtek RTL8168C/8111C PCI-E Gigabit Ethernet NIC<br />
| [http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=14&PFid=6&Level=5&Conn=4 Realtek] RTL8168C/8111C<br />
! {{failed}}<br />
! 41096<br />
| It installs but doesn't work using Windows 2000 drivers (see bug 2 below). [http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false Driver]<br />
! [[user:LinoSP|LinoSP]]<br />
! Windows 2000<br />
<br />
|-<br />
! style="background: #ececec;" | VIA Rhine II Fast Ethernet<br />
| VIA VT6102 [Rhine-II] (rev78)<br />
! {{works}}<br />
! 41809<br />
| It installs and works on real hardware, using x86 Windows XP drivers. Other [http://www.viaarena.com/displaydrivers.aspx?PageID=1&OSID=1&CatID=1190&SubCatID=124 VIA Rhine Family] Fast Ethernet might work.<br />
! [[user:LinoSP|LinoSP]]<br />
! Windows XP<br />
|}<br />
<br />
== Known bugs ==<br />
<br />
# <tt>NdisMRegisterInterrupt</tt> gets called with <tt>InterruptVector == 0</tt> and <tt>InterruptLevel == 0</tt> which causes it to fail.<br />
# Some INF files have both Windows 2000 and Windows XP sections, with separate drivers for both. When trying to install the Windows 2000 driver version ReactOS is being detected as Windows XP, thus Windows XP driver is attempted to be installed, even though its driver file may be missing in the Windows 2000 driver directory. As ReactOS does not fail when copying non existent files, successful installation is reported, alas driver file is not copied to <tt>system32\driver</tt> directory. This will cause "Successful install, please restart" window to appear at every boot.</div>
CycleGeek
https://reactos.org/wiki/index.php?title=Missing_ReactOS_Functionality&diff=28873
Missing ReactOS Functionality
2010-10-15T02:06:39Z
<p>CycleGeek: </p>
<hr />
<div>This page contains a list of APIs, COM interfaces, drivers, application, extensions or other functionality that Windows has but ReactOS does not. There are other similar pages in this wiki that might help, e.g. [[Version Status]], [[Community Funded Ideas]] and [[Roadmap]]. This page is intended as a list of general tasks that need to be done in ReactOS. If a certain component already exists, consider filing a bug report.<br />
<br />
== General ==<br />
* WMI http://msdn.microsoft.com/en-us/library/aa394582%28VS.85%29.aspx<br />
* Diskpart http://support.microsoft.com/kb/300415 (command line partitioning tool)<br />
* Disk Defragmenter http://msdn.microsoft.com/en-us/library/aa363911%28VS.85%29.aspx<br />
* Use Event Tracing!!! http://www.microsoft.com/whdc/devtools/tools/EventTracing.mspx (turn debug channels into event channels??)<br />
* Hibernation support<br />
* LSASS http://technet.microsoft.com/en-us/library/cc162924.aspx<br />
* Multi user support<br />
* Multi session support<br />
* Fast User Switching<br />
* LDAP/ActiveDirectory http://msdn.microsoft.com/en-us/library/cc223122.aspx<br />
* TCP/IP Traffic Shaping/Scheduling<br />
* Task Scheduler<br />
* [[Printing]]<br />
* HTML Applications - HTML files with a .hta extension that run as Windows Applications using the MSHTML (IE) Engine - http://msdn.microsoft.com/en-us/library/ms536496(VS.85).aspx<br />
* Active Desktop http://en.wikipedia.org/wiki/Active_Desktop<br />
* Animated Mouse Cursors<br />
<br />
== Win32 features ==<br />
* [[ReactOS Terminal Services|Terminal Server]]<br />
** Wtsapi32.dll/ Mstlsapi.dll http://msdn.microsoft.com/en-us/library/aa383468(VS.85).aspx<br />
* shdocvw http://www.geoffchappell.com/viewer.htm?doc=studies/windows/ie/shdocvw/index.htm&tx=17<br />
* browseui http://www.geoffchappell.com/viewer.htm?doc=studies/windows/ie/browseui/history/index.htm<br />
* Global hooks<br />
<br />
=== Introduced in Windows NT ===<br />
* NT-based CHKDSK http://technet.microsoft.com/en-us/library/bb491051.aspx<br />
* Speech Application Programming Interface (SAPI) http://www.microsoft.com/speech/default.aspx<br />
<br />
=== Introduced in Windows 98 ===<br />
*System File Checker http://support.microsoft.com/?scid=kb%3Ben-us%3B310747&x=13&y=11<br />
<br />
=== Introduced in Windows 2000 ===<br />
* Windows File Protection http://support.microsoft.com/kb/222193/en-us<br />
* Layered windows http://msdn.microsoft.com/en-us/library/ms997507.aspx - see {{Bug|1691}}<br />
* ClearType http://www.microsoft.com/typography/WhatIsClearType.mspx<br />
* Data Protection API (required for IE 7+) http://msdn.microsoft.com/en-us/library/ms995355.aspx<br />
<br />
=== Introduced in Windows ME ===<br />
*System Restore http://msdn.microsoft.com/en-us/library/ms811705.aspx<br />
<br />
=== Introduced in Windows XP ===<br />
* Image Mastering API (needed for many cd writing applications)<br />
* Window ghosting (A window manager feature that lets the user minimize, move, or close the main window of an application that is not responding)<br />
* Visual Styles http://msdn.microsoft.com/en-us/library/bb773187(VS.85).aspx<br />
* Windows Error Reporting http://msdn.microsoft.com/en-us/library/bb513636(VS.85).aspx<br />
* [[MUI]] Support http://msdn.microsoft.com/en-us/goglobal/dd218459.aspx<br />
* Application Compatibility http://technet.microsoft.com/ru-ru/library/cc736503(WS.10).aspx<br />
* Prefetching http://www.microsoft.com/whdc/archive/XP_kernel.mspx#E3KAC<br />
<br />
=== Introduced in Windows XP x64, Windows Server 2003 ===<br />
* Data Execution Prevention (DEP) http://msdn.microsoft.com/en-us/library/aa366553(VS.85).aspx<br />
* Kernel Patch Protection (KPP) aka PatchGuard http://www.microsoft.com/whdc/driver/kernel/64bitpatch_FAQ.mspx<br />
<br />
=== Introduced in Windows Vista ===<br />
* User Interface Privilege Isolation (UIPI) see: ChangeWindowMessageFilter <br />
* User Account Control (UAC) http://technet.microsoft.com/en-us/library/cc709628(WS.10).aspx<br />
* ReadyBoost http://windows.microsoft.com/en-US/windows-vista/Using-memory-in-your-storage-device-to-speed-up-your-computer<br />
* Address Space Layout Randomization (ASLR) http://blogs.msdn.com/b/michael_howard/archive/2006/05/26/address-space-layout-randomization-in-windows-vista.aspx<br />
* Condition Variables http://msdn.microsoft.com/en-us/library/ms682052(VS.85).aspx<br />
* One Time Initialization http://msdn.microsoft.com/en-us/library/aa363808(VS.85).aspx<br />
* ThreadPool API http://msdn.microsoft.com/en-us/library/ms686766(VS.85).aspx<br />
* Wait Chain Transversal http://msdn.microsoft.com/en-us/library/ms681623(VS.85).aspx<br />
* Kernel Transaction Manager http://msdn.microsoft.com/en-us/library/aa366288(VS.85).aspx<br />
* Desktop Window Manager http://msdn.microsoft.com/en-us/library/aa969540(VS.85).aspx<br />
* Windows Search http://msdn.microsoft.com/en-us/library/aa965362(VS.85).aspx<br />
* Windows Diagnostics Infrastructure (WDI) (bad documented) http://www.geoffchappell.com/viewer.htm?doc=notes/windows/wdi/index.htm<br />
* Windows Display Driver Model http://msdn.microsoft.com/en-us/library/aa480220.aspx<br />
* DreamScene http://windows.microsoft.com/en-US/windows-vista/About-Windows-DreamScene<br />
<br />
=== Introduced in Windows 7 ===<br />
* New Functions http://msdn.microsoft.com/en-us/library/dd433624%28VS.85%29.aspx<br />
* Jump Lists http://windows.microsoft.com/en-us/windows7/products/features/jump-lists<br />
* Pin to Taskbar http://windows.microsoft.com/en-us/windows7/Pin-a-program-to-the-taskbar<br />
* Window Snapping http://windows.microsoft.com/en-us/windows7/products/features/snap<br />
* Aero Shake http://windows.microsoft.com/en-US/windows7/Whats-new-with-the-Windows-desktop#section_2<br />
* Aero Peek http://windows.microsoft.com/en-US/windows7/Whats-new-with-the-Windows-desktop#section_3<br />
* Wallpaper Rotation http://windows.microsoft.com/en-us/windows7/create-a-desktop-background-slide-show<br />
* Multi-touch Support http://msdn.microsoft.com/en-us/magazine/ee336016.aspx<br />
* exFAT (Extended File Allocation Table) http://msdn2.microsoft.com/en-us/library/aa914353.aspx<br />
* DPI settings are per-user http://msdn.microsoft.com/en-us/library/dd371771(VS.85).aspx<br />
<br />
== Drivers ==<br />
* Re-enable ACPI and update ACPICA core (http://www.acpica.org/) - see {{Bug|3363}} and {{Bug|4775}}<br />
* Bugfix/implement VBE 1.02/2.00/3.00+ support (special cases for buggy cards might be necessary)<br />
** http://www.virtualbox.de/browser/trunk/src/VBox/Additions/WINNT/Graphics<br />
** http://navozhdeniye.narod.ru/vbemp.htm<br />
** http://www.talula.demon.co.uk/freebe/<br />
** http://et6000.narod.ru/<br />
* USB class drivers http://www.usb.org/developers/devclass_docs/usb-msc-overview-1.3b.pdf<br />
* USB 3.0 specs http://www.usb.org/developers/docs/usb_30_spec_032310.zip<br />
* HID class drivers http://www.usb.org/developers/hidpage/microhid/<br />
* UDF (ISO/IEC 13346) driver (DVD)http://www.osta.org/specs/pdf/udf260.pdf<br />
* Partition Manager<br />
* Volume Manager<br />
* PCMCIA/Express Bus driver<br />
* WMIlib<br />
* Windows Driver Framework http://www.microsoft.com/whdc/driver/wdf/default.mspx<br />
* Usermode Driver Framework http://www.microsoft.com/whdc/driver/wdf/UMDF.mspx<br />
<br />
== Display ==<br />
* Support/bugfix EDID compliance http://en.wikipedia.org/wiki/Extended_display_identification_data <br />
* Videomode change support<br />
* Multimonitor support<br />
* Screen Rotation<br />
* [[Missing_ReactOS_Functionality#Introduced_in_Windows_Vista| WDDM]]<br />
<br />
== Networking ==<br />
* Internet Protocol Version 6 http://technet.microsoft.com/en-us/network/bb530961.aspx<br />
* DHCP Server<br />
* SMB Filesystem Client http://wiki.samba-tng.org/doku.php<br />
* NFS Server/Client http://tools.ietf.org/html/rfc5661 Protocol Specification</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.12&diff=28872
ChangeLog-0.3.12
2010-10-15T01:41:55Z
<p>CycleGeek: rm name sort note; add several translations; add reg and xcopy to winesync; sp: synced</p>
<hr />
<div>TODO: Need a list compiled for apps updated/added to the rosapp list. We'll stick this under the Generic Changes section. -Z98<br />
<br />
TODO: Document all the hacks that go into this release to cover up, issues. This information may not yet be available. -Z98<br />
<br />
This is the changelog for ReactOS™ [[0.3.12|version 0.3.12]] (date yet to be determined), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.11|version 0.3.11]] (released 16 December 2009).<br />
<br />
= General =<br />
Since the last release, ReactOS has seen considerable modification and enhancement at all levels of the operating system. Unlike past changelogs which simply compiled a long list of changes, a highly unwieldy arrangement that did not convey much in the way of useful and accessible information, this changelog will attempt to summarize and emphasize major points of interest. There will still be lists of changes, but these will serve only as further emphasis. Interested readers should find most of the relevant information in the summaries under each section.<br />
== Contributors ==<br />
=== Core Developers ===<br />
* Giannis Adamopoulos: Applications, Win32.<br />
* Johannes Anderwald: Kernel, sound.<br />
* Aleksey Bragin: Filesystem, kernel, Win32k.<br />
* Colin Finck: Build tools, translations, release engineer.<br />
* Jérôme Gardou: Win32.<br />
* Stefan Ginsberg: Kernel.<br />
* Dmitry Gorbachev: Applications.<br />
* Cameron Gutman: Networking, PnP.<br />
* Kamil Horníček: 3D Graphics, Win32.<br />
* Amine Khaldi: Build tools.<br />
* Eric Kohl: Kernel, Win32.<br />
* Timo Kreuzer: Win32k.<br />
* Matthias Kupfer: Applications, Win32.<br />
* Michael Martin: Kernel, USB.<br />
* Jeffrey Morlan: Applications, Win32.<br />
* Filip Narava: USB.<br />
* Sylvain Petreolle: Applications.<br />
* Hervé Poussineau: Kernel.<br />
* ReactOS Portable Systems Group: ARM porting, drivers, kernel.<br />
* Daniel Reimer: Build tools, translations.<br />
* Gregor Schneider: Win32.<br />
* Pierre Schweitzer: Filesystem, kernel.<br />
* James Tabor: Win32.<br />
* Christoph von Wittich: Win32.<br />
<br />
=== Patch Submitters ===<br />
* Andrea<br />
* Carlo Bramini<br />
* James Edmeades<br />
* Benedikt Freisen<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Kusanagi Kouichi<br />
* Radek Liška<br />
* Roel Messiant<br />
* Andrew Nguyen<br />
* Samuel Serapión<br />
* Seungju<br />
* Dmitry Timoshkov<br />
* Henri Verbeet<br />
<br />
=== Localization ===<br />
* forenkrams [AT] tuxproject [DOT] de<br />
* Edison Henrique Andreassy<br />
* Egon Ashrafinia<br />
* Arturs B<br />
* Maciej Bialas<br />
* CCTAHEB<br />
* Paolo Devoti<br />
* Andrew Faulds<br />
* Javier Fernandéz<br />
* Katayama Hirofumi<br />
* Gabriel Ilardi<br />
* Mario Kacmar<br />
* Tomoya Kitagawa<br />
* Igor Paliychuk<br />
* Javier Remacha<br />
* Olaf Siejka<br />
* Andres Traks<br />
* Maikel Wever<br />
* Sakara Yevhen<br />
* Marcelo Zamperetti<br />
<br />
=== Support Staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.12 Changes ==<br />
* Hardware IDs for the following processors have been added to the internal hardware list.<br />
** Cyrix<br />
** Pentium MMX, Pro, II, M, 4<br />
** Core Solo, Duo, Extreme, i3, i5, i7<br />
** Atom<br />
** AMD K6, K6-3, Athlon 64, Turion64, Sempron<br />
** Via Nehemiah, Esther, Nano<br />
* NTVDM is now only built on x86 builds.<br />
=== Applications ===<br />
* Calc: Units and conversion factors added.<br />
* Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.<br />
* IPconfig: Media detection is now fixed.<br />
* MSCUtils: Column names now use resource strings instead of hardcoded strings.<br />
* Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.<br />
* Paint: Initial selection support and angle rounding for lines and edges.<br />
* Regedit: Fix searching the registry.<br />
* Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.<br />
=== Control Panel Applets ===<br />
* Console: Store changes when buffer/window size or color changes.<br />
* Desk: Fix theme switching and screensaver selection.<br />
* Input: Fix changing of keyboard layout.<br />
* Intl: Use resource strings for 'metric' and 'Imperial' strings.<br />
* Sysdm: Fix creation of paging file and place constraints on file size.<br />
=== Installer ===<br />
Various tweaks were made to the installer to ease installing ReactOS.<br />
* Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.<br />
* Fix reading of partitions created in non-standard formats by Linux.<br />
* Minimum space check notification improved. Minimum space value also made configurable through text file.<br />
* Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.<br />
* Installer does not restart in second stage if ESC is pressed.<br />
* PathName and SystemRoot registry key values are now written by the installer.<br />
=== Services ===<br />
* Services no longer trample over other services when reporting their status.<br />
* DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.<br />
* EventLog: Fixes to reading and displaying of log content.<br />
== Tests ==<br />
http://www.reactos.org/testman/compare.php?ids=2123,4021<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* 3dtext<br />
* doskey<br />
* explorer<br />
* ipconfig<br />
* mscutils/servman<br />
* rapps<br />
* shutdown<br />
* spider<br />
* usetup<br />
* winemine<br />
<br />
'''Chinese'''<br />
* charmap<br />
* dxdiag<br />
* fontview<br />
* magnify<br />
* mmc<br />
<br />
'''Czech'''<br />
* appwiz.cpl<br />
* devmgr<br />
* intl.cpl<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* notepad<br />
* paint<br />
* regedit<br />
* setupapi<br />
* shell32<br />
* slayer<br />
* sndvol32<br />
* sysdm.cpl<br />
* userenv<br />
* usetup<br />
* winemine<br />
<br />
'''Dutch'''<br />
* calc<br />
* usetup<br />
<br />
'''English'''<br />
* advpack<br />
* calc<br />
* dxdiag<br />
* rapps<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* eventvwr<br />
* netshell<br />
* paint<br />
* spider<br />
* usetup<br />
<br />
'''German'''<br />
* access.cpl<br />
* appwiz.cpl<br />
* calc<br />
* cmd<br />
* console<br />
* desk.cpl<br />
* deskadp<br />
* deskmon<br />
* devmgr<br />
* doskey<br />
* downloader<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* fontview<br />
* format<br />
* hdwwiz.cpl<br />
* input.cpl<br />
* intl.cpl<br />
* ipconfig<br />
* joy.cpl<br />
* kernel32<br />
* liccpa.cpl<br />
* main.cpl<br />
* mmsys.cpl<br />
* modemui<br />
* mplay32<br />
* msconfig<br />
* mscutils<br />
* msgina<br />
* mstsc<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* newdev<br />
* notepad<br />
* paint<br />
* powercfg<br />
* rapps<br />
* rasdlg<br />
* reg<br />
* regedit<br />
* regsvr32<br />
* runonce<br />
* screensavers/3dtext<br />
* screensavers/logon<br />
* serialui<br />
* setup/reactos<br />
* shdoclc<br />
* shell32<br />
* shimgvw<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* tapiui<br />
* taskmgr<br />
* timedate.cpl<br />
* user32<br />
* userenv<br />
* usetup<br />
* usrmgr.cpl<br />
* vmwinst<br />
* welcome<br />
* winemine<br />
* winlogon<br />
<br />
'''Italian'''<br />
* calc<br />
* explorer-new<br />
* intl.cpl<br />
* mscutils<br />
* netid<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* shell32<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Japanese'''<br />
* cacls<br />
* charmap<br />
* magnify<br />
* mscutils/devmgmt<br />
* mscutils/servman<br />
* paint<br />
* rapps<br />
* runonce<br />
* shutdown<br />
* sndrec32<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Polish'''<br />
* calc<br />
* explorer-new<br />
* mscutils<br />
* rapps<br />
* usetup<br />
<br />
'''Portuguese'''<br />
* syssetup<br />
* usetup<br />
<br />
'''Russian'''<br />
* spider<br />
* sysdm.cpl<br />
* usetup<br />
<br />
'''Slovak'''<br />
* calc<br />
* devmgr<br />
* explorer-new<br />
* intl.cpl<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* syssetup<br />
* usetup<br />
<br />
'''Spanish'''<br />
* browseui<br />
* devmgr<br />
* notepad<br />
* paint<br />
* rapps<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* usrmgr.cpl<br />
* welcome<br />
<br />
'''Ukrainian'''<br />
* aclui<br />
* browseui<br />
* charmap<br />
* cmd<br />
* desk.cpl<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* freeldr<br />
* input.cpl<br />
* kernel32<br />
* mscutils/devmgmt<br />
* mscutils/eventvwr<br />
* msgina<br />
* mstsc<br />
* newdev<br />
* notepad<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* setup<br />
* shell32<br />
* shimgvw<br />
* sndrec32<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* taskmgr<br />
* usetup<br />
* winemine<br />
<br />
== Wine Syncs ==<br />
ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synced to versions 1.2 or 1.3.<br />
<br />
Libraries Synced<br />
* activeds<br />
* actxprxy<br />
* amstream<br />
* atl<br />
* avifil32<br />
* cabinet<br />
* clusapi<br />
* comctl32<br />
* comdlg32<br />
* credui<br />
* crypt32<br />
* cryptdlg<br />
* cryptnet<br />
* cryptui<br />
* d3d8<br />
* d3d9<br />
* dbghelp<br />
* ddraw<br />
* dwmapi<br />
* faultrep<br />
* fusion<br />
* gdiplus<br />
* hhctrl.ocx<br />
* hlink<br />
* hnetcfg<br />
* iccvid<br />
* imm32<br />
* inetcomm<br />
* inetmib1<br />
* initpki<br />
* inseng<br />
* itircl<br />
* itss<br />
* jscript<br />
* localspl<br />
* localui <br />
* mapi32<br />
* mciavi32<br />
* mcicda<br />
* mciqtz32<br />
* mciseq<br />
* mciwave<br />
* mdi<br />
* mlang<br />
* mpr<br />
* mscms<br />
* mscoree<br />
* msctf<br />
* msdmo<br />
* msg711.acm<br />
* msgsm32.ac<br />
* mshtml<br />
* msi<br />
* msiexec<br />
* msimtf<br />
* msnet32<br />
* msrle32<br />
* mssip32<br />
* msvcrt20<br />
* msvfw32<br />
* msvidc32<br />
* msxml<br />
* msxml3<br />
* nddeapi<br />
* netapi32<br />
* obsel<br />
* odbc32<br />
* ole32<br />
* oleacc<br />
* oleaut32<br />
* oledlg<br />
* olepro32<br />
* pdh<br />
* postorec<br />
* qedit<br />
* quartz<br />
* query<br />
* reg<br />
* riched20<br />
* rpcrt4<br />
* rsaenh<br />
* schannel<br />
* shdoclc<br />
* shdocvw<br />
* shlwapi<br />
* sti<br />
* tapi32<br />
* urlmon<br />
* usp10<br />
* uxtheme<br />
* version<br />
* widl<br />
* windowscodecs<br />
* wined3d<br />
* wininet<br />
* wintrust<br />
* xcopy<br />
* xmllite<br />
<br />
== Third Party Libraries ==<br />
* DejaVu Fonts updated to 2.31<br />
* FreeType updated to 2.3.12<br />
* Liberation Fonts updated to 1.05.2<br />
* libjpeg updated to 8b<br />
* libpng 1.4.3 added<br />
* libtiff 3.9.4 added<br />
* libxml updated to 2.7.7<br />
* zlib updated to 1.2.5<br />
<br />
== Regressions ==<br />
* #4086 cdfs: Data inaccessible for view under Explorer<br />
* #4330 crashes upon restart after installing a driver for 3com Fast Etherlink network adapter<br />
* #4811 comctl32: dll winesync broke AbiWord toolbar<br />
* #5025 freeloader error while booting from GRUB with Ubuntu and Windows XP installed<br />
* #5035 Abiword: fonts listbox isn't shown properly<br />
* #5158 some keystrokes get lost if typing fast in VirtualBox<br />
* #5290 Slowness during file copying in 1st stage in VirtualBox<br />
* #5320 "Assertion 'FALSE' failed at subsystems/win32/win32k/ntuser/windc.c line 739", preceded by "Not POWNED or CLASSDC hwndCurrent" debugprint<br />
* #5372 "Failed to create directory L"%USERPROFILE%\\Local Settings\\" debug print in 2nd stage<br />
* #5443 Inkscape 0.43-2 crashes immediately upon start.<br />
* #5484 New windows are created on top of older ones<br />
* #5503 Far Manager 1.65 fails to start<br />
* #5504 Internet Explorer 6 errors out at setup<br />
* #5524 Displaced numbers on virtual desktop icons in 32bpp<br />
* #5530 COM ports not available anymore<br />
* #5554 Warning/error window is misplaced and misshaped<br />
* #5560 Acrobat Reader 7.1 crashes at start<br />
* #5569 App tray icons are not displayed<br />
* #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn<br />
<br />
== Build Tools ==<br />
=== LOG2LINES ===<br />
* Updated to version 2.2<br />
<br />
=== RBUILD ===<br />
RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.<br />
* Non-existent DLL functions can be exported.<br />
* Function export names are not properly decorated, allowing export names to not match the original function names.<br />
* If function targets are not found, RBuild will link the DLL to itself.<br />
Some development on RBuild also took place before the decision was made to switch over to CMake.<br />
* Initial Visual Studio 2010 project file support.<br />
* Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.<br />
=== RosBE ===<br />
* Build environment now uses GCC 4.4.x as the compiler.<br />
* -fno-unit-at-a-time hacks have been removed.<br />
* Auto-export of all symbols has been turned off.<br />
<br />
= Core Functionality =<br />
<br />
== Audio/Video Stack ==<br />
The A/V stack has seen a great deal of enhancements and fixes since the last release. Preliminary sound support was already present in the previous release, but it was highly rudimentary. Beyond simple playback not much else was controllable. Effort has gone into controlling the mixing of the playback, providing the ability to manipulate the volume and other general usability features such as pausing and restarting. These required finer control and management over the signal data that represents the sound and the sound devices that actually play it. Querying of audio devices has been implemented, allowing the system to discover the functionality a device supports and how to access them. More work however needs to be done to better use those features as well as managing the resources associated with sound playback.<br />
<br />
In addition to increased sound playback support, work was begun on the framework for playing back broadcast media. These are generally through TV-tuners and have their own set of interfaces that must be implemented. These consist of a series of drivers and filters that determine which channel the system should capture media from and then process. Currently the broadcast standard being implemented is the Digital Video Broadcasting-Terrestrial.<br />
<br />
A key component to all media playback is the kernel streaming component, which handles the majority of actual manipulation of media data.<br />
=== BDA ===<br />
The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.<br />
* Interfacing with broadcast devices implemented.<br />
* Filtering of broadcast frequencies implemented.<br />
=== DSOUND ===<br />
A library that bypasses some of the layers in the sound stack to try and speed up processing.<br />
* Starting and stopping audio implemented.<br />
* Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.<br />
=== Kernel Streaming ===<br />
The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.<br />
* Device initialization and registration implemented.<br />
* Objects allocated are placed onto a list for automatic reclamation.<br />
* Pin interface for controlling devices implemented, though issuing of commands still needs work.<br />
=== KSPROXY ===<br />
A DirectShow filter that relays media through the user mode kernel streaming library.<br />
* Enumeration of supported functionality on devices implemented.<br />
* Signal statistics from BDA devices are delivered by KSPROXY.<br />
* Media stream sampling is done to determine buffer allocation strategy.<br />
* Multiple media samples can be dispatched simultaneously.<br />
=== PORTCLS ===<br />
The driver that manages most of the audio functionality in NT.<br />
* Currently a "silent" buffer is used when no audio buffers are available for playback.<br />
* Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.<br />
* A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.<br />
* Audio stream data is only copied to the common buffer when the pin owning it is in a running state.<br />
<br />
== Filesystems ==<br />
The filesystem framework on ReactOS has for most of the project's history been largely absent. The main support library for filesystems, FsRtl, did not exist and all of the filesystem drivers reimplemented the functionality it was supposed to provide. This has changed recently with the initial implementation of the FsRtl. Currently the FsRtl provides support for notification of changes to the volume's state, such as a device being mounted or unmounted. Notification of changes to a volume's content has not yet been implemented but is the next step. The old FAT filesystem driver has been updated to use some of the new functionality, as has the CDFS driver, providing the ability to eject a CD.<br />
<br />
A new FAT filesystem driver is also being implemented by creating a wrapper around the FullFAT library. However, it is still a work in progress and was not ready for this release.<br />
<br />
== Hardware Management ==<br />
Progress has been made in efforts to give ReactOS better support for various hardware control specifications.<br />
<br />
=== ACPI ===<br />
A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.<br />
* Enumerate attached devices.<br />
* Receive commands from power buttons.<br />
=== ACPI HAL ===<br />
The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.<br />
* Resource querying implemented.<br />
* Separation of ACPI and non-ACPI bus handling.<br />
=== Battery Framework ===<br />
Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.<br />
* Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.<br />
* Composite Battery Driver: Battery detection and PnP notification implemented.<br />
=== Legacy HAL ===<br />
The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.<br />
* i8259A programmable interrupt controller initialization implemented in C.<br />
* HAL now detects EISA systems with the Edge/Level Control Register.<br />
* Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.<br />
* Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.<br />
* IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.<br />
* HAL no longer relies on the memory manager for allocations.<br />
* Various debugging related functions implemented.<br />
* CMOS, ISA, and SYSTEM bus handlers are now registered.<br />
* HAL now can detect PCI and PCI-to-PCI bridges.<br />
* Checks for ABIOS have been removed as it is not supported by ReactOS or Windows.<br />
=== Plug n Play ===<br />
* Writing of resource list has been fixed to avoid corrupting the registry.<br />
* Registry values for legacy devices are now written.<br />
* Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.<br />
<br />
== Memory Management ==<br />
The memory manager has been slowly rewritten over the past several months, with components being replaced piece by piece while the rest of the system continued on as before. To achieve this required separating the blocks of memory controlled by the new memory manager, ARM3, and the old memory manager. As more of ARM3 was completed, it took over more responsibility from the old memory manager, in the process exposing countless bugs, corruptions, and leaks in not only the old manager but broken code in higher layers of the operating system. This resulted in several major breakages at various points during the last year but the majority of them have been dealt with. For this release much of the ARM3 functionality has not been enabled to lessen the risk of major regressions slipping in. However, it is already capable of allocating most types of memory blocks such as pool memory and creating address spaces. The next release will see ARM3 enabled and effectively acting as the sole memory manager.<br />
<br />
Work on the x64 port also required that virtual memory support be updated to support the page table entry format on x64. Support was added in both the old memory manager and ARM3 due to the concurrent nature of the work and a great deal of refactoring was also done to separate platform independent code. This was also done to benefit the effort to port ReactOS to the ARM platform, as it also has a different format for page table entries.<br />
* Page Table Entries work under x64.<br />
* Correctly report the amount of memory available to applications and drivers.<br />
* Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.<br />
* Code refactored so architecture independent code can be shared across platforms.<br />
* Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.<br />
* Global pages support removed due to currently broken code.<br />
* Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.<br />
* Stubs have been added for various large page functions in case future work is done to add support.<br />
* Paging driver code and data implemented.<br />
* A check to detect potential corruption in contiguously allocated blocks of memory has been added.<br />
=== ARM3 ===<br />
* Virtual Address Descriptor data structures implemented.<br />
* Page table and directory entry initialization implemented.<br />
* Stack frames are allocated using ARM3.<br />
* Paged pool allocations can be done through ARM3.<br />
* Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.<br />
* Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.<br />
* Shared user data pages are handled by ARM3.<br />
* New AVL tree implementation used to manage Virtual Address Descriptors.<br />
* Creation of the process address space is now done by ARM3.<br />
* IsBadRead/CodePtr fixed to work with ARM3.<br />
<br />
== Network Stack ==<br />
The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.<br />
=== IP ===<br />
* Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.<br />
* No attempt is made to close a socket already terminated by the remote peer.<br />
* Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.<br />
=== MSAFD ===<br />
The current socket implementation on ReactOS.<br />
* Error codes are now properly reported, fixing many of the Winetests for this component.<br />
* Failures on operations are now reported instead of simply being left dangling.<br />
* Events are waited on instead of immediately being closed.<br />
* Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.<br />
* Socket information is now cleaned up after a socket is closed.<br />
* Support for connectionless sockets added.<br />
* Reading data using the peek functionality no longer causes corruptions.<br />
=== NDIS ===<br />
* Timer queues have been disabled to prevent the VirtualBox Intel Pro/1000 emulated network card from crashing ReactOS.<br />
* Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.<br />
* Network adapter initialization and binding cleaned up to avoid duplicate entries.<br />
=== OSKITTCP ===<br />
* Multiple wakeups are now prevented from occurring.<br />
* Sent/received reports are only sent if operation completed successfully.<br />
* A check was added to make sure accept is not called on a socket that is not listening.<br />
=== WS2_32 ===<br />
* Reading host files now supported.<br />
<br />
== Kernel ==<br />
The ReactOS kernel saw several major pieces rewritten from x86 assembly to C. This allows considerably more code reuse when porting to other platforms but also resulted in several major bugs being fixed. Two especially important components rewritten were the the system call interface and trap handlers. The syscall interface suffered from an especially severe bug that prevented the use of specialized instructions for entering and leaving kernel mode. Fixing this bug has helped decrease the time needed for each syscall and due to the number of times a system will make syscalls quickly adds up. Situations where a syscall can be avoided have also see them removed or deferred, further increasing performance.<br />
<br />
There exists code in the kernel that requires transitions to real mode in the processor in order to run. Support for Virtual 8086 has bee added, permitting their execution while remaining in protected mode. Due to the expense of these transitions, avoiding it can also help performance.<br />
<br />
Various other issues ranging from missetting special registers, which could cause data corruption and crashes when in kernel mode, and basic device driver handling, also saw fixes.<br />
* IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.<br />
* FPU state is now correctly not saved when a kernel debugger is not attached.<br />
* Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.<br />
* Trap handling code converted to C with minimal bits of assembly.<br />
* Interrupt handling in kernel converted to C to match conversion done in HAL.<br />
* System call handling now implemented in C.<br />
* Entrypoint of kernel moved to KiSystemStartup.<br />
* KeUpdateSystemTime interface is no longer Windows compatible. No third party code should ever call it however so change should not matter.<br />
* Interrupts are now handled when in Virtual 8086 mode.<br />
* Calling KiSystemService directly with interrupts enabled no longer corrupts the trap frame, fixing some failures on QEMU and real hardware.<br />
* Checks have been added to avoid drivers linked with user mode DLLs.<br />
* Dependency checking for driver unloading implemented.<br />
* When a driver fails to load, the kernel no longer attempts to unload modules that were never initialized.<br />
* The SYSEXIT code used for returning to user mode after a system call into kernel mode has been fixed, allowing the use of the SYSENTER/SYSEXIT combination instead of IRETD. This feature is only available on Pentium II and newer processors and should help decrease the time needed for such hopping between modes for system calls.<br />
* All trap handling code is now marked as no-return, allowing the compiler to better optimize them.<br />
* The Processor Control Block is no longer volatile in KeGetPcr, making the C code cleaner as the PCR no longer needs to be constantly reloaded. This also helps performance with the removed need for loading.<br />
== I/O ==<br />
* Device property retrieval now returns correct information for the device name.<br />
* IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.<br />
* Changes in device status are now reported.<br />
* New resource information is now reported.<br />
<br />
== Registry ==<br />
* A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.<br />
* Opening registry values for symbolic links is fixed.<br />
* cmlib, newinflib and mkhive now use the Wine unicode library instead of the host_wcsfuncs library.<br />
=== MKHIVE ===<br />
The registry generator.<br />
* newinflib is now used instead of inflib.<br />
* Registry generation now uses the Unicode API instead of ascii.<br />
* Work has been done to properly free resources, as mkhive is suffering from several memory leaks.<br />
=== NEWINFLIB ===<br />
* Unicode aware version of inflib added, newinflib.<br />
* String functions now use the str*W group instead of wcs* due to glibc on Linux builds using a 32bit wchar_t instead of 16bit. A wrapper has been added to allow continued use of wcs* functions on Windows builds.<br />
<br />
== Startup/Shutdown ==<br />
Startup time on ReactOS has benefited considerably from optimizing for the much more resource constrained ARM platform. The code responsible for drawing menus and the like at boot time has seen considerable simplification to avoid unnecessary operations and drawings. In addition, the amount of memory used by Freeloader to boot the operating system has also decreased. The cumulative effect of the changes has meant that there should be a noticeable difference in how quickly ReactOS boots versus previous versions and also when compared to Windows XP.<br />
<br />
Properly shutting down has also seen some improvement, as the operating system is better able to keep track of which processes have yet to terminate. Those that take too long are now forcibly terminated.<br />
<br />
One other significant change was the changing of the Freeloader executable to be in the Portable Executable format instead of a raw binary. This was done to enable better support for debugging problems that can occur at boot time, as a raw binary does not offer much help in trying to see what code has been executed.<br />
* Progress bar during boot now displays correctly.<br />
* Logos now have the correct color palette and the correct logo is used for booting and shutting down.<br />
* Driver loading code used during booting has been switched to use low level Configuration Manager interfaces, decreasing boot time.<br />
* A crude timing mechanism has been added to see how many CPU cycles have passed between the first instruction of the kernel, the initialization of the registry by the SMSS, and the moment 12 processes have started up, which is approximately equivalent to getting to the GUI from boot.<br />
=== BootVid ===<br />
* Broken initialization code removed and a correct implementation added.<br />
* 4bpp blitting code simplified.<br />
* x64 portability fixes.<br />
* Initialization of bootvid no longer requires a shift into real mode, allowing for faster booting.<br />
=== FreeLoader ===<br />
* FreeLoader is now compiled into the Portable Executable format to allow for debugging.<br />
* FreeLoader no longer needs to be installed on the first partition of the first disk.<br />
* FreeLoader UI on ARM rewritten to slim down on resources needed.<br />
* Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.<br />
* x64 portability fixes.<br />
* Loading on the ARM platform has been changed to match EFI/Firmware model.<br />
=== Session Manager Subsystem ===<br />
* SMSS can now add several system environment variables to the registry.<br />
* SMSS now creates a new default paging file if none exists.<br />
=== Winlogon ===<br />
* Environment variables for user are now properly loaded upon login.<br />
<br />
== Security ==<br />
* NtAcessCheck fixed to account for various error cases and improper usage.<br />
* Security token is now checked for what level of authorization it is trying to impersonate.<br />
* Success is only reported if all access requests have been granted.<br />
* Attempts to duplicate security tokens fail if authorization level is too low.<br />
=== LSA ===<br />
* A single table is now used for mapping privilege names to values.<br />
* Initial implementation of a lookup table for well-known SIDs has been added.<br />
* Account name lookup call chain implemented, but dummy names are still returned.<br />
<br />
== Shell ==<br />
The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.<br />
* Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.<br />
=== Explorer ===<br />
* Clock is no longer clipped in its window.<br />
* 24bpp start menu icon added.<br />
=== SHELL32 ===<br />
* Confirmation dialog added for logging off.<br />
* Open With dialog now allows aborting of operation.<br />
* Localized error text now displayed as messagebox caption.<br />
* Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.<br />
* Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.<br />
* Initial file copy/move/delete dialog implementation added.<br />
* File association error texts added.<br />
<br />
== Storage Stack ==<br />
The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.<br />
* Logical units in extended partitions are visible but are not accessible yet.<br />
* Querying for Native ATA channels and configuring controller to use NATA implemented.<br />
=== RAMDISK ===<br />
* Fixes for using ramdisk when booting on ARM.<br />
=== SCSIPORT ===<br />
* x64 portability fixes.<br />
=== UniATA ===<br />
* Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.<br />
<br />
== USB ==<br />
ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. Under specific configurations USB keyboards and mice could be used with it, but the setup was extremely inflexible. The NT5 USB architecture is considerably different and a new USB stack based on it has been started. The lower level of this stack is composed of several pieces. The usbd library acts as a helper library for third party USB drivers, ones that manufacturers write for their products. It provides some querying functionality to help find attached devices. I/O request packets are sent by usbhub, and usbport acts as an intermediary, sorting the messages based on which type of USB controller they are for and selecting the appropriate helper driver to handle it. These helper drivers are usbehci, usbohci, and usbuhci. Currently the new USB stack has a basic implementation of usbd, usbhub, usbport, and usbehci. They are still incomplete and ReactOS cannot yet use them to actually use USB devices, but basic discovery of devices is possible.<br />
<br />
The old USB driver continues to see fixes and enhancements as the new USB stack will take much time to fully mature. Some notable changes include the ability to deal with multiple USB controllers instead of simply assuming only one exists in the system. This allows discovery of devices that may be attached to the other controllers instead of the operating system ignoring them.<br />
<br />
USB Requests Implemented<br />
* USB_DEVICE_DESCRIPTOR_TYPE<br />
* USB_CONFIGURATION_DESCRIPTOR_TYPE<br />
* URB_FUNCTION_SELECT_CONFIGURATION<br />
* URB_FUNCTION_CLASS_DEVICE<br />
* USB_DEVICE_CLASS_HUB<br />
* USB_BUS_INTERFACE_USBDI_V2<br />
* USB_BUS_INTERFACE_HUB_V5<br />
* URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE<br />
* IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION<br />
* IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE<br />
* IOCTL_INTERNAL_USB_GET_HUB_COUNT<br />
* URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN<br />
* USB_REQUEST_CLEAR_FEATURE<br />
* USB_REQUEST_GET_STATUS<br />
* USB_REQUEST_SET_FEATURE<br />
<br />
= Drivers =<br />
* SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.<br />
* ISAPNP driver has been removed from the set of drivers loaded during booting.<br />
== KDBG ==<br />
* Attaching to processes fixed.<br />
== Miniport ==<br />
* ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.<br />
== NPFS ==<br />
* ReadEvent and WriteEvent have been changed to be notification events.<br />
* A race condition when a read IRP is cancelled has been fixed, reducing random crashes and hangs.<br />
* Various memory leaks have been dealt with.<br />
* Status information now correctly informs a reading/writing thread that a pipe is dead.<br />
* Various buffer checks have been added to prevent attempts to use a buffer that is too small for an operation on a named pipe.<br />
== PCI ==<br />
A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.<br />
* Interrupt Request routing implemented.<br />
* Handling of devices that incorrectly implement the PCI standard has been improved.<br />
* Querying and discovery of devices attached to PCI bus implemented.<br />
* Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.<br />
== PCMCIA ==<br />
* Driver has been stubbed so will require more work before any functionality is added.<br />
== Video ==<br />
* Initial implementation of a driver for the VMWARE SVGA-II Video Card added.<br />
* Various x64 portability fixes to the current VGA driver.<br />
* A unified VBE/VGA miniport driver has been added along with a new Framebuffer Display Driver.<br />
== VIDEOPRT ==<br />
* Proper error codes are now used.<br />
<br />
= Libraries =<br />
== ADVAPI32 ==<br />
* Resources for tracking services are created and destroyed as services start and stop.<br />
* Hardware profiles actually create GUIDs instead of hardcoding them to zero.<br />
* Computer name is used inside of eventlog.<br />
== CPORTLIB ==<br />
* ComPort library has been implemented, based off of the Microsoft whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation.<br />
== CRT ==<br />
* CRT is now linked statically for freeloader, rtl, bmfs, ftfd, and mini_hal.<br />
* CRT is dynamically linked for ntdll, crtdll, and included versions of msvcrt.<br />
* x87 assembly implementation of pow() function imported from glibc, replacing broken implementation in ReactOS.<br />
* Pointer comparison fixed in signal().<br />
* Various functions dealing with codepages and conversions between different encodings have seen fixes.<br />
* x64 implementations of various basic math and pointer functions added.<br />
== KERNEL32 ==<br />
The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.<br />
* Remove all Windows 95 function exports.<br />
* Stub all functions that kernel32 is supposed to export.<br />
* Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.<br />
* kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.<br />
* Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.<br />
* Switching between fibers fixed.<br />
* Various x64 portability changes.<br />
* NT-style debug channels are now enabled and used.<br />
== GDI32 ==<br />
* Leaking of regions temporarily fixed.<br />
* Batch support added for selecting regions for clipping.<br />
* Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.<br />
== MSVCRT ==<br />
* Exports added for a variety of functions.<br />
== NTDLL ==<br />
* Various fixes to loading functions for libraries and executables.<br />
* Service status is now reported to the service manager.<br />
* Various x64 portability changes.<br />
== RTL ==<br />
* New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.<br />
* Various fixes to functions that operate on strings.<br />
* x64 portability fixes for functions that operate on the byte level.<br />
== USER32 ==<br />
* Setting of regions now behaves correctly.<br />
* Cursor icons follow correct call chain instead of calling functions that do not exist.<br />
* Various x64 portability changes.<br />
* Scrollbar tracking now ends if mouse capture is lost.<br />
* Window management code saw refactoring and fixes.<br />
* Start user handle manager rewrite.<br />
* Window text string converted from UNICODE_STRING to LARGE_STRING, fixing display of large text windows.<br />
== PSEH ==<br />
* A dummy PSEH implementation has been added for CLANG.<br />
* x64 version of PSEH has been stubbed.<br />
<br />
= Client/Server Runtime =<br />
== CSRSRV ==<br />
* Code from CSRSS has been moved into CSRSRV.<br />
* CsrTerminateProcess now destroys all CSR threads in a process, fixing the issue of processes never actually dying and their resources never being freed. Besides the resource leak, other processes that wished to use exclusive resources were also starved.<br />
* Basic user mode shutdown support added by exporting process/thread management functions for use by Win32CSR, allowing for shutting down of processes and cleaning up after them.<br />
* Second attempt shutting down of applications is now more forceful and processes are forcefully terminated in most situations.<br />
<br />
== Win32CSR ==<br />
* Hard error handling rewritten, now using Unicode strings and does not crash due to malformed arguments being passed to it.<br />
* Dynamic LineBuffer removed as it was not being properly resized and caused corruptions.<br />
* CsrFreeConsole now closes a process' console handles.<br />
* Locking simplified to having only one for a console.<br />
* Handles to a screen buffer is now tracked instead of references. When all handles have been closed, the buffer is deleted even if it is the "active" buffer.<br />
* RECT/SMALL_RECT structures are now used correctly/consistently. RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive while SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive.<br />
* Text selection outside the visible window is now allowed.<br />
* Console pausing is now implemented.<br />
* Line input processing code now merged into one place instead of being duplicated in multiple places.<br />
* Basic line editing and line editing history implementation added.<br />
* Setting the console screen buffer size has been implemented.<br />
* CREATE_NO_WINDOW flag support added, allowing creation of invisible consoles.<br />
* Management of console windows moved to Win32CSR from CSRSRV.<br />
<br />
== Kernel-mode subsystem server (Win32K) ==<br />
The kernel-mode side of the Win32 subsystem underwent significant modification since the last release. A great deal of progress has been made in the yarotows branch, but there was not enough time to incorporate its improvements. However, effort was made to deal with some of the more visible usability issues. Fixes to drawing of icons should mean they look better than in past releases and a new timer mechanism finally eliminates the problems with using Firefox to browse the internet.<br />
* Creation of bitmaps by the graphics engine is severely broken and a partial rewrite has begun on it.<br />
* Initial implementation of a new window object added.<br />
* Several fixes to Windows Hook Procedures that causes application lockups.<br />
* Shell can now be restarted after killing it.<br />
* Fix cases where windows can deadlock when waiting on another window to finish.<br />
* Fixes to minimizing/maximizing and setting focus of windows.<br />
* SendMessageCallback now implemented.<br />
* Timer implementation suffered from a bug where freed timers would not be available due to improper cleanup.<br />
* Non-queued messages are no longer expected to have a reference to a message queue.<br />
* Icon drawing reimplemented.<br />
* A kernel timer is now used to intermittently force a check on user mode timers instead of simply waiting until a message arrives before carrying out the check.<br />
<br />
== BASE ==<br />
<br />
== DLL ==<br />
<br />
<br />
=== WIN32 ===<br />
<br />
<br />
==== NETCFGX ====<br />
* Improve the DNS data exchange between the basic IP settings and the advanced DNS panel ([[Gregor Schneider]])<br />
* Simplify LaunchAdvancedTcpipSettings ([[Gregor Schneider]])<br />
* Save DHCP and DNS settings from the basic TCP/IP panel independently of each other ([[Gregor Schneider]]; {{bug|5193}})<br />
* Remove the hack that set DI_NEEDRESTART for all network adapters which prevented us from starting the miniport driver ([[Cameron Gutman]])<br />
* Part of the fix for bug 3716 ([[Cameron Gutman]])<br />
* Start the TCP/IP driver after we install a network adapter ([[Cameron Gutman]])<br />
* This fixes the major bug that blocks Live CD networking but we still have some DHCP issues (DHCP starts and fails before the NIC and TCP/IP has been installed) and some other adapter detection issues that I need to look into but this is a good first step ([[Cameron Gutman]])<br />
* Create the DhcpEnabled value in the registry ([[Cameron Gutman]])<br />
<br />
==== NETSHELL ====<br />
* Fix some German resources: ([[Gregor Schneider]])<br />
* Use BS_MULTILINE instead of embedding newline characters into text ([[Gregor Schneider]])<br />
* Make groupboxes and text fit into the window ([[Gregor Schneider]])<br />
* Load all LAN status icons with the same size ([[Gregor Schneider]]; {{bug|3813}})<br />
* Only set the status icon if the icon occurred, don't set NULL icons (properties of LAN adapter window) ([[Gregor Schneider]]; {{bug|3813}})<br />
* Fix LAN status icon resource ([[Gregor Schneider]]; {{bug|3813}})<br />
* Improve current network connection status icons. ([[Gabriel Ilardi]])<br />
<br />
==== NTMARTA ====<br />
* AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. ([[Michael Martin]])<br />
<br />
==== QMGR ====<br />
* Don't bulldoze our netsvcs key to install a service that doesn't even work yet ([[Cameron Gutman]])<br />
* Add the FLG_ADDREG_APPEND flag when writing the netsvcs value because, unlike WINE, we are actually going to have values in there ([[Cameron Gutman]])<br />
* Reapply r47268 to fix DHCP ([[Cameron Gutman]])<br />
* Implement DeviceHandleToUsbDevice and remove IsHandleValid. ([[Michael Martin]])<br />
* Add call to DeviceHandleToUsbDevice for all Direct Call functions that pass DeviceHandle. ([[Michael Martin]])<br />
* Stop the processing of Asynchronous List after the Control Request has been processed by controller. ([[Michael Martin]])<br />
* Misc changes. ([[Michael Martin]])<br />
* Fix a FIXME in fastfat driver which also fixes a BSOD in kernel32 path winetest ([[Pierre Schweitzer]])<br />
* sysreg doesn't like rain of SEMI-STUB debug ([[Sylvain Petreolle]])<br />
<br />
==== SETUPAPI ====<br />
* Open Device Class with desired access ([[Johannes Anderwald]])<br />
* Implement SetupDiOpenDeviceInterfaceW ([[Johannes Anderwald]])<br />
* Store device settings in the "Device Parameters" key, as the kernel now does it too ([[Johannes Anderwald]])<br />
* Fixes display of AC97 device in audio cpl ([[Johannes Anderwald]])<br />
* Fix an incorrect length value that corrupted REG_MULTI_SZ values when they had strings appended ([[Cameron Gutman]])<br />
* I'm not sure if this is synced with WINE, but if it is, they need this patch too ([[Cameron Gutman]])<br />
<br />
==== USERENV ====<br />
* Revert r43057: setting environment variables per process is not useful here, a higher authority has to do this globally ([[Gregor Schneider]]; {{bug|4008}})<br />
* Create 'Default User' and 'All Users' directories without postfix and append a postfix only if they already exist. ([[Eric Kohl]])<br />
* Create the user account directory without a prefix and append a prefix if the directory already exists. ([[Eric Kohl]])<br />
* Acquire the restore privilege before unloading a hive and remove it after unloading the hive. ([[Eric Kohl]])<br />
* Patch is based on Gabriel Ilardi's patch. Fixes bug #2972. ([[Eric Kohl]])<br />
* Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. ([[Eric Kohl]]; {{bug|2972}})<br />
* Fixes bug #4008. ([[Eric Kohl]]; {{bug|2972}})<br />
* Disable GDI batch code for regions. "Fixes" broken drawing for AcrobatReader. Yes, it's a "band aid over a bullet wound". I hope the man with the gun is a surgeon, too. ([[Timo Kreuzer]])<br />
* CreateEnvironmentBlock: Also add the volatile environment values to the users environment block. ([[Eric Kohl]])<br />
* Fix Italian commonfiles ([[Gabriel Ilardi]])<br />
* Fix a typo and some Spanish environment variables ([[Gabriel Ilardi]])<br />
* Fix mistakenly translated strings "recent" and "sendto" in Italian and Spanish resources, plus another Spanish fix. ([[Gabriel Ilardi]])<br />
<br />
==== WINMM ====<br />
* Fix a number of 64bit issues, add some comments where the code is not 64 bit safe. This module should be synced with wine, but this still causes a problem with Flash videos on FF2 (likely another timer problem) ([[Timo Kreuzer]])<br />
<br />
== DRIVERS ==<br />
<br />
===== BMFD =====<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
== LIB ==<br />
<br />
=== CMLIB ===<br />
* Just use UNIMPLEMENTED. ([[sir_richard]])<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
<br />
===== MMENT4 =====<br />
* Remove a ";" after an if (), that makes no sense and caused GetNt4SoundDeviceCapabilities to always return without doing anything. ([[Timo Kreuzer]])<br />
* Fix warning about uninitialized variable ([[Timo Kreuzer]])<br />
<br />
=== FSLIB ===<br />
<br />
==== VFATLIB ====<br />
* Get rid of the hard-coded sector size as large sector (4KB) harddisks are already available. ([[Eric Kohl]])<br />
* When a partition is formatted, choose the FAT type according to the partition type. The size of the partition does not matter here as it is up to the caller to set the right partition type according to its size. ([[Eric Kohl]])<br />
<br />
=== SDK ===<br />
* Add missing IIDs to UUID. ([[Aleksey Bragin]])<br />
* Implement PNP_HwProfFlags. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
<br />
<br />
== NTOSKRNL ==<br />
* Implement basic Headless support in the kernel. Implement missing InbvPort routines based on WinLdrPort (using cportlib). Add header for Hdl. Terminal initializes now on COM2. Added misisng code to InbvDisplayString to also display on Headless Terminal (requires unimplemented HeadlessDispatch). Next steps are to implement the kernel log buffer, and HeadlessCmdPutString to see boot strings. (Anton)<br />
* Implement CmdPutString command, and add log message types. Kernel version/build, processor, and RAM, now appear on EMS screen (due to InbvDisplayString), as well as loaded drivers. Next steps are to support log entries and a flag to route debug output (a ReactOS-specific feature request). (Anton)<br />
* Fix support for non Headless scenarios as well. (Anton)<br />
<br />
<br />
=== BASE_SYSTEM_EXPAND ===<br />
* Update expand utility to Wine-1.1.37. Last update happened 7 years ago and since then it was translated into 20 languages. Sorry to all the translators but the preference is given to a working untranslated version rather than a non-working localized one. ([[Aleksey Bragin]]; {{bug|4637}})<br />
* Update README.WINE. ([[Aleksey Bragin]])<br />
<br />
=== INPUT_I8042PRT ===<br />
* Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running. ([[Michael Martin]])<br />
<br />
<br />
=== NTOS_PERF ===<br />
* Enable VME support. VME stands for Virtual 8086 Mode Extensions, and it's an Intel optimization that makes changes to the IF bit in EFLAGS (CLI, STI, INT, IRETD, PUSHF, POPF) completely transprent: instead of changing the real (protected) bit, which requires the OS to trap and emulate the behavior, the CPU sets a "Fake" IF bit instead. When you're down in V8086 mode, you simply update your real flag with whatever the fake flag says. ([[sir_richard]])<br />
<br />
<br />
=== WIN32K|GDI32 ===<br />
* Fix GdiBatch, the limit is for user space not system. ([[James Tabor]])<br />
* Enable font batch and fixed setting brush origion. Use the new delete object functions in win32k. ([[James Tabor]])<br />
<br />
=== WIN32K|GGI32 ===<br />
* Diagnostic commit used for troubleshooting leaking region handles. ([[James Tabor]])<br />
* Updates to headers and experimental code added for regions. ([[James Tabor]])<br />
<br />
=== XDK_DDK ===<br />
* Relax INTERLOCKED_RESULT inclusion guard. ([[Amine Khaldi]])<br />
<br />
=== SYSGEN ===<br />
* Implement a rewrite of rbuild written in c# ([[Marc Piulachs]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.12&diff=28867
ChangeLog-0.3.12
2010-10-14T00:06:27Z
<p>CycleGeek: /* Translations */ typos, append .cpl</p>
<hr />
<div>TODO: Need a list compiled for apps updated/added to the rosapp list. We'll stick this under the Generic Changes section. -Z98<br />
<br />
TODO: Document all the hacks that go into this release to cover up, issues. This information may not yet be available. -Z98<br />
<br />
NOTE: List of names are supposed to be organized based off of last name, not first. Only if there is not a last name available do we use the first name. -Z98<br />
<br />
This is the changelog for ReactOS™ [[0.3.12|version 0.3.12]] (date yet to be determined), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.11|version 0.3.11]] (released 16 December 2009).<br />
<br />
= General =<br />
Since the last release, ReactOS has seen considerable modification and enhancement at all levels of the operating system. Unlike past changelogs which simply compiled a long list of changes, a highly unwieldy arrangement that did not convey much in the way of useful and accessible information, this changelog will attempt to summarize and emphasize major points of interest. There will still be lists of changes, but these will serve only as further emphasis. Interested readers should find most of the relevant information in the summaries under each section.<br />
== Contributors ==<br />
=== Core Developers ===<br />
* Giannis Adamopoulos: Applications, Win32.<br />
* Johannes Anderwald: Kernel, sound.<br />
* Aleksey Bragin: Filesystem, kernel, Win32k.<br />
* Colin Finck: Build tools, translations, release engineer.<br />
* Jérôme Gardou: Win32.<br />
* Stefan Ginsberg: Kernel.<br />
* Dmitry Gorbachev: Applications.<br />
* Cameron Gutman: Networking, PnP.<br />
* Kamil Horníček: 3D Graphics, Win32.<br />
* Amine Khaldi: Build tools.<br />
* Eric Kohl: Kernel, Win32.<br />
* Timo Kreuzer: Win32k.<br />
* Matthias Kupfer: Applications, Win32.<br />
* Michael Martin: Kernel, USB.<br />
* Jeffrey Morlan: Applications, Win32.<br />
* Filip Narava: USB.<br />
* Sylvain Petreolle: Applications.<br />
* Hervé Poussineau: Kernel.<br />
* ReactOS Portable Systems Group: ARM porting, drivers, kernel.<br />
* Daniel Reimer: Build tools, translations.<br />
* Gregor Schneider: Win32.<br />
* Pierre Schweitzer: Filesystem, kernel.<br />
* James Tabor: Win32.<br />
* Christoph von Wittich: Win32.<br />
<br />
=== Patch Submitters ===<br />
* Andrea<br />
* Carlo Bramini<br />
* James Edmeades<br />
* Benedikt Freisen<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Kusanagi Kouichi<br />
* Radek Liška<br />
* Roel Messiant<br />
* Andrew Nguyen<br />
* Samuel Serapión<br />
* Seungju<br />
* Dmitry Timoshkov<br />
* Henri Verbeet<br />
<br />
=== Localization ===<br />
* forenkrams [AT] tuxproject [DOT] de<br />
* Edison Henrique Andreassy<br />
* Egon Ashrafinia<br />
* Arturs B<br />
* Maciej Bialas<br />
* CCTAHEB<br />
* Paolo Devoti<br />
* Andrew Faulds<br />
* Javier Fernandéz<br />
* Katayama Hirofumi<br />
* Gabriel Ilardi<br />
* Mario Kacmar<br />
* Tomoya Kitagawa<br />
* Igor Paliychuk<br />
* Javier Remacha<br />
* Olaf Siejka<br />
* Andres Traks<br />
* Maikel Wever<br />
* Sakara Yevhen<br />
* Marcelo Zamperetti<br />
<br />
=== Support Staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.12 Changes ==<br />
* Hardware IDs for the following processors have been added to the internal hardware list.<br />
** Cyrix<br />
** Pentium MMX, Pro, II, M, 4<br />
** Core Solo, Duo, Extreme, i3, i5, i7<br />
** Atom<br />
** AMD K6, K6-3, Athlon 64, Turion64, Sempron<br />
** Via Nehemiah, Esther, Nano<br />
* NTVDM is now only built on x86 builds.<br />
=== Applications ===<br />
* Calc: Units and conversion factors added.<br />
* Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.<br />
* IPconfig: Media detection is now fixed.<br />
* MSCUtils: Column names now use resource strings instead of hardcoded strings.<br />
* Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.<br />
* Paint: Initial selection support and angle rounding for lines and edges.<br />
* Regedit: Fix searching the registry.<br />
* Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.<br />
=== Control Panel Applets ===<br />
* Console: Store changes when buffer/window size or color changes.<br />
* Desk: Fix theme switching and screensaver selection.<br />
* Input: Fix changing of keyboard layout.<br />
* Intl: Use resource strings for 'metric' and 'Imperial' strings.<br />
* Sysdm: Fix creation of paging file and place constraints on file size.<br />
=== Installer ===<br />
Various tweaks were made to the installer to ease installing ReactOS.<br />
* Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.<br />
* Fix reading of partitions created in non-standard formats by Linux.<br />
* Minimum space check notification improved. Minimum space value also made configurable through text file.<br />
* Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.<br />
* Installer does not restart in second stage if ESC is pressed.<br />
* PathName and SystemRoot registry key values are now written by the installer.<br />
=== Services ===<br />
* Services no longer trample over other services when reporting their status.<br />
* DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.<br />
* EventLog: Fixes to reading and displaying of log content.<br />
== Tests ==<br />
http://www.reactos.org/testman/compare.php?ids=2123,4021<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* 3dtext<br />
* doskey<br />
* explorer<br />
* ipconfig<br />
* mscutils/servman<br />
* rapps<br />
* shutdown<br />
* spider<br />
* usetup<br />
* winemine<br />
<br />
'''Chinese'''<br />
* charmap<br />
* dxdiag<br />
* fontview<br />
* magnify<br />
* mmc<br />
<br />
'''Czech'''<br />
* appwiz.cpl<br />
* devmgr<br />
* intl.cpl<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* notepad<br />
* paint<br />
* regedit<br />
* setupapi<br />
* shell32<br />
* slayer<br />
* sndvol32<br />
* sysdm.cpl<br />
* userenv<br />
* usetup<br />
* winemine<br />
<br />
'''Dutch'''<br />
* calc<br />
* usetup<br />
<br />
'''English'''<br />
* advpack<br />
* dxdiag<br />
* rapps<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* Add french translations for location overrides. ([[Sylvain Petreolle]])<br />
* eventvwr<br />
* netshell<br />
* paint<br />
* spider<br />
* usetup<br />
<br />
'''German'''<br />
* access.cpl<br />
* appwiz.cpl<br />
* calc<br />
* cmd<br />
* console<br />
* desk.cpl<br />
* deskadp<br />
* deskmon<br />
* devmgr<br />
* doskey<br />
* downloader<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* fontview<br />
* format<br />
* hdwwiz.cpl<br />
* input.cpl<br />
* intl.cpl<br />
* ipconfig<br />
* joy.cpl<br />
* kernel32<br />
* liccpa.cpl<br />
* main.cpl<br />
* mmsys.cpl<br />
* modemui<br />
* mplay32<br />
* msconfig<br />
* mscutils<br />
* msgina<br />
* mstsc<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* newdev<br />
* notepad<br />
* paint<br />
* powercfg<br />
* rapps<br />
* rasdlg<br />
* reg<br />
* regedit<br />
* regsvr32<br />
* runonce<br />
* screensavers/3dtext<br />
* screensavers/logon<br />
* serialui<br />
* setup/reactos<br />
* shdoclc<br />
* shell32<br />
* shimgvw<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* tapiui<br />
* taskmgr<br />
* timedate.cpl<br />
* user32<br />
* userenv<br />
* usetup<br />
* usrmgr.cpl<br />
* vmwinst<br />
* welcome<br />
* winemine<br />
* winlogon<br />
<br />
'''Italian'''<br />
* calc<br />
* explorer-new<br />
* intl.cpl<br />
* mscutils<br />
* netid<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* shell32<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Japanese'''<br />
* cacls<br />
* charmap<br />
* magnify<br />
* mscutils/devmgmt<br />
* mscutils/servman<br />
* paint<br />
* rapps<br />
* runonce<br />
* shutdown<br />
* sndrec32<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Polish'''<br />
* calc<br />
* mscutils<br />
* usetup<br />
<br />
'''Portuguese'''<br />
* syssetup<br />
* usetup<br />
<br />
'''Russian'''<br />
* spider<br />
* sysdm.cpl<br />
* usetup<br />
<br />
'''Slovak'''<br />
* calc<br />
* devmgr<br />
* explorer-new<br />
* intl.cpl<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* syssetup<br />
* usetup<br />
<br />
'''Spanish'''<br />
* browseui<br />
* devmgr<br />
* notepad<br />
* paint<br />
* rapps<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* usetup<br />
* usrmgr.cpl<br />
* welcome<br />
<br />
'''Ukrainian'''<br />
* aclui<br />
* browseui<br />
* charmap<br />
* cmd<br />
* desk.cpl<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* freeldr<br />
* input.cpl<br />
* kernel32<br />
* mscutils/devmgmt<br />
* mscutils/eventvwr<br />
* msgina<br />
* mstsc<br />
* newdev<br />
* notepad<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* setup<br />
* shell32<br />
* shimgvw<br />
* sndrec32<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm.cpl<br />
* syssetup<br />
* taskmgr<br />
* usetup<br />
* winemine<br />
<br />
== Wine Syncs ==<br />
ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synched to versions 1.2 or 1.3.<br />
<br />
Libraries Synced<br />
* activeds<br />
* actxprxy<br />
* amstream<br />
* atl<br />
* avifil32<br />
* cabinet<br />
* clusapi<br />
* comctl32<br />
* comdlg32<br />
* credui<br />
* crypt32<br />
* cryptdlg<br />
* cryptnet<br />
* cryptui<br />
* d3d8<br />
* d3d9<br />
* dbghelp<br />
* ddraw<br />
* dwmapi<br />
* faultrep<br />
* fusion<br />
* gdiplus<br />
* hhctrl.ocx<br />
* hlink<br />
* hnetcfg<br />
* iccvid<br />
* imm32<br />
* inetcomm<br />
* inetmib1<br />
* initpki<br />
* inseng<br />
* itircl<br />
* itss<br />
* jscript<br />
* localspl<br />
* localui <br />
* mapi32<br />
* mciavi32<br />
* mcicda<br />
* mciqtz32<br />
* mciseq<br />
* mciwave<br />
* mdi<br />
* mlang<br />
* mpr<br />
* mscms<br />
* mscoree<br />
* msctf<br />
* msdmo<br />
* msg711.acm<br />
* msgsm32.ac<br />
* mshtml<br />
* msi<br />
* msiexec<br />
* msimtf<br />
* msnet32<br />
* msrle32<br />
* mssip32<br />
* msvcrt20<br />
* msvfw32<br />
* msvidc32<br />
* msxml<br />
* msxml3<br />
* nddeapi<br />
* netapi32<br />
* obsel<br />
* odbc32<br />
* ole32<br />
* oleacc<br />
* oleaut32<br />
* oledlg<br />
* olepro32<br />
* pdh<br />
* postorec<br />
* qedit<br />
* quartz<br />
* query<br />
* riched20<br />
* rpcrt4<br />
* rsaenh<br />
* schannel<br />
* shdoclc<br />
* shdocvw<br />
* shlwapi<br />
* sti<br />
* tapi32<br />
* urlmon<br />
* usp10<br />
* uxtheme<br />
* version<br />
* widl<br />
* windowscodecs<br />
* wined3d<br />
* wininet<br />
* wintrust<br />
* xmllite<br />
<br />
== Third Party Libraries ==<br />
* DejaVu Fonts updated to 2.31<br />
* FreeType updated to 2.3.12<br />
* Liberation Fonts updated to 1.05.2<br />
* libjpeg updated to 8b<br />
* libpng 1.4.3 added<br />
* libtiff 3.9.4 added<br />
* libxml updated to 2.7.7<br />
* zlib updated to 1.2.5<br />
<br />
== Regressions ==<br />
* #4086 cdfs: Data inaccessible for view under Explorer<br />
* #4330 crashes upon restart after installing a driver for 3com Fast Etherlink network adapter<br />
* #4811 comctl32: dll winesync broke AbiWord toolbar<br />
* #5025 freeloader error while booting from GRUB with Ubuntu and Windows XP installed<br />
* #5035 Abiword: fonts listbox isn't shown properly<br />
* #5158 some keystrokes get lost if typing fast in VirtualBox<br />
* #5290 Slowness during file copying in 1st stage in VirtualBox<br />
* #5320 "Assertion 'FALSE' failed at subsystems/win32/win32k/ntuser/windc.c line 739", preceded by "Not POWNED or CLASSDC hwndCurrent" debugprint<br />
* #5372 "Failed to create directory L"%USERPROFILE%\\Local Settings\\" debug print in 2nd stage<br />
* #5443 Inkscape 0.43-2 crashes immediately upon start.<br />
* #5484 New windows are created on top of older ones<br />
* #5503 Far Manager 1.65 fails to start<br />
* #5504 Internet Explorer 6 errors out at setup<br />
* #5524 Displaced numbers on virtual desktop icons in 32bpp<br />
* #5530 COM ports not available anymore<br />
* #5554 Warning/error window is misplaced and misshaped<br />
* #5560 Acrobat Reader 7.1 crashes at start<br />
* #5569 App tray icons are not displayed<br />
* #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn<br />
<br />
== Build Tools ==<br />
=== LOG2LINES ===<br />
* Updated to version 2.2<br />
<br />
=== RBUILD ===<br />
RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.<br />
* Non-existent DLL functions can be exported.<br />
* Function export names are not properly decorated, allowing export names to not match the original function names.<br />
* If function targets are not found, RBuild will link the DLL to itself.<br />
Some development on RBuild also took place before the decision was made to switch over to CMake.<br />
* Initial Visual Studio 2010 project file support.<br />
* Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.<br />
=== RosBE ===<br />
* Build environment now uses GCC 4.4.x as the compiler.<br />
* -fno-unit-at-a-time hacks have been removed.<br />
* Auto-export of all symbols has been turned off.<br />
<br />
= Core Functionality =<br />
<br />
== Audio/Video Stack ==<br />
The A/V stack has seen a great deal of enhancements and fixes since the last release. Preliminary sound support was already present in the previous release, but it was highly rudimentary. Beyond simple playback not much else was controllable. Effort has gone into controlling the mixing of the playback, providing the ability to manipulate the volume and other general usability features such as pausing and restarting. These required finer control and management over the signal data that represents the sound and the sound devices that actually play it. Querying of audio devices has been implemented, allowing the system to discover the functionality a device supports and how to access them. More work however needs to be done to better use those features as well as managing the resources associated with sound playback.<br />
<br />
In addition to increased sound playback support, work was begun on the framework for playing back broadcast media. These are generally through TV-tuners and have their own set of interfaces that must be implemented. These consist of a series of drivers and filters that determine which channel the system should capture media from and then process. Currently the broadcast standard being implemented is the Digital Video Broadcasting-Terrestrial.<br />
<br />
A key component to all media playback is the kernel streaming component, which handles the majority of actual manipulation of media data.<br />
=== BDA ===<br />
The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.<br />
* Interfacing with broadcast devices implemented.<br />
* Filtering of broadcast frequencies implemented.<br />
=== DSOUND ===<br />
A library that bypasses some of the layers in the sound stack to try and speed up processing.<br />
* Starting and stopping audio implemented.<br />
* Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.<br />
=== Kernel Streaming ===<br />
The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.<br />
* Device initialization and registration implemented.<br />
* Objects allocated are placed onto a list for automatic reclamation.<br />
* Pin interface for controlling devices implemented, though issuing of commands still needs work.<br />
=== KSPROXY ===<br />
A DirectShow filter that relays media through the user mode kernel streaming library.<br />
* Enumeration of supported functionality on devices implemented.<br />
* Signal statistics from BDA devices are delivered by KSPROXY.<br />
* Media stream sampling is done to determine buffer allocation strategy.<br />
* Multiple media samples can be dispatched simultaneously.<br />
=== PORTCLS ===<br />
The driver that manages most of the audio functionality in NT.<br />
* Currently a "silent" buffer is used when no audio buffers are available for playback.<br />
* Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.<br />
* A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.<br />
* Audio stream data is only copied to the common buffer when the pin owning it is in a running state.<br />
<br />
== Filesystems ==<br />
The filesystem framework on ReactOS has for most of the project's history been largely absent. The main support library for filesystems, FsRtl, did not exist and all of the filesystem drivers reimplemented the functionality it was supposed to provide. This has changed recently with the initial implementation of the FsRtl. Currently the FsRtl provides support for notification of changes to the volume's state, such as a device being mounted or unmounted. Notification of changes to a volume's content has not yet been implemented but is the next step. The old FAT filesystem driver has been updated to use some of the new functionality, as has the CDFS driver, providing the ability to eject a CD.<br />
<br />
A new FAT filesystem driver is also being implemented by creating a wrapper around the FullFAT library. However, it is still a work in progress and was not ready for this release.<br />
<br />
== Hardware Management ==<br />
Progress has been made in efforts to give ReactOS better support for various hardware control specifications.<br />
<br />
=== ACPI ===<br />
A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.<br />
* Enumerate attached devices.<br />
* Receive commands from power buttons.<br />
=== ACPI HAL ===<br />
The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.<br />
* Resource querying implemented.<br />
* Separation of ACPI and non-ACPI bus handling.<br />
=== Battery Framework ===<br />
Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.<br />
* Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.<br />
* Composite Battery Driver: Battery detection and PnP notification implemented.<br />
=== Legacy HAL ===<br />
The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.<br />
* i8259A programmable interrupt controller initialization implemented in C.<br />
* HAL now detects EISA systems with the Edge/Level Control Register.<br />
* Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.<br />
* Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.<br />
* IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.<br />
* HAL no longer relies on the memory manager for allocations.<br />
* Various debugging related functions implemented.<br />
* CMOS, ISA, and SYSTEM bus handlers are now registered.<br />
* HAL now can detect PCI and PCI-to-PCI bridges.<br />
* Checks for ABIOS have been removed as it is not supported by ReactOS or Windows.<br />
=== Plug n Play ===<br />
* Writing of resource list has been fixed to avoid corrupting the registry.<br />
* Registry values for legacy devices are now written.<br />
* Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.<br />
<br />
== Memory Management ==<br />
The memory manager has been slowly rewritten over the past several months, with components being replaced piece by piece while the rest of the system continued on as before. To achieve this required separating the blocks of memory controlled by the new memory manager, ARM3, and the old memory manager. As more of ARM3 was completed, it took over more responsibility from the old memory manager, in the process exposing countless bugs, corruptions, and leaks in not only the old manager but broken code in higher layers of the operating system. This resulted in several major breakages at various points during the last year but the majority of them have been dealt with. For this release much of the ARM3 functionality has not been enabled to lessen the risk of major regressions slipping in. However, it is already capable of allocating most types of memory blocks such as pool memory and creating address spaces. The next release will see ARM3 enabled and effectively acting as the sole memory manager.<br />
<br />
Work on the x64 port also required that virtual memory support be updated to support the page table entry format on x64. Support was added in both the old memory manager and ARM3 due to the concurrent nature of the work and a great deal of refactoring was also done to separate platform independent code. This was also done to benefit the effort to port ReactOS to the ARM platform, as it also has a different format for page table entries.<br />
* Page Table Entries work under x64.<br />
* Correctly report the amount of memory available to applications and drivers.<br />
* Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.<br />
* Code refactored so architecture independent code can be shared across platforms.<br />
* Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.<br />
* Global pages support removed due to currently broken code.<br />
* Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.<br />
* Stubs have been added for various large page functions in case future work is done to add support.<br />
* Paging driver code and data implemented.<br />
* A check to detect potential corruption in contiguously allocated blocks of memory has been added.<br />
=== ARM3 ===<br />
* Virtual Address Descriptor data structures implemented.<br />
* Page table and directory entry initialization implemented.<br />
* Stack frames are allocated using ARM3.<br />
* Paged pool allocations can be done through ARM3.<br />
* Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.<br />
* Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.<br />
* Shared user data pages are handled by ARM3.<br />
* New AVL tree implementation used to manage Virtual Address Descriptors.<br />
* Creation of the process address space is now done by ARM3.<br />
* IsBadRead/CodePtr fixed to work with ARM3.<br />
<br />
== Network Stack ==<br />
The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.<br />
=== IP ===<br />
* Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.<br />
* No attempt is made to close a socket already terminated by the remote peer.<br />
* Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.<br />
=== MSAFD ===<br />
The current socket implementation on ReactOS.<br />
* Error codes are now properly reported, fixing many of the Winetests for this component.<br />
* Failures on operations are now reported instead of simply being left dangling.<br />
* Events are waited on instead of immediately being closed.<br />
* Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.<br />
* Socket information is now cleaned up after a socket is closed.<br />
* Support for connectionless sockets added.<br />
* Reading data using the peek functionality no longer causes corruptions.<br />
=== NDIS ===<br />
* Timer queues have been disabled to prevent the VirtualBox Intel Pro/1000 emulated network card from crashing ReactOS.<br />
* Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.<br />
* Network adapter initialization and binding cleaned up to avoid duplicate entries.<br />
=== OSKITTCP ===<br />
* Multiple wakeups are now prevented from occurring.<br />
* Sent/received reports are only sent if operation completed successfully.<br />
* A check was added to make sure accept is not called on a socket that is not listening.<br />
=== WS2_32 ===<br />
* Reading host files now supported.<br />
<br />
== Kernel ==<br />
The ReactOS kernel saw several major pieces rewritten from x86 assembly to C. This allows considerably more code reuse when porting to other platforms but also resulted in several major bugs being fixed. Two especially important components rewritten were the the system call interface and trap handlers. The syscall interface suffered from an especially severe bug that prevented the use of specialized instructions for entering and leaving kernel mode. Fixing this bug has helped decrease the time needed for each syscall and due to the number of times a system will make syscalls quickly adds up. Situations where a syscall can be avoided have also see them removed or deferred, further increasing performance.<br />
<br />
There exists code in the kernel that requires transitions to real mode in the processor in order to run. Support for Virtual 8086 has bee added, permitting their execution while remaining in protected mode. Due to the expense of these transitions, avoiding it can also help performance.<br />
<br />
Various other issues ranging from missetting special registers, which could cause data corruption and crashes when in kernel mode, and basic device driver handling, also saw fixes.<br />
* IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.<br />
* FPU state is now correctly not saved when a kernel debugger is not attached.<br />
* Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.<br />
* Trap handling code converted to C with minimal bits of assembly.<br />
* Interrupt handling in kernel converted to C to match conversion done in HAL.<br />
* System call handling now implemented in C.<br />
* Entrypoint of kernel moved to KiSystemStartup.<br />
* KeUpdateSystemTime interface is no longer Windows compatible. No third party code should ever call it however so change should not matter.<br />
* Interrupts are now handled when in Virtual 8086 mode.<br />
* Calling KiSystemService directly with interrupts enabled no longer corrupts the trap frame, fixing some failures on QEMU and real hardware.<br />
* Checks have been added to avoid drivers linked with user mode DLLs.<br />
* Dependency checking for driver unloading implemented.<br />
* When a driver fails to load, the kernel no longer attempts to unload modules that were never initialized.<br />
* The SYSEXIT code used for returning to user mode after a system call into kernel mode has been fixed, allowing the use of the SYSENTER/SYSEXIT combination instead of IRETD. This feature is only available on Pentium II and newer processors and should help decrease the time needed for such hopping between modes for system calls.<br />
* All trap handling code is now marked as no-return, allowing the compiler to better optimize them.<br />
* The Processor Control Block is no longer volatile in KeGetPcr, making the C code cleaner as the PCR no longer needs to be constantly reloaded. This also helps performance with the removed need for loading.<br />
== I/O ==<br />
* Device property retrieval now returns correct information for the device name.<br />
* IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.<br />
* Changes in device status are now reported.<br />
* New resource information is now reported.<br />
<br />
== Registry ==<br />
* A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.<br />
* Opening registry values for symbolic links is fixed.<br />
* cmlib, newinflib and mkhive now use the Wine unicode library instead of the host_wcsfuncs library.<br />
=== MKHIVE ===<br />
The registry generator.<br />
* newinflib is now used instead of inflib.<br />
* Registry generation now uses the Unicode API instead of ascii.<br />
* Work has been done to properly free resources, as mkhive is suffering from several memory leaks.<br />
=== NEWINFLIB ===<br />
* Unicode aware version of inflib added, newinflib.<br />
* String functions now use the str*W group instead of wcs* due to glibc on Linux builds using a 32bit wchar_t instead of 16bit. A wrapper has been added to allow continued use of wcs* functions on Windows builds.<br />
<br />
== Startup/Shutdown ==<br />
Startup time on ReactOS has benefited considerably from optimizing for the much more resource constrained ARM platform. The code responsible for drawing menus and the like at boot time has seen considerable simplification to avoid unnecessary operations and drawings. In addition, the amount of memory used by Freeloader to boot the operating system has also decreased. The cumulative effect of the changes has meant that there should be a noticeable difference in how quickly ReactOS boots versus previous versions and also when compared to Windows XP.<br />
<br />
Properly shutting down has also seen some improvement, as the operating system is better able to keep track of which processes have yet to terminate. Those that take too long are now forcibly terminated.<br />
<br />
One other significant change was the changing of the Freeloader executable to be in the Portable Executable format instead of a raw binary. This was done to enable better support for debugging problems that can occur at boot time, as a raw binary does not offer much help in trying to see what code has been executed.<br />
* Progress bar during boot now displays correctly.<br />
* Logos now have the correct color palette and the correct logo is used for booting and shutting down.<br />
* Driver loading code used during booting has been switched to use low level Configuration Manager interfaces, decreasing boot time.<br />
* A crude timing mechanism has been added to see how many CPU cycles have passed between the first instruction of the kernel, the initialization of the registry by the SMSS, and the moment 12 processes have started up, which is approximately equivalent to getting to the GUI from boot.<br />
=== BootVid ===<br />
* Broken initialization code removed and a correct implementation added.<br />
* 4bpp blitting code simplified.<br />
* x64 portability fixes.<br />
* Initialization of bootvid no longer requires a shift into real mode, allowing for faster booting.<br />
=== FreeLoader ===<br />
* FreeLoader is now compiled into the Portable Executable format to allow for debugging.<br />
* FreeLoader no longer needs to be installed on the first partition of the first disk.<br />
* FreeLoader UI on ARM rewritten to slim down on resources needed.<br />
* Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.<br />
* x64 portability fixes.<br />
* Loading on the ARM platform has been changed to match EFI/Firmware model.<br />
=== Session Manager Subsystem ===<br />
* SMSS can now add several system environment variables to the registry.<br />
* SMSS now creates a new default paging file if none exists.<br />
=== Winlogon ===<br />
* Environment variables for user are now properly loaded upon login.<br />
<br />
== Security ==<br />
* NtAcessCheck fixed to account for various error cases and improper usage.<br />
* Security token is now checked for what level of authorization it is trying to impersonate.<br />
* Success is only reported if all access requests have been granted.<br />
* Attempts to duplicate security tokens fail if authorization level is too low.<br />
=== LSA ===<br />
* A single table is now used for mapping privilege names to values.<br />
* Initial implementation of a lookup table for well-known SIDs has been added.<br />
* Account name lookup call chain implemented, but dummy names are still returned.<br />
<br />
== Shell ==<br />
The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.<br />
* Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.<br />
=== Explorer ===<br />
* Clock is no longer clipped in its window.<br />
* 24bpp start menu icon added.<br />
=== SHELL32 ===<br />
* Confirmation dialog added for logging off.<br />
* Open With dialog now allows aborting of operation.<br />
* Localized error text now displayed as messagebox caption.<br />
* Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.<br />
* Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.<br />
* Initial file copy/move/delete dialog implementation added.<br />
* File association error texts added.<br />
<br />
== Storage Stack ==<br />
The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.<br />
* Logical units in extended partitions are visible but are not accessible yet.<br />
* Querying for Native ATA channels and configuring controller to use NATA implemented.<br />
=== RAMDISK ===<br />
* Fixes for using ramdisk when booting on ARM.<br />
=== SCSIPORT ===<br />
* x64 portability fixes.<br />
=== UniATA ===<br />
* Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.<br />
<br />
== USB ==<br />
ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. Under specific configurations USB keyboards and mice could be used with it, but the setup was extremely inflexible. The NT5 USB architecture is considerably different and a new USB stack based on it has been started. The lower level of this stack is composed of several pieces. The usbd library acts as a helper library for third party USB drivers, ones that manufacturers write for their products. It provides some querying functionality to help find attached devices. I/O request packets are sent by usbhub, and usbport acts as an intermediary, sorting the messages based on which type of USB controller they are for and selecting the appropriate helper driver to handle it. These helper drivers are usbehci, usbohci, and usbuhci. Currently the new USB stack has a basic implementation of usbd, usbhub, usbport, and usbehci. They are still incomplete and ReactOS cannot yet use them to actually use USB devices, but basic discovery of devices is possible.<br />
<br />
The old USB driver continues to see fixes and enhancements as the new USB stack will take much time to fully mature. Some notable changes include the ability to deal with multiple USB controllers instead of simply assuming only one exists in the system. This allows discovery of devices that may be attached to the other controllers instead of the operating system ignoring them.<br />
<br />
USB Requests Implemented<br />
* USB_DEVICE_DESCRIPTOR_TYPE<br />
* USB_CONFIGURATION_DESCRIPTOR_TYPE<br />
* URB_FUNCTION_SELECT_CONFIGURATION<br />
* URB_FUNCTION_CLASS_DEVICE<br />
* USB_DEVICE_CLASS_HUB<br />
* USB_BUS_INTERFACE_USBDI_V2<br />
* USB_BUS_INTERFACE_HUB_V5<br />
* URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE<br />
* IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION<br />
* IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE<br />
* IOCTL_INTERNAL_USB_GET_HUB_COUNT<br />
* URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN<br />
* USB_REQUEST_CLEAR_FEATURE<br />
* USB_REQUEST_GET_STATUS<br />
* USB_REQUEST_SET_FEATURE<br />
<br />
= Drivers =<br />
* SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.<br />
* ISAPNP driver has been removed from the set of drivers loaded during booting.<br />
== KDBG ==<br />
* Attaching to processes fixed.<br />
== Miniport ==<br />
* ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.<br />
== NPFS ==<br />
* ReadEvent and WriteEvent have been changed to be notification events.<br />
* A race condition when a read IRP is cancelled has been fixed, reducing random crashes and hangs.<br />
* Various memory leaks have been dealt with.<br />
* Status information now correctly informs a reading/writing thread that a pipe is dead.<br />
* Various buffer checks have been added to prevent attempts to use a buffer that is too small for an operation on a named pipe.<br />
== PCI ==<br />
A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.<br />
* Interrupt Request routing implemented.<br />
* Handling of devices that incorrectly implement the PCI standard has been improved.<br />
* Querying and discovery of devices attached to PCI bus implemented.<br />
* Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.<br />
== PCMCIA ==<br />
* Driver has been stubbed so will require more work before any functionality is added.<br />
== Video ==<br />
* Initial implementation of a driver for the VMWARE SVGA-II Video Card added.<br />
* Various x64 portability fixes to the current VGA driver.<br />
* A unified VBE/VGA miniport driver has been added along with a new Framebuffer Display Driver.<br />
== VIDEOPRT ==<br />
* Proper error codes are now used.<br />
<br />
= Libraries =<br />
== ADVAPI32 ==<br />
* Resources for tracking services are created and destroyed as services start and stop.<br />
* Hardware profiles actually create GUIDs instead of hardcoding them to zero.<br />
* Computer name is used inside of eventlog.<br />
== CPORTLIB ==<br />
* ComPort library has been implemented, based off of the Microsoft whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation.<br />
== CRT ==<br />
* CRT is now linked statically for freeloader, rtl, bmfs, ftfd, and mini_hal.<br />
* CRT is dynamically linked for ntdll, crtdll, and included versions of msvcrt.<br />
* x87 assembly implementation of pow() function imported from glibc, replacing broken implementation in ReactOS.<br />
* Pointer comparison fixed in signal().<br />
* Various functions dealing with codepages and conversions between different encodings have seen fixes.<br />
* x64 implementations of various basic math and pointer functions added.<br />
== KERNEL32 ==<br />
The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.<br />
* Remove all Windows 95 function exports.<br />
* Stub all functions that kernel32 is supposed to export.<br />
* Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.<br />
* kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.<br />
* Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.<br />
* Switching between fibers fixed.<br />
* Various x64 portability changes.<br />
* NT-style debug channels are now enabled and used.<br />
== GDI32 ==<br />
* Leaking of regions temporarily fixed.<br />
* Batch support added for selecting regions for clipping.<br />
* Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.<br />
== MSVCRT ==<br />
* Exports added for a variety of functions.<br />
== NTDLL ==<br />
* Various fixes to loading functions for libraries and executables.<br />
* Service status is now reported to the service manager.<br />
* Various x64 portability changes.<br />
== RTL ==<br />
* New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.<br />
* Various fixes to functions that operate on strings.<br />
* x64 portability fixes for functions that operate on the byte level.<br />
== USER32 ==<br />
* Setting of regions now behaves correctly.<br />
* Cursor icons follow correct call chain instead of calling functions that do not exist.<br />
* Various x64 portability changes.<br />
* Scrollbar tracking now ends if mouse capture is lost.<br />
* Window management code saw refactoring and fixes.<br />
* Start user handle manager rewrite.<br />
* Window text string converted from UNICODE_STRING to LARGE_STRING, fixing display of large text windows.<br />
== PSEH ==<br />
* A dummy PSEH implementation has been added for CLANG.<br />
* x64 version of PSEH has been stubbed.<br />
<br />
= Client/Server Runtime =<br />
== CSRSRV ==<br />
* Code from CSRSS has been moved into CSRSRV.<br />
* CsrTerminateProcess now destroys all CSR threads in a process, fixing the issue of processes never actually dying and their resources never being freed. Besides the resource leak, other processes that wished to use exclusive resources were also starved.<br />
* Basic user mode shutdown support added by exporting process/thread management functions for use by Win32CSR, allowing for shutting down of processes and cleaning up after them.<br />
* Second attempt shutting down of applications is now more forceful and processes are forcefully terminated in most situations.<br />
<br />
== Win32CSR ==<br />
* Hard error handling rewritten, now using Unicode strings and does not crash due to malformed arguments being passed to it.<br />
* Dynamic LineBuffer removed as it was not being properly resized and caused corruptions.<br />
* CsrFreeConsole now closes a process' console handles.<br />
* Locking simplified to having only one for a console.<br />
* Handles to a screen buffer is now tracked instead of references. When all handles have been closed, the buffer is deleted even if it is the "active" buffer.<br />
* RECT/SMALL_RECT structures are now used correctly/consistently. RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive while SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive.<br />
* Text selection outside the visible window is now allowed.<br />
* Console pausing is now implemented.<br />
* Line input processing code now merged into one place instead of being duplicated in multiple places.<br />
* Basic line editing and line editing history implementation added.<br />
* Setting the console screen buffer size has been implemented.<br />
* CREATE_NO_WINDOW flag support added, allowing creation of invisible consoles.<br />
* Management of console windows moved to Win32CSR from CSRSRV.<br />
<br />
== Kernel-mode subsystem server (Win32K) ==<br />
The kernel-mode side of the Win32 subsystem underwent significant modification since the last release. A great deal of progress has been made in the yarotows branch, but there was not enough time to incorporate its improvements. However, effort was made to deal with some of the more visible usability issues. Fixes to drawing of icons should mean they look better than in past releases and a new timer mechanism finally eliminates the problems with using Firefox to browse the internet.<br />
* Creation of bitmaps by the graphics engine is severely broken and a partial rewrite has begun on it.<br />
* Initial implementation of a new window object added.<br />
* Several fixes to Windows Hook Procedures that causes application lockups.<br />
* Shell can now be restarted after killing it.<br />
* Fix cases where windows can deadlock when waiting on another window to finish.<br />
* Fixes to minimizing/maximizing and setting focus of windows.<br />
* SendMessageCallback now implemented.<br />
* Timer implementation suffered from a bug where freed timers would not be available due to improper cleanup.<br />
* Non-queued messages are no longer expected to have a reference to a message queue.<br />
* Icon drawing reimplemented.<br />
* A kernel timer is now used to intermittently force a check on user mode timers instead of simply waiting until a message arrives before carrying out the check.<br />
<br />
== BASE ==<br />
<br />
== DLL ==<br />
<br />
<br />
=== WIN32 ===<br />
<br />
<br />
==== NETCFGX ====<br />
* Improve the DNS data exchange between the basic IP settings and the advanced DNS panel ([[Gregor Schneider]])<br />
* Simplify LaunchAdvancedTcpipSettings ([[Gregor Schneider]])<br />
* Save DHCP and DNS settings from the basic TCP/IP panel independently of each other ([[Gregor Schneider]]; {{bug|5193}})<br />
* Remove the hack that set DI_NEEDRESTART for all network adapters which prevented us from starting the miniport driver ([[Cameron Gutman]])<br />
* Part of the fix for bug 3716 ([[Cameron Gutman]])<br />
* Start the TCP/IP driver after we install a network adapter ([[Cameron Gutman]])<br />
* This fixes the major bug that blocks Live CD networking but we still have some DHCP issues (DHCP starts and fails before the NIC and TCP/IP has been installed) and some other adapter detection issues that I need to look into but this is a good first step ([[Cameron Gutman]])<br />
* Create the DhcpEnabled value in the registry ([[Cameron Gutman]])<br />
<br />
==== NETSHELL ====<br />
* Fix some German resources: ([[Gregor Schneider]])<br />
* Use BS_MULTILINE instead of embedding newline characters into text ([[Gregor Schneider]])<br />
* Make groupboxes and text fit into the window ([[Gregor Schneider]])<br />
* Load all LAN status icons with the same size ([[Gregor Schneider]]; {{bug|3813}})<br />
* Only set the status icon if the icon occurred, don't set NULL icons (properties of LAN adapter window) ([[Gregor Schneider]]; {{bug|3813}})<br />
* Fix LAN status icon resource ([[Gregor Schneider]]; {{bug|3813}})<br />
* Improve current network connection status icons. ([[Gabriel Ilardi]])<br />
<br />
==== NTMARTA ====<br />
* AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. ([[Michael Martin]])<br />
<br />
==== QMGR ====<br />
* Don't bulldoze our netsvcs key to install a service that doesn't even work yet ([[Cameron Gutman]])<br />
* Add the FLG_ADDREG_APPEND flag when writing the netsvcs value because, unlike WINE, we are actually going to have values in there ([[Cameron Gutman]])<br />
* Reapply r47268 to fix DHCP ([[Cameron Gutman]])<br />
* Implement DeviceHandleToUsbDevice and remove IsHandleValid. ([[Michael Martin]])<br />
* Add call to DeviceHandleToUsbDevice for all Direct Call functions that pass DeviceHandle. ([[Michael Martin]])<br />
* Stop the processing of Asynchronous List after the Control Request has been processed by controller. ([[Michael Martin]])<br />
* Misc changes. ([[Michael Martin]])<br />
* Fix a FIXME in fastfat driver which also fixes a BSOD in kernel32 path winetest ([[Pierre Schweitzer]])<br />
* sysreg doesn't like rain of SEMI-STUB debug ([[Sylvain Petreolle]])<br />
<br />
==== SETUPAPI ====<br />
* Open Device Class with desired access ([[Johannes Anderwald]])<br />
* Implement SetupDiOpenDeviceInterfaceW ([[Johannes Anderwald]])<br />
* Store device settings in the "Device Parameters" key, as the kernel now does it too ([[Johannes Anderwald]])<br />
* Fixes display of AC97 device in audio cpl ([[Johannes Anderwald]])<br />
* Fix an incorrect length value that corrupted REG_MULTI_SZ values when they had strings appended ([[Cameron Gutman]])<br />
* I'm not sure if this is synced with WINE, but if it is, they need this patch too ([[Cameron Gutman]])<br />
<br />
==== USERENV ====<br />
* Revert r43057: setting environment variables per process is not useful here, a higher authority has to do this globally ([[Gregor Schneider]]; {{bug|4008}})<br />
* Create 'Default User' and 'All Users' directories without postfix and append a postfix only if they already exist. ([[Eric Kohl]])<br />
* Create the user account directory without a prefix and append a prefix if the directory already exists. ([[Eric Kohl]])<br />
* Acquire the restore privilege before unloading a hive and remove it after unloading the hive. ([[Eric Kohl]])<br />
* Patch is based on Gabriel Ilardi's patch. Fixes bug #2972. ([[Eric Kohl]])<br />
* Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. ([[Eric Kohl]]; {{bug|2972}})<br />
* Fixes bug #4008. ([[Eric Kohl]]; {{bug|2972}})<br />
* Disable GDI batch code for regions. "Fixes" broken drawing for AcrobatReader. Yes, it's a "band aid over a bullet wound". I hope the man with the gun is a surgeon, too. ([[Timo Kreuzer]])<br />
* CreateEnvironmentBlock: Also add the volatile environment values to the users environment block. ([[Eric Kohl]])<br />
* Fix Italian commonfiles ([[Gabriel Ilardi]])<br />
* Fix a typo and some Spanish environment variables ([[Gabriel Ilardi]])<br />
* Fix mistakenly translated strings "recent" and "sendto" in Italian and Spanish resources, plus another Spanish fix. ([[Gabriel Ilardi]])<br />
<br />
==== WINMM ====<br />
* Fix a number of 64bit issues, add some comments where the code is not 64 bit safe. This module should be synced with wine, but this still causes a problem with Flash videos on FF2 (likely another timer problem) ([[Timo Kreuzer]])<br />
<br />
== DRIVERS ==<br />
<br />
===== BMFD =====<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
== LIB ==<br />
<br />
=== CMLIB ===<br />
* Just use UNIMPLEMENTED. ([[sir_richard]])<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
<br />
===== MMENT4 =====<br />
* Remove a ";" after an if (), that makes no sense and caused GetNt4SoundDeviceCapabilities to always return without doing anything. ([[Timo Kreuzer]])<br />
* Fix warning about uninitialized variable ([[Timo Kreuzer]])<br />
<br />
=== FSLIB ===<br />
<br />
==== VFATLIB ====<br />
* Get rid of the hard-coded sector size as large sector (4KB) harddisks are already available. ([[Eric Kohl]])<br />
* When a partition is formatted, choose the FAT type according to the partition type. The size of the partition does not matter here as it is up to the caller to set the right partition type according to its size. ([[Eric Kohl]])<br />
<br />
=== SDK ===<br />
* Add missing IIDs to UUID. ([[Aleksey Bragin]])<br />
* Implement PNP_HwProfFlags. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
<br />
<br />
== NTOSKRNL ==<br />
* Implement basic Headless support in the kernel. Implement missing InbvPort routines based on WinLdrPort (using cportlib). Add header for Hdl. Terminal initializes now on COM2. Added misisng code to InbvDisplayString to also display on Headless Terminal (requires unimplemented HeadlessDispatch). Next steps are to implement the kernel log buffer, and HeadlessCmdPutString to see boot strings. (Anton)<br />
* Implement CmdPutString command, and add log message types. Kernel version/build, processor, and RAM, now appear on EMS screen (due to InbvDisplayString), as well as loaded drivers. Next steps are to support log entries and a flag to route debug output (a ReactOS-specific feature request). (Anton)<br />
* Fix support for non Headless scenarios as well. (Anton)<br />
<br />
<br />
=== BASE_SYSTEM_EXPAND ===<br />
* Update expand utility to Wine-1.1.37. Last update happened 7 years ago and since then it was translated into 20 languages. Sorry to all the translators but the preference is given to a working untranslated version rather than a non-working localized one. ([[Aleksey Bragin]]; {{bug|4637}})<br />
* Update README.WINE. ([[Aleksey Bragin]])<br />
<br />
=== INPUT_I8042PRT ===<br />
* Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running. ([[Michael Martin]])<br />
<br />
<br />
=== NTOS_PERF ===<br />
* Enable VME support. VME stands for Virtual 8086 Mode Extensions, and it's an Intel optimization that makes changes to the IF bit in EFLAGS (CLI, STI, INT, IRETD, PUSHF, POPF) completely transprent: instead of changing the real (protected) bit, which requires the OS to trap and emulate the behavior, the CPU sets a "Fake" IF bit instead. When you're down in V8086 mode, you simply update your real flag with whatever the fake flag says. ([[sir_richard]])<br />
<br />
<br />
=== WIN32K|GDI32 ===<br />
* Fix GdiBatch, the limit is for user space not system. ([[James Tabor]])<br />
* Enable font batch and fixed setting brush origion. Use the new delete object functions in win32k. ([[James Tabor]])<br />
<br />
=== WIN32K|GGI32 ===<br />
* Diagnostic commit used for troubleshooting leaking region handles. ([[James Tabor]])<br />
* Updates to headers and experimental code added for regions. ([[James Tabor]])<br />
<br />
=== XDK_DDK ===<br />
* Relax INTERLOCKED_RESULT inclusion guard. ([[Amine Khaldi]])<br />
<br />
=== SYSGEN ===<br />
* Implement a rewrite of rbuild written in c# ([[Marc Piulachs]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.12&diff=28802
ChangeLog-0.3.12
2010-10-06T15:53:29Z
<p>CycleGeek: /* Localization */ Sort by last name</p>
<hr />
<div>TODO: Need a list compiled for apps updated/added to the rosapp list. We'll stick this under the Generic Changes section. -Z98<br />
<br />
TODO: Document all the hacks that go into this release to cover up, issues. This information may not yet be available. -Z98<br />
<br />
NOTE: List of names are supposed to be organized based off of last name, not first. Only if there is not a last name available do we use the first name. -Z98<br />
<br />
This is the changelog for ReactOS™ [[0.3.12|version 0.3.12]] (date yet to be determined), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.11|version 0.3.11]] (released 16 December 2009).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core Developers ===<br />
* Giannis Adamopoulos: Applications, Win32.<br />
* Johannes Anderwald: Kernel, sound.<br />
* Aleksey Bragin: Filesystem, kernel, Win32k.<br />
* Colin Finck: Build tools, translations, release engineer.<br />
* Jérôme Gardou: Win32.<br />
* Stefan Ginsberg: Kernel.<br />
* Dmitry Gorbachev: Applications.<br />
* Cameron Gutman: Networking, PnP.<br />
* Kamil Horníček: 3D Graphics, Win32.<br />
* Amine Khaldi: Build tools.<br />
* Eric Kohl: Kernel, Win32.<br />
* Timo Kreuzer: Win32k.<br />
* Matthias Kupfer: Applications, Win32.<br />
* Michael Martin: Kernel, USB.<br />
* Jeffrey Morlan: Applications, Win32.<br />
* Filip Narava: USB.<br />
* Sylvain Petreolle: Applications.<br />
* Hervé Poussineau: Kernel.<br />
* ReactOS Portable Systems Group: ARM porting, drivers, kernel.<br />
* Daniel Reimer: Build tools, translations.<br />
* Gregor Schneider: Win32.<br />
* Pierre Schweitzer: Filesystem, kernel.<br />
* James Tabor: Win32.<br />
* Christoph von Wittich: Win32.<br />
<br />
=== Patch Submitters ===<br />
* Andrea<br />
* Carlo Bramini<br />
* James Edmeades<br />
* Benedikt Freisen<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Kusanagi Kouichi<br />
* Radek Liška<br />
* Roel Messiant<br />
* Andrew Nguyen<br />
* Samuel Serapión<br />
* Seungju<br />
* Dmitry Timoshkov<br />
* Henri Verbeet<br />
<br />
=== Localization ===<br />
* forenkrams [AT] tuxproject [DOT] de<br />
* Edison Henrique Andreassy<br />
* Egon Ashrafinia<br />
* Arturs B<br />
* Maciej Bialas<br />
* CCTAHEB<br />
* Paolo Devoti<br />
* Andrew Faulds<br />
* Javier Fernandéz<br />
* Katayama Hirofumi<br />
* Gabriel Ilardi<br />
* Mario Kacmar<br />
* Tomoya Kitagawa<br />
* Igor Paliychuk<br />
* Javier Remacha<br />
* Olaf Siejka<br />
* Andres Traks<br />
* Maikel Wever<br />
* Sakara Yevhen<br />
* Marcelo Zamperetti<br />
<br />
=== Support Staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.12 Changes ==<br />
* Hardware IDs for the following processors have been added to the internal hardware list.<br />
** Cyrix<br />
** Pentium MMX, Pro, II, M, 4<br />
** Core Solo, Duo, Extreme, i3, i5, i7<br />
** Atom<br />
** AMD K6, K6-3, Athlon 64, Turion64, Sempron<br />
** Via Nehemiah, Esther, Nano<br />
* NTVDM is now only built on x86 builds.<br />
=== Applications ===<br />
* Calc: Units and conversion factors added.<br />
* Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.<br />
* IPconfig: Media detection is now fixed.<br />
* MSCUtils: Column names now use resource strings instead of hardcoded strings.<br />
* Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.<br />
* Paint: Initial selection support and angle rounding for lines and edges.<br />
* Regedit: Fix searching the registry.<br />
* Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.<br />
=== Control Panel Applets ===<br />
* Console: Store changes when buffer/window size or color changes.<br />
* Desk: Fix theme switching and screensaver selection.<br />
* Input: Fix changing of keyboard layout.<br />
* Intl: Use resource strings for 'metric' and 'Imperial' strings.<br />
* Sysdm: Fix creation of paging file and place constraints on file size.<br />
=== Installer ===<br />
Various tweaks were made to the installer to ease installing ReactOS.<br />
* Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.<br />
* Fix reading of partitions created in non-standard formats by Linux.<br />
* Minimum space check notification improved. Minimum space value also made configurable through text file.<br />
* Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.<br />
* Installer does not restart in second stage if ESC is pressed.<br />
* PathName and SystemRoot registry key values are now written by the installer.<br />
=== Services ===<br />
* Services no longer trample over other services when reporting their status.<br />
* DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.<br />
* EventLog: Fixes to reading and displaying of log content.<br />
== Tests ==<br />
http://www.reactos.org/testman/compare.php?ids=2123,4021<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* 3dtext<br />
* doskey<br />
* explorer<br />
* ipconfig<br />
* mscutils/servman<br />
* rapps<br />
* shutdown<br />
* spider<br />
* usetup<br />
* winemine<br />
<br />
'''Chinese'''<br />
* charmap<br />
* dxdiag<br />
* fontview<br />
* magnify<br />
* mmc<br />
<br />
'''Czech'''<br />
* appwiz<br />
* devmgr<br />
* intl<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* notepad<br />
* paint<br />
* regedit<br />
* setupapi<br />
* shell32<br />
* slayer<br />
* sndvol32<br />
* sysdm<br />
* userenv<br />
* usetup<br />
* winemine<br />
<br />
'''Dutch'''<br />
* calc<br />
* usetup<br />
<br />
'''English'''<br />
* advpack<br />
* dxdiag<br />
* rapps<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* Add french translations for location overrides. ([[Sylvain Petreolle]])<br />
* eventvwr<br />
* netshell<br />
* paint<br />
* spider<br />
* usetup<br />
<br />
'''German'''<br />
* Added a German translation myself. ([[Daniel Reimer]])<br />
* access<br />
* appwiz<br />
* calc<br />
* cmd<br />
* cmdutils/reg<br />
* console<br />
* desk<br />
* deskadp<br />
* deskmon<br />
* devmgr<br />
* doskey<br />
* downloader<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* fontview<br />
* format<br />
* hdwwiz<br />
* input<br />
* intl<br />
* ipconfig<br />
* joy<br />
* kernel32<br />
* liccpa<br />
* main<br />
* mmsys<br />
* modemui<br />
* mplay32<br />
* msconfig<br />
* mscutils<br />
* msgina<br />
* mstsc<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* newdev<br />
* notepad<br />
* paint<br />
* powercfg<br />
* rapps<br />
* rasdlg<br />
* regedit<br />
* regsvr32<br />
* runonce<br />
* screensavers/3dtext<br />
* screensavers/logon<br />
* serialui<br />
* setup/reactos<br />
* shdoclc<br />
* shell32<br />
* shimgvw<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* tapiui<br />
* taskmgr<br />
* timedate<br />
* user32<br />
* userenv<br />
* usetup<br />
* usrmgr<br />
* vmwinst<br />
* welcome<br />
* winemine<br />
* winlogon<br />
<br />
'''Italian'''<br />
* calc<br />
* explorer-new<br />
* intl<br />
* mscutils<br />
* netid<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* shell32<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Japanese'''<br />
* cacls<br />
* charmap<br />
* magnify<br />
* mscutils/devmgmt<br />
* mscutils/servmgr<br />
* paint<br />
* rapps<br />
* runonce<br />
* shutdown<br />
* sndrec32<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Polish'''<br />
* calc<br />
* mscutils<br />
* usetup<br />
<br />
'''Portuguese'''<br />
* syssetup<br />
* usetup<br />
<br />
'''Russian'''<br />
* spider<br />
* sysdm<br />
* usetup<br />
<br />
'''Slovak'''<br />
* calc<br />
* devmgr<br />
* explorer-new<br />
* intl<br />
* netshell<br />
* paint<br />
* rapps<br />
* regit<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* syssetup<br />
* usetup<br />
<br />
'''Spanish'''<br />
* browseui<br />
* devmgr<br />
* notepad<br />
* paint<br />
* rapps<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* usrmgr<br />
* welcome<br />
<br />
'''Ukrainian'''<br />
* aclui<br />
* browseui<br />
* charmap<br />
* cmd<br />
* desk<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* freeldr<br />
* input<br />
* kernel32<br />
* mscutils/devmgmt<br />
* mscutils/eventvwr<br />
* msgina<br />
* mstsc<br />
* newdev<br />
* notepad<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* setup<br />
* shell32<br />
* shimgvw<br />
* sndrec32<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* taskmgr<br />
* usetup<br />
* winemine<br />
<br />
== Wine Syncs ==<br />
ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synched to versions 1.2 or 1.3.<br />
<br />
Libraries Synced<br />
* activeds<br />
* actxprxy<br />
* amstream<br />
* atl<br />
* avifil32<br />
* cabinet<br />
* clusapi<br />
* comctl32<br />
* comdlg32<br />
* credui<br />
* crypt32<br />
* cryptdlg<br />
* cryptnet<br />
* cryptui<br />
* d3d8<br />
* d3d9<br />
* dbghelp<br />
* ddraw<br />
* dwmapi<br />
* faultrep<br />
* fusion<br />
* gdiplus<br />
* hhctrl.ocx<br />
* hlink<br />
* hnetcfg<br />
* iccvid<br />
* imm32<br />
* inetcomm<br />
* inetmib1<br />
* initpki<br />
* inseng<br />
* itircl<br />
* itss<br />
* jscript<br />
* localspl<br />
* localui <br />
* mapi32<br />
* mciavi32<br />
* mcicda<br />
* mciqtz32<br />
* mciseq<br />
* mciwave<br />
* mdi<br />
* mlang<br />
* mpr<br />
* mscms<br />
* mscoree<br />
* msctf<br />
* msdmo<br />
* msg711.acm<br />
* msgsm32.ac<br />
* mshtml<br />
* msi<br />
* msiexec<br />
* msimtf<br />
* msnet32<br />
* msrle32<br />
* mssip32<br />
* msvcrt20<br />
* msvfw32<br />
* msvidc32<br />
* msxml<br />
* msxml3<br />
* nddeapi<br />
* netapi32<br />
* obsel<br />
* odbc32<br />
* ole32<br />
* oleacc<br />
* oleaut32<br />
* oledlg<br />
* olepro32<br />
* pdh<br />
* postorec<br />
* qedit<br />
* quartz<br />
* query<br />
* riched20<br />
* rpcrt4<br />
* rsaenh<br />
* schannel<br />
* shdoclc<br />
* shdocvw<br />
* shlwapi<br />
* sti<br />
* tapi32<br />
* urlmon<br />
* usp10<br />
* uxtheme<br />
* version<br />
* widl<br />
* windowscodecs<br />
* wined3d<br />
<br />
* wininet<br />
* wintrust<br />
* xmllite<br />
<br />
== Third Party Libraries ==<br />
* DejaVu Fonts updated to 2.31<br />
* FreeType updated to 2.3.12<br />
* Liberation Fonts updated to 1.05.2<br />
* libjpeg updated to 8b<br />
* libpng 1.4.3 added<br />
* libtiff 3.9.4 added<br />
* libxml updated to 2.7.7<br />
* zlib updated to 1.2.5<br />
<br />
== Regressions ==<br />
* #4086 cdfs: Data inaccessible for view under Explorer<br />
* #4330 crashes upon restart after installing a driver for 3com Fast Etherlink network adapter<br />
* #4811 comctl32: dll winesync broke AbiWord toolbar<br />
* #5025 freeloader error while booting from GRUB with Ubuntu and Windows XP installed<br />
* #5035 Abiword: fonts listbox isn't shown properly<br />
* #5158 some keystrokes get lost if typing fast in VirtualBox<br />
* #5290 Slowness during file copying in 1st stage in VirtualBox<br />
* #5320 "Assertion 'FALSE' failed at subsystems/win32/win32k/ntuser/windc.c line 739", preceded by "Not POWNED or CLASSDC hwndCurrent" debugprint<br />
* #5372 "Failed to create directory L"%USERPROFILE%\\Local Settings\\" debug print in 2nd stage<br />
* #5443 Inkscape 0.43-2 crashes immediately upon start.<br />
* #5484 New windows are created on top of older ones<br />
* #5503 Far Manager 1.65 fails to start<br />
* #5504 Internet Explorer 6 errors out at setup<br />
* #5524 Displaced numbers on virtual desktop icons in 32bpp<br />
* #5530 COM ports not available anymore<br />
* #5554 Warning/error window is misplaced and misshaped<br />
* #5560 Acrobat Reader 7.1 crashes at start<br />
* #5569 App tray icons are not displayed<br />
* #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn<br />
<br />
== Build Tools ==<br />
=== LOG2LINES ===<br />
* Updated to version 2.2<br />
<br />
=== RBUILD ===<br />
RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.<br />
* Non-existent DLL functions can be exported.<br />
* Function export names are not properly decorated, allowing export names to not match the original function names.<br />
* If function targets are not found, RBuild will link the DLL to itself.<br />
Some development on RBuild also took place before the decision was made to switch over to CMake.<br />
* Initial Visual Studio 2010 project file support.<br />
* Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.<br />
=== RosBE ===<br />
* Build environment now uses GCC 4.4.x as the compiler.<br />
* -fno-unit-at-a-time hacks have been removed.<br />
* Auto-export of all symbols has been turned off.<br />
<br />
= Core Functionality =<br />
<br />
== Audio/Video Stack ==<br />
The A/V stack has seen a great deal of enhancements and fixes since the last release. The work done has not only added features to better control sound playback, but preliminary support for streaming videos through various media frameworks has also been implemented.<br />
=== BDA ===<br />
The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.<br />
* Interfacing with broadcast devices implemented.<br />
* Filtering of broadcast frequencies implemented.<br />
=== DSOUND ===<br />
A library that bypasses some of the layers in the sound stack to try and speed up processing.<br />
* Starting and stopping audio implemented.<br />
* Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.<br />
=== Kernel Streaming ===<br />
The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.<br />
* Device initialization and registration implemented.<br />
* Objects allocated are placed onto a list for automatic reclamation.<br />
* Pin interface for controlling devices implemented, though issuing of commands still needs work.<br />
=== KSPROXY ===<br />
A DirectShow filter that relays media through the user mode kernel streaming library.<br />
* Enumeration of supported functionality on devices implemented.<br />
* Signal statistics from BDA devices are delivered by KSPROXY.<br />
* Media stream sampling is done to determine buffer allocation strategy.<br />
* Multiple media samples can be dispatched simultaneously.<br />
=== PORTCLS ===<br />
The driver that manages most of the audio functionality in NT.<br />
* Currently a "silent" buffer is used when no audio buffers are available for playback.<br />
* Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.<br />
* A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.<br />
* Audio stream data is only copied to the common buffer when the pin owning it is in a running state.<br />
<br />
== Filesystems ==<br />
ReactOS continues to use the FAT filesystem as its default, but work has been done to add the support needed for newer ones as well as fixing longstanding issues with the current FAT driver.<br />
<br />
=== FSRTL ===<br />
The filesystem runtime library provides a set of basic functionality for filesystem drivers and allows them to avoid duplicating shared functionality while also ensuring higher level libraries inappropriate for kernel drivers do not need be linked in. FsRtl for many years had very minimal documentation, but that is changing with this release.<br />
* Notification of changes to volume state has been implemented.<br />
* Initial groundwork for volume content change notifications begun.<br />
<br />
=== CDFS ===<br />
* Media ejection added.<br />
* Various memory leaks and corruptions have been resolved.<br />
<br />
=== FASTFAT ===<br />
ReactOS uses the FASTFAT driver for the FAT filesystem. The current driver is fairly old and a new one is being developed, but until it is ready FASTFAT will continue to see updates.<br />
* Updated to use various functionality in the FsRtl library instead of reimplementing them inside the driver.<br />
* Driver is now Plug n Play aware but does not support any actual PnP commands.<br />
<br />
=== FASTFAT_NEW ===<br />
The new FAT driver is being implemented using the FullFAT library and wrapping its functionality inside a filesystem driver. It is currently incomplete but will replace the old FASTFAT driver in a future release.<br />
* Control blocks for files have been implemented.<br />
* Basic locking implemented.<br />
=== CM ===<br />
* Implemented finding registry keys when the registry keys are not sorted.<br />
* Fix a bug that caused registry corruption when a registry key got too large.<br />
<br />
== Hardware Management ==<br />
Progress has been made in efforts to give ReactOS better support for various hardware control specifications.<br />
<br />
=== ACPI ===<br />
A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.<br />
* Enumerate attached devices.<br />
* Receive commands from power buttons.<br />
=== ACPI HAL ===<br />
The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.<br />
* Resource querying implemented.<br />
* Separation of ACPI and non-ACPI bus handling.<br />
=== Battery Framework ===<br />
Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.<br />
* Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.<br />
* Composite Battery Driver: Battery detection and PnP notification implemented.<br />
=== Legacy HAL ===<br />
The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.<br />
* i8259A programmable interrupt controller initialization implemented in C.<br />
* HAL now detects EISA systems with the Edge/Level Control Register.<br />
* Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.<br />
* Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.<br />
* IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.<br />
* HAL no longer relies on the memory manager for allocations.<br />
* Various debugging related functions implemented.<br />
* CMOS, ISA, and SYSTEM bus handlers are now registered.<br />
* HAL now can detect PCI and PCI-to-PCI bridges.<br />
* Checks for ABIOS have been removed as it is not supported by ReactOS or Windows.<br />
=== Plug n Play ===<br />
* Writing of resource list has been fixed to avoid corrupting the registry.<br />
* Registry values for legacy devices are now written.<br />
* Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.<br />
<br />
== Memory Management ==<br />
The memory manager saw several major improvements since the last release, including a new pool manager and major fixes to virtual memory management.<br />
* Page Table Entries work under x64.<br />
* Correctly report the amount of memory available to applications and drivers.<br />
* Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.<br />
* Code refactored so architecture independent code can be shared across platforms.<br />
* Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.<br />
* Global pages support removed due to currently broken code.<br />
* Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.<br />
* Stubs have been added for various large page functions in case future work is done to add support.<br />
* Paging driver code and data implemented.<br />
* A check to detect potential corruption in contiguously allocated blocks of memory has been added.<br />
=== ARM3 ===<br />
A new memory manager designed to be more conformant to the NT architecture and hopefully eliminate the instability caused by the current memory manager's corruption issues.<br />
* Virtual Address Descriptor data structures implemented.<br />
* Page table and directory entry initialization implemented.<br />
* Stack frames are allocated using ARM3.<br />
* Paged pool allocations can be done through ARM3.<br />
* Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.<br />
* Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.<br />
* Shared user data pages are handled by ARM3.<br />
* New AVL tree implementation used to manage Virtual Address Descriptors.<br />
* Creation of the process address space is now done by ARM3.<br />
* IsBadRead/CodePtr fixed to work with ARM3.<br />
<br />
== Network Stack ==<br />
The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.<br />
=== IP ===<br />
* Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.<br />
* No attempt is made to close a socket already terminated by the remote peer.<br />
* Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.<br />
=== MSAFD ===<br />
The current socket implementation on ReactOS.<br />
* Error codes are now properly reported, fixing many of the Winetests for this component.<br />
* Failures on operations are now reported instead of simply being left dangling.<br />
* Events are waited on instead of immediately being closed.<br />
* Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.<br />
* Socket information is now cleaned up after a socket is closed.<br />
* Support for connectionless sockets added.<br />
* Reading data using the peek functionality no longer causes corruptions.<br />
=== NDIS ===<br />
* Timer queues have been disabled to prevent the VirtualBox Intel Pro/1000 emulated network card from crashing ReactOS.<br />
* Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.<br />
* Network adapter initialization and binding cleaned up to avoid duplicate entries.<br />
=== OSKITTCP ===<br />
* Multiple wakeups are now prevented from occurring.<br />
* Sent/received reports are only sent if operation completed successfully.<br />
* A check was added to make sure accept is not called on a socket that is not listening.<br />
=== WS2_32 ===<br />
* Reading host files now supported.<br />
<br />
== Graphics ==<br />
Development on ReactOS' graphics components continues, with increased compatibility and functionality. Several enhancements from the yarotows branch have made it into trunk and are now part of this release.<br />
== Kernel ==<br />
* IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.<br />
* FPU state is now correctly not saved when a kernel debugger is not attached.<br />
* Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.<br />
* Trap handling code converted to C with minimal bits of assembly.<br />
* Interrupt handling in kernel converted to C to match conversion done in HAL.<br />
* System call handling now implemented in C.<br />
* Entrypoint of kernel moved to KiSystemStartup.<br />
* KeUpdateSystemTime interface is no longer Windows compatible. No third party code should ever call it however so change should not matter.<br />
* Interrupts are now handled when in Virtual 8086 mode.<br />
* Calling KiSystemService directly with interrupts enabled no longer corrupts the trap frame, fixing some failures on QEMU and real hardware.<br />
* Checks have been added to avoid drivers linked with user mode DLLs.<br />
* Dependency checking for driver unloading implemented.<br />
* When a driver fails to load, the kernel no longer attempts to unload modules that were never initialized.<br />
* The SYSEXIT code used for returning to user mode after a system call into kernel mode has been fixed, allowing the use of the SYSENTER/SYSEXIT combination instead of IRETD. This feature is only available on Pentium II and newer processors and should help decrease the time needed for such hopping between modes for system calls.<br />
* All trap handling code is now marked as no-return, allowing the compiler to better optimize them.<br />
* The Processor Control Block is no longer volatile in KeGetPcr, making the C code cleaner as the PCR no longer needs to be constantly reloaded. This also helps performance with the removed need for loading.<br />
== I/O ==<br />
* Device property retrieval now returns correct information for the device name.<br />
* IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.<br />
* Changes in device status are now reported.<br />
* New resource information is now reported.<br />
<br />
== Registry ==<br />
* A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.<br />
* Opening registry values for symbolic links is fixed.<br />
* cmlib, newinflib and mkhive now use the Wine unicode library instead of the host_wcsfuncs library.<br />
=== MKHIVE ===<br />
The registry generator.<br />
* newinflib is now used instead of inflib.<br />
* Registry generation now uses the Unicode API instead of ascii.<br />
* Work has been done to properly free resources, as mkhive is suffering from several memory leaks.<br />
=== NEWINFLIB ===<br />
* Unicode aware version of inflib added, newinflib.<br />
* String functions now use the str*W group instead of wcs* due to glibc on Linux builds using a 32bit wchar_t instead of 16bit. A wrapper has been added to allow continued use of wcs* functions on Windows builds.<br />
<br />
== Startup/Shutdown ==<br />
Startup of ReactOS has seen considerable modification as effort is made to port it to other architectures and new developer-centric changes are added.<br />
* Progress bar during boot now displays correctly.<br />
* Logos now have the correct color palette and the correct logo is used for booting and shutting down.<br />
* Driver loading code used during booting has been switched to use low level Configuration Manager interfaces, decreasing boot time.<br />
* A crude timing mechanism has been added to see how many CPU cycles have passed between the first instruction of the kernel, the initialization of the registry by the SMSS, and the moment 12 processes have started up, which is approximately equivalent to getting to the GUI from boot.<br />
=== BootVid ===<br />
* Broken initialization code removed and a correct implementation added.<br />
* 4bpp blitting code simplified.<br />
* x64 portability fixes.<br />
* Initialization of bootvid no longer requires a shift into real mode, allowing for faster booting.<br />
=== FreeLoader ===<br />
* FreeLoader is now compiled into the Portable Executable format to allow for debugging.<br />
* FreeLoader no longer needs to be installed on the first partition of the first disk.<br />
* FreeLoader UI on ARM rewritten to slim down on resources needed.<br />
* Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.<br />
* x64 portability fixes.<br />
* Loading on the ARM platform has been changed to match EFI/Firmware model.<br />
=== Session Manager Subsystem ===<br />
* SMSS can now add several system environment variables to the registry.<br />
* SMSS now creates a new default paging file if none exists.<br />
=== Winlogon ===<br />
* Environment variables for user are now properly loaded upon login.<br />
<br />
== Security ==<br />
* NtAcessCheck fixed to account for various error cases and improper usage.<br />
* Security token is now checked for what level of authorization it is trying to impersonate.<br />
* Success is only reported if all access requests have been granted.<br />
* Attempts to duplicate security tokens fail if authorization level is too low.<br />
=== LSA ===<br />
* A single table is now used for mapping privilege names to values.<br />
* Initial implementation of a lookup table for well-known SIDs has been added.<br />
* Account name lookup call chain implemented, but dummy names are still returned.<br />
<br />
== Shell ==<br />
The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.<br />
* Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.<br />
=== Explorer ===<br />
* Clock is no longer clipped in its window.<br />
* 24bpp start menu icon added.<br />
=== SHELL32 ===<br />
* Confirmation dialog added for logging off.<br />
* Open With dialog now allows aborting of operation.<br />
* Localized error text now displayed as messagebox caption.<br />
* Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.<br />
* Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.<br />
* Initial file copy/move/delete dialog implementation added.<br />
* File association error texts added.<br />
<br />
== Storage Stack ==<br />
The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.<br />
* Logical units in extended partitions are visible but are not accessible yet.<br />
* Querying for Native ATA channels and configuring controller to use NATA implemented.<br />
=== RAMDISK ===<br />
* Fixes for using ramdisk when booting on ARM.<br />
=== SCSIPORT ===<br />
* x64 portability fixes.<br />
=== UniATA ===<br />
* Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.<br />
<br />
== USB ==<br />
ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. However, a NT5-style USB stack consisting of the usbd library, usbehci driver, and usbhub interface has been started.<br />
<br />
=== USBD ===<br />
Helper library for third party USB drivers, used for querying information about USB devices.<br />
<br />
=== USBEHCI ===<br />
Driver for the ehci USB protocol, currently able to register attachment of new devices to the system and changes in their status.<br />
<br />
=== USBHUB ===<br />
Initializes USB devices and their associated driver objects and handles passing of interrupts and other signals to the driver. Utilizes the usbd library and usbehci driver to fill in information about devices.<br />
<br />
USB Requests Implemented<br />
* USB_DEVICE_DESCRIPTOR_TYPE<br />
* USB_CONFIGURATION_DESCRIPTOR_TYPE<br />
* URB_FUNCTION_SELECT_CONFIGURATION<br />
* URB_FUNCTION_CLASS_DEVICE<br />
* USB_DEVICE_CLASS_HUB<br />
* USB_BUS_INTERFACE_USBDI_V2<br />
* USB_BUS_INTERFACE_HUB_V5<br />
* URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE<br />
* IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION<br />
* IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE<br />
* IOCTL_INTERNAL_USB_GET_HUB_COUNT<br />
* URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN<br />
* USB_REQUEST_CLEAR_FEATURE<br />
* USB_REQUEST_GET_STATUS<br />
* USB_REQUEST_SET_FEATURE<br />
<br />
=== USBDriver ===<br />
The current USB driver, usbdriver provides simplistic support for USB keyboards and mice in very specific configurations.<br />
* Support for multiple EHCI controllers added, increasing compatibility with physical hardware configurations.<br />
* All PCI buses are scanned for USB controllers.<br />
* Cleanup of devices that crashed or failed to initialize properly.<br />
<br />
= Drivers =<br />
* SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.<br />
* ISAPNP driver has been removed from the set of drivers loaded during booting.<br />
== KDBG ==<br />
* Attaching to processes fixed.<br />
== Miniport ==<br />
* ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.<br />
== NPFS ==<br />
* ReadEvent and WriteEvent have been changed to be notification events.<br />
* A race condition when a read IRP is cancelled has been fixed, reducing random crashes and hangs.<br />
* Various memory leaks have been dealt with.<br />
* Status information now correctly informs a reading/writing thread that a pipe is dead.<br />
* Various buffer checks have been added to prevent attempts to use a buffer that is too small for an operation on a named pipe.<br />
== PCI ==<br />
A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.<br />
* Interrupt Request routing implemented.<br />
* Handling of devices that incorrectly implement the PCI standard has been improved.<br />
* Querying and discovery of devices attached to PCI bus implemented.<br />
* Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.<br />
== PCMCIA ==<br />
* Driver has been stubbed so will require more work before any functionality is added.<br />
== Video ==<br />
* Initial implementation of a driver for the VMWARE SVGA-II Video Card added.<br />
* Various x64 portability fixes to the current VGA driver.<br />
* A unified VBE/VGA miniport driver has been added along with a new Framebuffer Display Driver.<br />
== VIDEOPRT ==<br />
* Proper error codes are now used.<br />
<br />
= Libraries =<br />
== ADVAPI32 ==<br />
* Resources for tracking services are created and destroyed as services start and stop.<br />
* Hardware profiles actually create GUIDs instead of hardcoding them to zero.<br />
* Computer name is used inside of eventlog.<br />
== CPORTLIB ==<br />
* ComPort library has been implemented, based off of the Microsoft whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation.<br />
== CRT ==<br />
* CRT is now linked statically for freeloader, rtl, bmfs, ftfd, and mini_hal.<br />
* CRT is dynamically linked for ntdll, crtdll, and included versions of msvcrt.<br />
* x87 assembly implementation of pow() function imported from glibc, replacing broken implementation in ReactOS.<br />
* Pointer comparison fixed in signal().<br />
* Various functions dealing with codepages and conversions between different encodings have seen fixes.<br />
* x64 implementations of various basic math and pointer functions added.<br />
== KERNEL32 ==<br />
The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.<br />
* Remove all Windows 95 function exports.<br />
* Stub all functions that kernel32 is supposed to export.<br />
* Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.<br />
* kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.<br />
* Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.<br />
* Switching between fibers fixed.<br />
* Various x64 portability changes.<br />
* NT-style debug channels are now enabled and used.<br />
== GDI32 ==<br />
* Leaking of regions temporarily fixed.<br />
* Batch support added for selecting regions for clipping.<br />
* Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.<br />
== MSVCRT ==<br />
* Exports added for a variety of functions.<br />
== NTDLL ==<br />
* Various fixes to loading functions for libraries and executables.<br />
* Service status is now reported to the service manager.<br />
* Various x64 portability changes.<br />
== RTL ==<br />
* New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.<br />
* Various fixes to functions that operate on strings.<br />
* x64 portability fixes for functions that operate on the byte level.<br />
== USER32 ==<br />
* Setting of regions now behaves correctly.<br />
* Cursor icons follow correct call chain instead of calling functions that do not exist.<br />
* Various x64 portability changes.<br />
* Scrollbar tracking now ends if mouse capture is lost.<br />
* Window management code saw refactoring and fixes.<br />
* Start user handle manager rewrite.<br />
* Window text string converted from UNICODE_STRING to LARGE_STRING, fixing display of large text windows.<br />
== PSEH ==<br />
* A dummy PSEH implementation has bee added for CLANG.<br />
* x64 version of PSEH has been stubbed.<br />
<br />
= Client/Server Runtime =<br />
== CSRSRV ==<br />
* Code from CSRSS has been moved into CSRSRV.<br />
* CsrTerminateProcess now destroys all CSR threads in a process, fixing the issue of processes never actually dying and their resources never being freed. Besides the resource leak, other processes that wished to use exclusive resources were also starved.<br />
* Basic user mode shutdown support added by exporting process/thread management functions for use by Win32CSR, allowing for shutting down of processes and cleaning up after them.<br />
* Second attempt shutting down of applications is now more forceful and processes are forcefully terminated in most situations.<br />
<br />
== Win32CSR ==<br />
* Hard error handling rewritten, now using Unicode strings and does not crash due to malformed arguments being passed to it.<br />
* Dynamic LineBuffer removed as it was not being properly resized and caused corruptions.<br />
* CsrFreeConsole now closes a process' console handles.<br />
* Locking simplified to having only one for a console.<br />
* Handles to a screen buffer is now tracked instead of references. When all handles have been closed, the buffer is deleted even if it is the "active" buffer.<br />
* RECT/SMALL_RECT structures are now used correctly/consistently. RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive while SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive.<br />
* Text selection outside the visible window is now allowed.<br />
* Console pausing is now implemented.<br />
* Line input processing code now merged into one place instead of being duplicated in multiple places.<br />
* Basic line editing and line editing history implementation added.<br />
* Setting the console screen buffer size has been implemented.<br />
* CREATE_NO_WINDOW flag support added, allowing creation of invisible consoles.<br />
* Management of console windows moved to Win32CSR from CSRSRV.<br />
== Kernel-mode subsystem server (Win32K) ==<br />
<br />
* Several fixes to Windows Hook Procedures that causes application lockups.<br />
* Shell can now be restarted after killing it.<br />
* Fix cases where windows can deadlock when waiting on another window to finish.<br />
* Fixes to minimizing/maximizing and setting focus of windows.<br />
* SendMessageCallback now implemented.<br />
<br />
== Regression tests ==<br />
<br />
== BASE ==<br />
<br />
=== APPLICATIONS ===<br />
<br />
==== DXDIAG ====<br />
* get next button to work ([[Christoph von Wittich]])<br />
<br />
==== SC ====<br />
* Roel Messiant: Fix a crash when running some operations in sc without providing arguments. Also, provide usage information for the control and unknown commands. ([[Aleksey Bragin]]; {{bug|5611}})<br />
* Aleksey Bragin: Take Ged Murphy's comments into account and change pointer arithmetic to a convenient style. ([[Aleksey Bragin]]; {{bug|5611}})<br />
<br />
=== SERVICES ===<br />
<br />
==== WLANSVC ====<br />
* Add required libary iphlpapi ([[Sylvain Petreolle]])<br />
* Correctly start and report status to the service manager. ([[Sylvain Petreolle]])<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Instead of disabling a warning when using "main" as something else then the main function, define it to mainptr (it's used as a pointer variable) globally, this approach is portable. ([[Timo Kreuzer]])<br />
<br />
===== SRC =====<br />
<br />
=== DIRECTX ===<br />
<br />
==== BDAPLGIN ====<br />
* Add "BDA Device Control Plug-in for MPEG2 based networks" stub ([[Johannes Anderwald]])<br />
* Sorry folks ([[Johannes Anderwald]])<br />
* Implement IBDA_Topology::GetNodeTypes, IBDA_Topology::GetNodeDescriptors, IBDA_Topology::GetNodeInterfaces, IBDA_Topology::GetPinTypes, IBDA_Topology::CreateTopology, IBDA_Topology::GetControlNode ([[Johannes Anderwald]])<br />
* Implement stub interfaces for control node, IBDA_DigitalDemodulator, IBDA_FrequencyFilter, IBDA_LNBInfo, IBDA_SignalStatistics ([[Johannes Anderwald]])<br />
* Simply construction of CBDAFrequencyFilter, CBDALNBInfo, CBDASignalStatistics ([[Johannes Anderwald]])<br />
* Find IBDA_NetworkProvider in filter graph ([[Johannes Anderwald]])<br />
* Check for IBaseFilter interface when constructing the CBDADeviceControl object ([[Johannes Anderwald]])<br />
* Add macro to enable/disable debug output ([[Johannes Anderwald]])<br />
* Query the BaseFilter for the target control pin in order to query for IKsObject interface, which is used to retrieve the real pin handle. ([[Johannes Anderwald]])<br />
* Pass the NodeId to constructors of IBDA_FrequencyFilter, IBDA_SignalStatistics, IBDA_LNBInfo, IBDA_DigitalDemodulator ([[Johannes Anderwald]])<br />
* Implement IBDA_DigitalDemodulator::put_ModulationType, IBDA_DigitalDemodulator::put_InnerFECMethod, IBDADigitalDemodulator::put_InnerFECRate, IBDADigitalDemodulator::put_OuterFECMethod, IBDADigitalDemodulator::put_OuterFECRate, IBDADigitalDemodulator::put_SymbolRate, IBDADigitalDemodulator::put_SpectralInversion ([[Johannes Anderwald]])<br />
* Implement IBDAFrequencyFilter::put_Frequency, IBDAFrequencyFilter::put_Polarity, IBDAFrequencyFilter::put_Range, IBDAFrequencyFilter::put_Bandwidth, IBDAFrequencyFilter::put_FrequencyMultiplier ([[Johannes Anderwald]])<br />
* Implement IBDALNBInfo::put_LocalOscilatorFrequencyLowBand, IBDALNBInfo::put_LocalOscilatorFrequencyHighBand, IBDALNBInfo::put_HighLowSwitchFrequency ([[Johannes Anderwald]])<br />
* Implement IBDASignalStatistics::get_SignalStrength, IBDASignalStatistics::get_SignalQuality, IBDASignalStatistics::get_SignalPresent, IBDASignalStatistics::get_SignalLocked, IBDASignalStatistics::put_SampleTime, IBDASignalStatistics::get_SampleTime ([[Johannes Anderwald]])<br />
* Implement IBDA_DeviceControl::StartChanges, IBDA_DeviceControl::CheckChanges, IBDA_DeviceControl::CommitChanges, IBDA_DeviceControl::GetChangeState ([[Johannes Anderwald]])<br />
* IBDA_DeviceControl interface now works with SageDvbRecorder(Windows XP SP3) ([[Johannes Anderwald]])<br />
* Move from using include guards to pragma once. (Amine)<br />
* Whilst this is non-standard and potentially makes the code less portable, it's supported by both gcc and msvc and should bringg increased compilation speed due to its optimized behaviour (doesn't need to invoke the preprocessor) (Amine)<br />
* Merge Wine-1.1.39 changes to shlmenu.c. ([[Aleksey Bragin]])<br />
* Maarten Kroese ([[Aleksey Bragin]])<br />
* SHELL_MergeMenus: Don't skip higher IDs if uIDAdjustMax is set to 0xFFFF (according to MSDN). ([[Aleksey Bragin]])<br />
* Implement IBDA_PinControl::GetPinID, IBDA_PinControl::GetPinType ([[Johannes Anderwald]])<br />
* Comment out enumeration of IBDA_NetworkProvider ([[Johannes Anderwald]])<br />
* Set output variable to null to fixup lazy callers ([[Johannes Anderwald]])<br />
* Implement IBDA_PinControl::RegistrationContext ([[Johannes Anderwald]])<br />
* Register filter with IBDA_NetworkProvider when it is an input pin ([[Johannes Anderwald]])<br />
* IBDA_PinControl is now working ([[Johannes Anderwald]])<br />
* Perform property request by passing the request through IKsPropertySet interface. This is necessary as the pin handle might not have been created at the time the proxy plugin has been loaded ([[Johannes Anderwald]])<br />
* Set Reserved of KSP_NODE request to zero as required by the documentation ([[Johannes Anderwald]])<br />
* Reintegrate header branch ([[Timo Kreuzer]])<br />
* DDKAPI -> NTAPI ([[Timo Kreuzer]])<br />
* delete duplicate definitions ([[Timo Kreuzer]])<br />
* move files to right locations ([[Timo Kreuzer]])<br />
* Fix Mm64BitPhysicalAddress definition ([[Timo Kreuzer]])<br />
* Add a number of missing definitions ([[Timo Kreuzer]])<br />
* add XDK ([[Timo Kreuzer]])<br />
* Enhance debug traces ([[Johannes Anderwald]])<br />
<br />
==== DEVENUM ====<br />
* Extend device enumerator to support class enumerators of device interfaces ([[Johannes Anderwald]]<br />
<br />
<br />
==== MSDVBNP ====<br />
* Start implementing Network Provider for MPEG-2 based Networks ([[Johannes Anderwald]])<br />
* Implement IEnumMediaTypes interface ([[Johannes Anderwald]])<br />
* Implement IEnumPins interface ([[Johannes Anderwald]])<br />
* Partly implement output pin (IPin interface) for the network provider ([[Johannes Anderwald]])<br />
* Implement CNetworkProvider::GetState, CNetworkProvider::SetSyncSource, CNetworkProvider::GetSyncSource, CNetworkProvider::EnumPins, CNetworkProvider::QueryFilterInfo ([[Johannes Anderwald]])<br />
* HACK: comment out deletion of object until reference counting has been fixed ([[Johannes Anderwald]])<br />
* Fix crash when instantiating the filter with graphedt ([[Johannes Anderwald]])<br />
* Fix a bug (IEnumPins::Next should increase reference count on pin) ([[Johannes Anderwald]])<br />
* Fix a bug (IPin::QueryFilterInfo should increase reference count on parent filter) ([[Johannes Anderwald]])<br />
* Reference leakage is now fixed ([[Johannes Anderwald]])<br />
* Fix some missing strings in cpu.inf ([[Cameron Gutman]])<br />
* Use FORMAT_None as format specifier ([[Johannes Anderwald]])<br />
* Implement IBaseFilter::Stop, IBaseFilter::Run, IBaseFilter::Pause ([[Johannes Anderwald]])<br />
* Fix missing AddRef in IBaseFilter::QueryFilterInfo ([[Johannes Anderwald]])<br />
* Implement IBDA_NetworkProvider::RegisterDeviceFilter, IBDA_NetworkProvider::UnRegisterDeviceFilter ([[Johannes Anderwald]])<br />
* Partly implement ITuner::put_TuneRequest ([[Johannes Anderwald]])<br />
* ReactOS DVBT Network Provider is now able to tune a channel, though sound is missing ([[Johannes Anderwald]])<br />
* fix encoding ([[Matthias Kupfer]])<br />
* change size of dialog entry for fitting text ([[Matthias Kupfer]])<br />
* two small fixes (freeing resources on error) ([[Matthias Kupfer]])<br />
* Implement IBDA_EthernetFilter, IBDA_IPV4Filter, IBDA_IPV6Filter ([[Johannes Anderwald]])<br />
* Add bda.inf, kscaptur.inf ([[Johannes Anderwald]])<br />
* Remove DebugBreak ([[Johannes Anderwald]])<br />
* Implement IPin::Connect, IPin::ReceiveConnection, IPin::Disconnect, IPin::ConnectedTo ([[Johannes Anderwald]])<br />
* Remove spaces ([[Johannes Anderwald]])<br />
* DVBT Network Provider can now connect tv tuner in ReactOS ([[Johannes Anderwald]])<br />
* Dynamically register DVB network provider categories ([[Johannes Anderwald]])<br />
* Register BDA Filter components ([[Johannes Anderwald]])<br />
* Fix category description ([[Johannes Anderwald]])<br />
<br />
==== MSVIDCTL ====<br />
* Start implementing ActiveX Control for Streaming Video ([[Johannes Anderwald]])<br />
<br />
==== WINE ====<br />
* Move and update assembler functions definition macros from port.h (added by Steven around revision 7000) to config.h as it is now in Wine. ([[Aleksey Bragin]])<br />
* Update related __ASM macros. ([[Aleksey Bragin]])<br />
* define interlocked_xchg_add to InterlockedExchangeAdd ([[Timo Kreuzer]])<br />
* partial sync of test.h ([[Christoph von Wittich]])<br />
* Cast the unused 0 in the ok macro to void to make clang happy ([[Timo Kreuzer]])<br />
<br />
===== WINED3D =====<br />
* Fix prototype of wined3d_event_query_supported (BOOL != HRESULT) ([[Timo Kreuzer]])<br />
<br />
=== KEYBOARD ===<br />
<br />
==== KBDLV ====<br />
* Latvian keyboard fixes by Arturs B., <mad_alchemist AT mail DOT ru> ([[Gregor Schneider]]; {{bug|5385}})<br />
* partly revert r47442 and apply a working fix by guarding some prototypes of functions that exist as intrinsics in #ifdefs, so we don't use them for gcc/clang ([[Timo Kreuzer]])<br />
* remove duplicated prototypes, when an inline function exists already ([[Timo Kreuzer]])<br />
<br />
==== IDNDL ====<br />
<br />
=== NLS ===<br />
* Convert to spec ([[Timo Kreuzer]])<br />
<br />
==== CSR ====<br />
* DejaVu Sans Mono seems to have a bug which makes Windows and Arwinss report double max char width as compared to a real char width. Since only a monospace font could be used, measure exact char width using GetTextExtentPoint32W and use that value. ([[Aleksey Bragin]])<br />
<br />
=== WIN32 ===<br />
<br />
==== BATT ====<br />
* Add battery class installer dll. ([[Eric Kohl]])<br />
* Add missing 4th parameter to BatteryClassCoInstaller. ([[Eric Kohl]])<br />
<br />
==== BEEPMIDI ====<br />
* Fix 64bit compilation ([[Timo Kreuzer]])<br />
<br />
==== BROWSEUI ====<br />
* Merge r44391 from amd64 branch ([[Timo Kreuzer]])<br />
* Fix 64bit build ([[Timo Kreuzer]])<br />
<br />
==== DEVMGR ====<br />
* Display Matching Device ID. ([[Eric Kohl]])<br />
* Display some more device properties. ([[Eric Kohl]])<br />
* devman.dll improvements by Viliam Lejcik: ([[Eric Kohl]])<br />
* display version info for selected driver file in 'Driver File Details' dialog ([[Eric Kohl]])<br />
* resource modification - changed some labels to read-only editboxes ([[Eric Kohl]])<br />
* Fixes bug #4875. ([[Eric Kohl]])<br />
<br />
<br />
==== MSGINA ====<br />
* Use WLX_PROFILE_V2_0 instead of WLX_PROFILE_V1_0 and create an environment string that is filled with a single environment variable. WIP for bug #4102. ([[Eric Kohl]])<br />
* Fix the order of controls to match the expected tab order. This makes the focus stop jumping around like crazy when you press the Tab key. ([[Eric Kohl]])<br />
<br />
==== NETCFGX ====<br />
* Improve the DNS data exchange between the basic IP settings and the advanced DNS panel ([[Gregor Schneider]])<br />
* Simplify LaunchAdvancedTcpipSettings ([[Gregor Schneider]])<br />
* Save DHCP and DNS settings from the basic TCP/IP panel independently of each other ([[Gregor Schneider]]; {{bug|5193}})<br />
* Remove the hack that set DI_NEEDRESTART for all network adapters which prevented us from starting the miniport driver ([[Cameron Gutman]])<br />
* Part of the fix for bug 3716 ([[Cameron Gutman]])<br />
* Start the TCP/IP driver after we install a network adapter ([[Cameron Gutman]])<br />
* This fixes the major bug that blocks Live CD networking but we still have some DHCP issues (DHCP starts and fails before the NIC and TCP/IP has been installed) and some other adapter detection issues that I need to look into but this is a good first step ([[Cameron Gutman]])<br />
* Create the DhcpEnabled value in the registry ([[Cameron Gutman]])<br />
<br />
==== NETSHELL ====<br />
* Fix some German resources: ([[Gregor Schneider]])<br />
* Use BS_MULTILINE instead of embedding newline characters into text ([[Gregor Schneider]])<br />
* Make groupboxes and text fit into the window ([[Gregor Schneider]])<br />
* Load all LAN status icons with the same size ([[Gregor Schneider]]; {{bug|3813}})<br />
* Only set the status icon if the icon occurred, don't set NULL icons (properties of LAN adapter window) ([[Gregor Schneider]]; {{bug|3813}})<br />
* Fix LAN status icon resource ([[Gregor Schneider]]; {{bug|3813}})<br />
* Improve current network connection status icons. ([[Gabriel Ilardi]])<br />
<br />
==== NTMARTA ====<br />
* AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. ([[Michael Martin]])<br />
<br />
==== QMGR ====<br />
* Don't bulldoze our netsvcs key to install a service that doesn't even work yet ([[Cameron Gutman]])<br />
* Add the FLG_ADDREG_APPEND flag when writing the netsvcs value because, unlike WINE, we are actually going to have values in there ([[Cameron Gutman]])<br />
* Reapply r47268 to fix DHCP ([[Cameron Gutman]])<br />
* Implement DeviceHandleToUsbDevice and remove IsHandleValid. ([[Michael Martin]])<br />
* Add call to DeviceHandleToUsbDevice for all Direct Call functions that pass DeviceHandle. ([[Michael Martin]])<br />
* Stop the processing of Asynchronous List after the Control Request has been processed by controller. ([[Michael Martin]])<br />
* Misc changes. ([[Michael Martin]])<br />
* Fix a FIXME in fastfat driver which also fixes a BSOD in kernel32 path winetest ([[Pierre Schweitzer]])<br />
* sysreg doesn't like rain of SEMI-STUB debug ([[Sylvain Petreolle]])<br />
<br />
==== SETUPAPI ====<br />
* Open Device Class with desired access ([[Johannes Anderwald]])<br />
* Implement SetupDiOpenDeviceInterfaceW ([[Johannes Anderwald]])<br />
* Store device settings in the "Device Parameters" key, as the kernel now does it too ([[Johannes Anderwald]])<br />
* Fixes display of AC97 device in audio cpl ([[Johannes Anderwald]])<br />
* Fix an incorrect length value that corrupted REG_MULTI_SZ values when they had strings appended ([[Cameron Gutman]])<br />
* I'm not sure if this is synced with WINE, but if it is, they need this patch too ([[Cameron Gutman]])<br />
<br />
==== USERENV ====<br />
* Revert r43057: setting environment variables per process is not useful here, a higher authority has to do this globally ([[Gregor Schneider]]; {{bug|4008}})<br />
* Create 'Default User' and 'All Users' directories without postfix and append a postfix only if they already exist. ([[Eric Kohl]])<br />
* Create the user account directory without a prefix and append a prefix if the directory already exists. ([[Eric Kohl]])<br />
* Acquire the restore privilege before unloading a hive and remove it after unloading the hive. ([[Eric Kohl]])<br />
* Patch is based on Gabriel Ilardi's patch. Fixes bug #2972. ([[Eric Kohl]])<br />
* Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. ([[Eric Kohl]]; {{bug|2972}})<br />
* Fixes bug #4008. ([[Eric Kohl]]; {{bug|2972}})<br />
* Disable GDI batch code for regions. "Fixes" broken drawing for AcrobatReader. Yes, it's a "band aid over a bullet wound". I hope the man with the gun is a surgeon, too. ([[Timo Kreuzer]])<br />
* CreateEnvironmentBlock: Also add the volatile environment values to the users environment block. ([[Eric Kohl]])<br />
* Fix Italian commonfiles ([[Gabriel Ilardi]])<br />
* Fix a typo and some Spanish environment variables ([[Gabriel Ilardi]])<br />
* Fix mistakenly translated strings "recent" and "sendto" in Italian and Spanish resources, plus another Spanish fix. ([[Gabriel Ilardi]])<br />
<br />
==== WINMM ====<br />
* Fix a number of 64bit issues, add some comments where the code is not 64 bit safe. This module should be synced with wine, but this still causes a problem with Flash videos on FF2 (likely another timer problem) ([[Timo Kreuzer]])<br />
<br />
== DRIVERS ==<br />
<br />
===== BMFD =====<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
<br />
==== SUBSYS ====<br />
<br />
==== WIN32K ====<br />
* Removed NtUserGetScrollInfo and replaced it, move more type names in window object to WND. ([[James Tabor]])<br />
* When locking and unlocking regions, no need to use probe to check attribute space first before read or write access. The exception handling is a feature. ([[James Tabor]])<br />
* set fix line endings to preserve windows line endings ([[Matthias Kupfer]])<br />
* fixes issue with cancel button ([[Matthias Kupfer]])<br />
* fixes problems with unattended mode ([[Matthias Kupfer]])<br />
* temporarily enable device listing (setupapi) ([[Matthias Kupfer]])<br />
* More movement to WND with updates to related files. Added new scroll and get/post message routines. In the mix we did moved to the MONITOR structure. ([[James Tabor]])<br />
* More movement to WND with updates to related files. Removed unused code rewritten others. Review patch. ([[James Tabor]])<br />
* Patch that fixes VMWare boot (and should fix QEMu/KVM boot on the testbot): ([[sir_richard]])<br />
* Updated headers and related files. ([[James Tabor]])<br />
* Fix the window handle De/Reference throttler issue. Used mIrc. ([[James Tabor]])<br />
* System regions do not possess user attribute sections. . ([[James Tabor]]; {{bug|5124}})<br />
* Read the patch for more information. ([[James Tabor]]; {{bug|5124}})<br />
* Implement IntGdiSetBrushOwner for bug 5124. ([[James Tabor]])<br />
* Add system region support functions. ([[James Tabor]])<br />
* Merge aicom-network-branch (without NDIS changes for now) ([[Cameron Gutman]])<br />
* New noteworthy improvements include (in addition to the other improvements made in the commits that were reverted in trunk): ([[Cameron Gutman]])<br />
* Support for sending/receiving packets > 16KB in size ([[Cameron Gutman]])<br />
* Samba-tng works ([[Cameron Gutman]])<br />
* Tracert works ([[Cameron Gutman]])<br />
* Major speed and stability improvements (especially for TCP connections) ([[Cameron Gutman]])<br />
* Use ExAllocatePoolWithTag/ExFreePoolWithTag instead of memtrack ([[Cameron Gutman]])<br />
* Fixes to region support code. . ([[James Tabor]]; {{bug|5124}})<br />
* Remove CriticalRegion calls. ([[James Tabor]])<br />
* Remove CriticalRegion calls. ([[James Tabor]])<br />
* Fixed DCE masks, clipping and added support for mirror and process owned dce. ([[James Tabor]])<br />
* Reference: http://www.reactos.org/archives/public/ros-dev/2008-July/010498.html http://www.reactos.org/archives/public/ros-dev/2008-July/010499.html ([[James Tabor]])<br />
* Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. ([[James Tabor]])<br />
* Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. ([[James Tabor]])<br />
* Wrong commit msg, removed debug prints and fixed RedrawWindow. This fix one part of the leak. ([[James Tabor]])<br />
* Properly assign error code when a real status error occurred. ([[James Tabor]])<br />
* Free the non user event container for WaitForInputIdle. ([[James Tabor]])<br />
* Fix the new GetClipRgn clipping wine test for EqualRgn and clip region note. ([[James Tabor]])<br />
* If dc is window owned and not class owned do not set class if null pdce. Added debug prints to locate reentrancy issues due to a race condition. ([[James Tabor]])<br />
* Add more checks to find dead windows. ([[James Tabor]])<br />
* remove unused library ([[Ged Murphy]])<br />
* Fix DrawMenuBar. ([[James Tabor]])<br />
* Transition the physical device into D0 state when we receive IRP_MN_START_DEVICE ([[Cameron Gutman]])<br />
* Actually do the power state transtion when a PDO receives IRP_MN_SET_POWER for DevicePowerState ([[Cameron Gutman]])<br />
* Fill the DEVICE_CHARACTERISTICS struct based on values in the acpi_device struct ([[Cameron Gutman]])<br />
* Lots of unhacking ([[Cameron Gutman]])<br />
* Stub-plement NtUserSetInformationThread for UserInitiateShutdown and UserEndShutdown. I think we're supposed to notify Winlogon at some point, and check for races. Part of new shutdown code. ([[sir_richard]])<br />
* Stop memory corruption when InstalledDisplayDrivers has more than one driver in the list. Note that driver loading is inherently broken right now, as the list of drivers is not parsed properly (this breaks eVb's VGA/VBE driver). ([[sir_richard]])<br />
* EngCreateBitmap/IntCreateBitmap don't make much sense (code written back in 2004...). RLEs don't have scanlines by definitions, bit depth alignments and sizing is not done, newer display formats (compressed) are not supported correctly, zero-width surfaces fail because the size is ignored during scanline calculation, etc. These bugs caused eVb's test VGA display driver to fail as it needs to create a zero-depth shadow surface, which would end up with pv0Bits == NULL in the current implementation (and crash during ROPs/BitBLTs). Attempted to rewrite as much of it to 1) make Windows drivers work with it 2) continue the current hacks needed for ReactOS drawing. Note that the broken IntCreateBitmap is still used by non EngXXX interfaces to reduce the change of breakage, but keep in mind the function is entirely wrong. ([[sir_richard]])<br />
* Revert accidental changes to IntCreateBitmap. ([[sir_richard]])<br />
* Enable the alignment code and reduce the number of hacks, leaving only one for 1bpp top-down output (Freetype?) which doesn't seem to like when the lDelta is aligned to the correct bit-boundary. This should fix the crashes and graphic cltches recently introduced. ([[sir_richard]])<br />
* Prevent a possible memory leak. ([[Kamil Hornicek]])<br />
* Use SURFACE_FreeSurfaceByHandle so we don't hit the "Object must not have a handle!" assert in GDIOBJ_FreeObj. ([[Kamil Hornicek]])<br />
* Fix acpi_bus_receive_event and acpi_bus_generate_event which will be used for button events later ([[Cameron Gutman]])<br />
* Uncomment and fix the locking code that protects the event queue and driver list ([[Cameron Gutman]])<br />
* When adding new glyph cache entry convert the glyph bitmap with proper alignment to comply with the new code in EngCreateBitmap and remove the corresponding hack from SURFMEM_bCreateDib. ([[Kamil Hornicek]]; {{bug|5244}})<br />
* Remove a pedantic assert to allow compressed bitmaps. ([[Kamil Hornicek]]; {{bug|5255}})<br />
* 45127 (sserapion) ([[Timo Kreuzer]])<br />
* Kill debug warnings of dc ownership. ([[James Tabor]])<br />
* Implement MakeInfoDC and support functions. Dedicated to Timo. ([[James Tabor]])<br />
* Handle keyboard input when no windows are present (Andrey; {{bug|3560}})<br />
* Since r43772 we now normalize VK_LCONTROL/VK_RCONTROL to VK_CONTROL rather than VK_LCONTROL (and ditto for shift/alt), so update SetKeyState to handle this. Fixes bug 4945. ([[Jeffrey Morlan]])<br />
* Update text and background brush properly. Fixes wrong colors in radio buttons in Firefox. Fix by Jerome Gardou. ([[Timo Kreuzer]]; {{bug|5311}})<br />
* rename w32k.h to win32k.h and win32k.h to win32kp.h ([[Giannis Adamopoulos]])<br />
* Do not do callbacks to user mode while holding system message queue lock ([[Giannis Adamopoulos]]; {{bug|4926}})<br />
* Fix when WH_MOUSE_LL and WH_JOURNALRECORD are called ([[Giannis Adamopoulos]]; {{bug|4926}})<br />
* 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. ([[Michael Martin]])<br />
* 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. ([[Michael Martin]])<br />
* The previous commit claiming to fix bug #4461 was incorrect, it may have actually fixed bug #5320. Testers please test. ([[Michael Martin]])<br />
* Fix IntDumpHandleTable, it was very broken. ([[Timo Kreuzer]])<br />
* bug> ([[Johannes Anderwald]])<br />
* 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. ([[Johannes Anderwald]])<br />
* bug> ([[Johannes Anderwald]])<br />
* fix> ([[Johannes Anderwald]])<br />
* 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) ([[Johannes Anderwald]])<br />
* fix> ([[Johannes Anderwald]])<br />
* Add an assert to PostTimerMessages to catch null pointer windows ([[Johannes Anderwald]])<br />
* Add another assert to catch special windows (Window == 1) ([[Johannes Anderwald]])<br />
* Improve check if the window is '1' ([[Johannes Anderwald]])<br />
* Revert the hack done in 47059 to apply a better solution. ([[Michael Martin]])<br />
* co_IntCreateWindowEx: Add the WNDS2_WMCREATEMSGPROCESSED flag to state2 member of WND after sending the WM_CREATE message. ([[Michael Martin]])<br />
* By setting this flag it can be examined elsewhere to determine if the window was created successfully. ([[Michael Martin]])<br />
* co_UserDestroyWindow: Examine above mentioned flag to make sure the windows was created before calling hook procedure to inform of destroying window. ([[Michael Martin]])<br />
* Only call ExFreePool.. if Buffer is not NULL, which can occur if the Unicode String MessageNameUnsafe coming from user mode is incorrect. Fixes a bugcheck when using OllyDbg V2.0. ([[Michael Martin]])<br />
* IntMouseInput: Add the state of virtual keys to wParam before calling MsqInsertSystemMessage. Fixes bug #5066. ([[Michael Martin]])<br />
* Add and Remove MK_XBUTTON1/2 flags to CurInfo->ButtonsDown vice XBUTTON1/2. ([[Michael Martin]])<br />
* Code based on patches in bug #5066. ([[Michael Martin]])<br />
* Gabriel Ilardi: ([[Aleksey Bragin]])<br />
* Update spanish %temp% path, part of bug 2482. ([[Aleksey Bragin]])<br />
* co_UserDestroyWindow: ThreadInfo->pDeskInfo->hShell holds the hWnd of the Shells Desktop Window. Set it to NULL if that windows is being destroyed. Fixes bug #4902. ([[Michael Martin]])<br />
* Fix sending WM_KILLFOCUS when we give focus to a window of a different thread ([[Giannis Adamopoulos]] ; {{bug|1546}} ; {{bug|1603}})<br />
* Fix broken parameter passing from EngMaskBitBlt to (Alpha)BltMask. It was passing the wrong surface and the wrong point. Rename some parameters to reflect what their usage is. Add ASSERTs to make sure noone passes useless parameters. Fixes crippled text in startmenu. ([[Timo Kreuzer]]; {{bug|4379}})<br />
* The whole code is broken by design, anyway it will go away, once the new text rendering code is done. ([[Timo Kreuzer]]; {{bug|4379}})<br />
* Modify how non-queued messages are send that originate from the Win23k subsystem. ([[Michael Martin]])<br />
* Non-queued messages must go directly to the windows WNDPROC and not through the message pump (previews ROS behavior). ([[Michael Martin]])<br />
* More importantly sending these messages must not cause the sending thread to block waiting for a reply. ([[Michael Martin]])<br />
* Add a messaging handling function that always sends message from Win32k to the windows thread without waiting. ([[Michael Martin]])<br />
* This will also allow the implementation of message call back later. ([[Michael Martin]])<br />
* Modify PackParam and UnpackParam to accept a BOOL value to determine whether LParam needs to be allocated from NonPagedPool. ([[Michael Martin]])<br />
* Use with new message handling as if message sent to another thread have any pointers they must be allocated from NonPagedPool. ([[Michael Martin]])<br />
* Fixed broken logic in can_active_window function and co_WinPosShowWindow. ([[Michael Martin]])<br />
* Fixed broken logic in co_IntSendActivateMessages. ([[Michael Martin]])<br />
* The WM_ACTIVATEAPP message was being sent to every window belonging to the desktop twice. ([[Michael Martin]])<br />
* Once with flag saying window was activated and again with deactivated. ([[Michael Martin]])<br />
* These changes should fix bugs #969, #3171, #4501, #4676, #4677, #4948. ([[Michael Martin]])<br />
* Bring back support for RLE compressed bitmaps. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Merge the decompress functions for 4bb and 8bpp bitmaps to one generic function. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Simplify SURFMEM_bCreateDib a bit by not allowing PNG/JPEG compression at all. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Check the supplied scancode instead of the state buffer whether a key is up ([[Gregor Schneider]]; {{bug|3727}})<br />
* Fixes the calculator keyboard input regression introduced with r35117 ([[Gregor Schneider]]; {{bug|3727}})<br />
* Ref: http://www.osronline.com/ddkx/w98ddk/keycnt_4ilz.htm and wine implementation ([[Gregor Schneider]]; {{bug|3727}})<br />
* When message are sent without waiting a reply (non-queued messages) the message queues are referenced and dereferenced in the call. ([[Michael Martin]])<br />
* Message removal and cleanup functions for queues expected a reference on the queue. Add checks to determine if the message is a non-queued message and if so release memory for those that had pointers and more importantly skip dereferencing the queues. Possibly fixes random crashes and memory leaks. ([[Michael Martin]])<br />
* The description and changes made regarding WM_ACTIVATEAPP messages in r47126 were partially incorrect, the code was mostly correct. ([[Michael Martin]])<br />
* Change the first parameter type from HWND to PWINDOW_OBJECT for IntKillTimer as it makes more sense. ([[Michael Martin]])<br />
* Activate IntSetTimer, already done by James. ([[Michael Martin]])<br />
* Add flag TMRF_DELETEPENDING. Destroy timers when this flag is set in ProcessTimers to allow any timers that have expired to have the WM_SYSTIMER/WM_TIMER messages posted to message queue before being destroyed. ([[Michael Martin]])<br />
* Fix error in FindTimer, it was always returning a Timer and it needed to return NULL if the specified timer did not exist. ([[Michael Martin]])<br />
* Fix error in PostTimerMessages, need to handle cases where the Window object is NULL which occurs when requesting messages for any window belonging to the thread. ([[Michael Martin]])<br />
* In co_IntPeekMessage, simply call PostTimerMessages to have WM_SYSTIMER/WM_TIMER messages posted for expired timers. Remove call to old timer message handling. ([[Michael Martin]])<br />
* TODO: Code using the old timer implementation needs removed. ([[Michael Martin]])<br />
* Fixes bugs #2393, #3634, #2835. Commit dedicated to JT and Mr. Roboto. ([[Michael Martin]])<br />
* Check that the thread is not in cleanup before attempting to do anything related to it. Add a couple asserts for sanity. ([[Michael Martin]])<br />
* Rename co_InflateRect to RECTL_vInflateRect and move it to rect.c ([[Giannis Adamopoulos]])<br />
* WM_WINDOWPOSCHANGED should contain the final window position ([[Giannis Adamopoulos]])<br />
* Store the monitor work area in the monitor and not in the desktop ([[Giannis Adamopoulos]])<br />
* Correctly adjust values returned from co_WinPosGetMinMaxInfo ([[Giannis Adamopoulos]])<br />
* Set MasterTimer initial value to NULL and Initialize MasterTimer at the beginning of RawInputThreadMain before doing anything else. ([[Michael Martin]])<br />
* Add ASSERTs to catch if MasterTimer is NULL. ([[Michael Martin]])<br />
* Move the initialization of MasterTimer into InitInputImp which is called from win32k DriverEntry routine instead of initializing it in the secondary thread RawInputThreadMain. ([[Michael Martin]])<br />
* Remove WS_EX_SETANSICREATOR from Ex style in co_IntCreateWindowEx ([[Timo Kreuzer]])<br />
* For the Low Level Mouse Hook (WH_MOUSE_LL), input can come from the mouse driver or mouse_event. Both of which result in a call to UserSetCursorPos. ([[Michael Martin]])<br />
* UserMode SetCursorPos API also ends up here. Add BOOL parameter that can be used to determine if hooks are to be called. ([[Michael Martin]])<br />
* Move the code related to calling the hook procedure from MsqInsertSystemMessage into UserSetCursorPos and call the hook procedure here if needed. ([[Michael Martin]])<br />
* If hook procedure returns non 0 value. Dont insert the system message. ([[Michael Martin]])<br />
* Fixes a recursive call to the hook procedure resulting thread using to much stack exposed by user32 winetest for input. ([[Michael Martin]])<br />
* When destroying a window, generate a mouse move message, so that the underlying window is notified about the mouse position and can update the pointer if neccessary. Fixes bug #4499 and bug #3893 ([[Timo Kreuzer]]; {{bug|4499}})<br />
* Minor revert of 47281 to fix OO installer textboxes. ([[Michael Martin]])<br />
* Delete old clipregion only and set a new one, if it could be created already, to avoid setting a NULL region. ([[Timo Kreuzer]]; {{bug|4431}})<br />
* Refactor NtGdiGradientFill, use 1 SEH block instead of 2, replace IntGdiGradientFill with GreGradientFill, don't lock the DC in UserDrawCaption. ([[Timo Kreuzer]])<br />
* Implement DestroyTimersForWindow and call it instead of MsqRemoveTimersWindow when destroying a window. ([[Michael Martin]])<br />
* Fire NewMessages event when cleaning up thread so that threads dont wait for new messages that will never be received. Fixes a problem where some application that use timers dont completly exit. ([[Michael Martin]])<br />
* IntSetTimer: Dont try to raise a timer from the dead. Once the TMRF_DELETEPENDING flag is set, let it be destroyed. ([[Michael Martin]])<br />
* co_MsqWaitForNewMessages: Call the wait without a timeout value as now when the timer expires the NewMessages event will be set to exit the wait. ([[Michael Martin]])<br />
* Message Queue specific timer code and old time queuing code is now dead. It will be removed later when we are happy with new timer implementation. ([[Michael Martin]])<br />
* GreGradientFill: don't forget to unlock the DC ([[Timo Kreuzer]])<br />
* Remove use of TMRF_DELETEPENDING for deleting timers as this was a bad idea. ([[Michael Martin]])<br />
* Timers need to be deleted immediately as waiting for them to be deleted resulted in some processes running out of handles. ([[Michael Martin]])<br />
* Fixes richedit winetest for editor. ([[Michael Martin]])<br />
* Add flag TMRF_TIFROMWND for timers created from user mode so the thread stored in the timer object is from the window and not caller. ([[Michael Martin]])<br />
* Fixes an issue where FireFox would not show any of its windows and looked dead. ([[Michael Martin]])<br />
* When creating and deleting timers, If the window is non null and IDEvent is 0 then the IDEvent is changed to 1. ([[Michael Martin]])<br />
* When modifying timer list use UserEnter and Leave instead of a Critical Region only. ([[Michael Martin]])<br />
* The timer is created usingUserCreateObject. It may be a good idea to save the handle in the timer object so that it can be deleted later. ([[Michael Martin]])<br />
* Dereference the object before attempting to delete it. ([[Michael Martin]])<br />
* For types FNID_SENDMESSAGECALLBACK call co_IntSendMessageWithCallBack to put the message in the send queue. ([[Michael Martin]])<br />
* Rewrite code for when messages have a completioncallback ([[Michael Martin]])<br />
* When processing and deleting timers use a seperate timer lock instead of using the global user lock. ([[Michael Martin]])<br />
* Rename co_IntCreateWindowEx to co_UserCreateWindowEx and rewrite it ([[Giannis Adamopoulos]])<br />
* Fix the sequence of messages sent in co_UserCreateWindowEx ([[Giannis Adamopoulos]])<br />
* Allow menus to be shown over the taskbar ([[Giannis Adamopoulos]]; {{bug|5415}})<br />
* Call CsrInit in NtUserInitialize so we can remove PrivateCsrssInitialized ([[Giannis Adamopoulos]])<br />
* Romove a reactos only syscall (NtUserGetClassLong) ([[Giannis Adamopoulos]])<br />
* Remove UserGetClassLongPtr, UserGetWindow, UserGetWindowLong, IntGetOwner. Instead access objects directly ([[Giannis Adamopoulos]])<br />
* In WINDOW_OBJECT store pointer to the ownder window instead of a handle ([[Giannis Adamopoulos]])<br />
* CreateWindow: initialize window position after sending WM_GETMINMAXINFO message ([[Giannis Adamopoulos]])<br />
* assert -> ASSERT ([[Gregor Schneider]])<br />
* Free allocations with the tag that was used to allocate them ([[Gregor Schneider]])<br />
* Use TAG_GDIICM tag for ICM allocations ([[Gregor Schneider]])<br />
* Use TAG_PALETTE for palette entries ([[Gregor Schneider]])<br />
* Remove mapping codes, the functions from pre r9000 don't even exist anymore ([[Gregor Schneider]])<br />
* Use TAG_KEYBOARD for keyboard layouts ([[Gregor Schneider]])<br />
* Free TAG_ACCEL and TAG_DRIVER allocations with their tags ([[Gregor Schneider]])<br />
* Forgot to remove this ASSERT for r47636 ([[Cameron Gutman]])<br />
* Change the number of windowless timers from 1024 to 32768. ([[Michael Martin]])<br />
* When destroying windowless timers, clear the bit number (IDEvent) in the bitmap so the bit number can be reused. ([[Michael Martin]])<br />
* Only create a windowless timer if there is no windowless timer matching IDEvent. ([[Michael Martin]])<br />
* Fixes case where applications create too many windowless timers and/or run out of windowless timers. ([[Michael Martin]])<br />
* Tag more pool allocations ([[Gregor Schneider]])<br />
* Tag even more pool allocations ([[Gregor Schneider]])<br />
* Remove dead code, adjust comments ([[Gregor Schneider]])<br />
* Tag the remaining untagged pool allocations ([[Gregor Schneider]])<br />
* Use GDITAG_RBRUSH instead of hardcoding the tag ([[Gregor Schneider]])<br />
* Merge GDIOBJ related changes from yarotows ([[Jérôme Gardou]])<br />
* GDIOBJ_(Share)LockObj : return NULL on NULL input, avoiding debug spew ([[Jérôme Gardou]])<br />
* Set NULL process owner when setting READY_TO_DIE flag of a gdiobj ([[Jérôme Gardou]])<br />
* So now GDIOBJ_ShareUnlockObj can claim ownership before trying to delete the object ([[Jérôme Gardou]])<br />
* Set DC_DIBSECTION dirty flag when a DIB section is selected, not when one is created. ([[Jérôme Gardou]])<br />
* Chek if there is something to do in GDIOBJ_SetOwnership before doing it ([[Jérôme Gardou]])<br />
* get rid of ROS_DC::BitsPerPixel. ([[Jérôme Gardou]])<br />
* 1 - It was a hack. ([[Jérôme Gardou]])<br />
* 2 - Its use was inconsistent. ([[Jérôme Gardou]])<br />
* co_IntSendMessageWithCallBack is called for two reasons; for messages that originate from win32k and from user mode when using Callbacks. ([[Michael Martin]])<br />
* For both cases do not do anything with the sendqueue member of message struct and do not add the message to the senders dispatch message list. ([[Michael Martin]])<br />
* In msgqueue related functions, check if the message is a nowait messages before attempting to remove and entry from the dispatch message list as it doesnt exist. ([[Michael Martin]])<br />
* Fixes a NonPagedPool corruption that was occurring on regtest bootcd. Thanks Caemyr for testing. ([[Michael Martin]])<br />
* Add Check for spwndNext being null before accessing any of the members. Fixes bugcheck when using cubicexplorer. ([[Michael Martin]])<br />
* update olepro32 base address. ([[Sylvain Petreolle]])<br />
* The Win32ClientInfo TEB field can be bigger than the CLIENTINFO structure. ([[Timo Kreuzer]])<br />
* Only the CompletionCallback member determines if a callback is needed. Checking the SenderReturn is unwanted and this variable was never initialized which could cause bogus callback attempts. Just remove the BOOL variable SenderReturned and directly check if Message->DispatchingListEntry.Flink is NULL before attempting to remove the message from senders queue. Noticed by Timo. ([[Michael Martin]])<br />
* Fix midiOutOpen and midiInOpen prototypes. ([[Sylvain Petreolle]])<br />
* Change percision of win32k timers to 0.5 miliseconds. ([[Michael Martin]])<br />
* Remove Destroy parameter from FindTimer as it is just odd and call RemoveTimer where needed. ([[Michael Martin]])<br />
* PostTimerMessages: No need to continue looping the remainder of the timers once the target timer has been found and message posted to message queue. ([[Michael Martin]])<br />
* Set caret blink rate for global server information too. ([[James Tabor]])<br />
* Remove dead code as in the old SetTimer and KillTimer functions. ([[Michael Martin]])<br />
* Fix typo. ([[Sylvain Petreolle]])<br />
* Dedicated to Physicus ([[Sylvain Petreolle]])<br />
* move set of msg-time (for messages) back to msg queue (msg time is needed for all mouse events not only mouse move) ([[Matthias Kupfer]])<br />
* ClickLock will work again ([[Matthias Kupfer]])<br />
* Revert changes done in 47325 which partially broke mouse hooks. ([[Michael Martin]])<br />
* If the UserSetCursorPos is reached due to SetCursorPos, dont generate a mouse move message or call mouse hooks. ([[Michael Martin]])<br />
* Forgotten in r47924. Change name of BOOL parameter for UserSetCursorPos to better describe its purpose as done in c source. ([[Michael Martin]])<br />
* Remove old win32k timer code. ([[Michael Martin]])<br />
* Get rid of rosdc::hVisRgn, as in yarotows (r46372) ([[Jérôme Gardou]])<br />
* Dereference CursorIcon Object in NtUserCallOneParam ([[Jérôme Gardou]])<br />
* Shared Icons need their bitmaps to be unowned ([[Jérôme Gardou]])<br />
* Bye bye NtUserCreateCursorHandle. ([[Jérôme Gardou]])<br />
* Thanks GedMurphy for explaining me how to suppress that. ([[Jérôme Gardou]])<br />
* Please clean win32k after this commit. ([[Jérôme Gardou]])<br />
* Properly initialize hVisRgn in CLIPPING_UpdateGCRegion ([[Jérôme Gardou]])<br />
* This fixes a whole bunch of "IntGdiCombineRgn requires hSrc2 != NULL for combine mode 1!", and probably some bugs. ([[Jérôme Gardou]])<br />
* Dedicated to encod3d. ([[Jérôme Gardou]])<br />
* rewrite UserDrawIconEx, taken from yarotows, with same small modifications. ([[Jérôme Gardou]])<br />
* Fixes a whole bunch of user32:cursoricon tests ([[Jérôme Gardou]])<br />
* Protect access to the result pointer from KeUserModeCallback with SEH. Fixes a possible kernel mode crash. ([[Timo Kreuzer]])<br />
* Copy the alpha channel as well when doing RGB<->BGR color translations. ([[Timo Kreuzer]])<br />
* Fix NtGdiMaskBlt to handle patterns correctly, use SRCAND, which is more optimized, instead of DSTERASE, and set fore and background colors correctly to not destroy alpha channel. ([[Timo Kreuzer]])<br />
* Remove IntEngExtEscape stub. This function is completely useless. If the driver doesn't provide a DrvEscape, the function should simply fail and must return 0, not -1. ([[Timo Kreuzer]]; {{bug|4563}})<br />
* If a NULL surface is passed, pass on NULL pso to the driver function ([[Timo Kreuzer]]; {{bug|4563}})<br />
* For SetTimer nIDEvent can be 0 in which case return 1. Zero still needs to be used for nIDEvent when killing the timer. Fixes bug 5553. ([[Michael Martin]])<br />
* Modify windowless timers to use IDEvent values decrementing from the max number of windowless timers vice incrementing from 1. Done to match windows behavior. ([[Michael Martin]])<br />
* co_IntTranslateMouseMessage: properly initialize *HitTest and only send WM_NCHITTEST when the message is going to be removed (Jan)<br />
* co_IntPeekMessage: Prevent possible use of uninitialized HitTest by ProcessMouseMessage() (Jan)<br />
* Fixes bug 2139 (Jan)<br />
* Allocate the DCs prgnVis in DC_AllocDC, instead of "on demand" in GdiSelectVisRgn and properly handle failure case. This fixes a possible crash, when running out of gdi handles. ([[Timo Kreuzer]])<br />
* Use the object type index, not the shifted full object type to decide what to do with an object in NtGdiDeleteObjectApp. Fixes leaking derived types such as pens. ([[Timo Kreuzer]])<br />
* When doing a cleanup for a DC, check, if the default brushes are set, before dereferencing them. Fixes a possible kernel mode crash. ([[Timo Kreuzer]])<br />
* Remove some obsolete casts ([[Timo Kreuzer]])<br />
* Move the allocation of the vis region of the DC to a later position, so that all mandatory fields are initialized before we try to delete the DC in failure case. Fixes yet another possible crash. ([[Timo Kreuzer]])<br />
* Seperate DC_vSetLayout from NtGdiSetLayout and save the old value before setting the new one. ([[Timo Kreuzer]])<br />
* Rework EngSetPointerShape, to first allocate the neccessary surfaces, before deleting the old ones. Also check in IntShowMousePointer if a saving surface is present. This way a failure to allocate a surface will not result in a crash, but keep the old mouse pointer. ([[Timo Kreuzer]]; {{bug|5402}})<br />
* Mouse messages can be sent before the desktop is initialized. Check for this and return false if its not. FIxes assert when moving mouse before desktop is up. ([[Michael Martin]])<br />
* Fix large amount of set-but-unused variables. Most of these seemed to be old/unfinished code, however in IntGdiPaintRgn an actual bug seems to have been found. ([[sir_richard]])<br />
* Make IntGdiPaintRgn return the status of the operation, not always TRUE. ([[sir_richard]])<br />
* Giannis Adamopoulos: Only dereference a class if it's valid, should fix Heroes 3 crash. ([[Aleksey Bragin]]; {{bug|5606}})<br />
* Fix a bug, where a failure to allocate the kernel mode WINDOW_OBJECT would cause a page fault, because the WND was still allocated, but never initialized, and Wnd->rpdesktop was then dereferenced to free the WND again. ([[Timo Kreuzer]])<br />
* Call HCBT_CREATEWND, WM_NCCREATE and WM_CREATE with correct style and position ([[Giannis Adamopoulos]])<br />
<br />
=== XDK ===<br />
* Deduplicate FSRTL_COMMON_FCB_HEADER_LAYOUT in ntifs.h ([[Amine Khaldi]])<br />
* Move ECP_HEADER from the ntifs template to fsrtltypes.h ([[Amine Khaldi]])<br />
* Make sure FORCEINLINE comes as first in declarations. ([[Amine Khaldi]])<br />
* Missed this one (FORCEINLINE) ([[Amine Khaldi]])<br />
* WmiTraceMessageVa is NTAPI, not __cdecl. ([[Amine Khaldi]])<br />
* Introduce some _ANONYMOUS_STRUCT and NONAMELESSUNION based definitions. ([[Amine Khaldi]])<br />
<br />
== LIB ==<br />
<br />
=== 3RDPARTY ===<br />
* remove hal from libs ([[Timo Kreuzer]])<br />
* convert to spec ([[Timo Kreuzer]])<br />
<br />
==== FREETYPE ====<br />
* When doing 1BPP -> 8BPP conversion set all 8 bits not only the LSB. (Freetype devs were notified of this issue) ([[Kamil Hornicek]]; {{bug|5244}})<br />
* The FT_MulFix patch is not neccessary anymore, the 1BPP -> 8BPP conversion patch will be applied again right after this. (Jerome; {{bug|4537}})<br />
* Remove setjmplongjmp.s ([[Timo Kreuzer]])<br />
* Fix FT_Get_CID_Is_Internally_CID_Keyed export name to match source code. ([[Aleksey Bragin]])<br />
<br />
<br />
<br />
==== MINGW ====<br />
* Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325) ([[Timo Kreuzer]])<br />
* 46538 ([[Timo Kreuzer]])<br />
* 46539 ([[Timo Kreuzer]])<br />
* add back getopt.c (needed by rosapps) ([[Timo Kreuzer]])<br />
* add ofmt_stub.c and cx_pure_virtual.c ([[Timo Kreuzer]])<br />
* fix a typo ([[Timo Kreuzer]])<br />
* link mingw_common to oldnames and ntdll ([[Timo Kreuzer]])<br />
* Remove broken _fmode declaration ([[Timo Kreuzer]])<br />
* Remove getopt from mingw lib and put it into it's own static library ([[Timo Kreuzer]])<br />
* change crt="dll" to crt="static" for the mingw startup libs, to avoid things like importing from itself. ([[Timo Kreuzer]])<br />
* Add a temporary hack to fix amd64 compilation for some modules. ([[Timo Kreuzer]])<br />
<br />
=== CMLIB ===<br />
* Just use UNIMPLEMENTED. ([[sir_richard]])<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
<br />
===== MMENT4 =====<br />
* Remove a ";" after an if (), that makes no sense and caused GetNt4SoundDeviceCapabilities to always return without doing anything. ([[Timo Kreuzer]])<br />
* Fix warning about uninitialized variable ([[Timo Kreuzer]])<br />
<br />
=== FSLIB ===<br />
<br />
==== VFATLIB ====<br />
* Get rid of the hard-coded sector size as large sector (4KB) harddisks are already available. ([[Eric Kohl]])<br />
* When a partition is formatted, choose the FAT type according to the partition type. The size of the partition does not matter here as it is up to the caller to set the right partition type according to its size. ([[Eric Kohl]])<br />
<br />
=== SDK ===<br />
* Add missing IIDs to UUID. ([[Aleksey Bragin]])<br />
* Implement PNP_HwProfFlags. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
<br />
== MEDIA ==<br />
* Add a device description for PNP0A00 ([[Cameron Gutman]])<br />
* Fix the class GUID so devices appear in the correct category in device manager ([[Cameron Gutman]])<br />
* Remove trailing spaces on some device descriptions ([[Cameron Gutman]])<br />
* Remove the "(UniATA)" at the end of some device descriptions ([[Cameron Gutman]])<br />
* Add -fms-extensions for arm build ([[Timo Kreuzer]])<br />
* Add _NT_TIB_KPCR to compensate for a missing NT_TIB (hackfix) ([[Timo Kreuzer]])<br />
* add KERNEL_STACK_SIZE & co for arm ([[Timo Kreuzer]])<br />
* Add missing KeGetCurrentThread prototype for arm ([[Timo Kreuzer]])<br />
* define INTERLOCKED_RESULT for X86 only ([[Timo Kreuzer]])<br />
* Add _CONTEXT and _EXCEPTION_RECORD forward declarations ([[Timo Kreuzer]])<br />
* remove scsiport from arm build ([[Timo Kreuzer]])<br />
* Compile scsiport.c for freeldr only on x86 builds ([[Timo Kreuzer]])<br />
* revert r46742 ([[Timo Kreuzer]])<br />
* Reenable isapnp ([[Cameron Gutman]])<br />
* Comment out the service installation for VBE and VGA so the configuration set in first-stage won't get overwritten ([[Cameron Gutman]])<br />
* Nasty graphical glitches still remain in VGA mode ([[Cameron Gutman]])<br />
* Fixes bug 2073 and bug 4192 ([[Cameron Gutman]])<br />
* Add 'PortSubClass' values for serial and parallel ports. ([[Eric Kohl]])<br />
<br />
== NTOSKRNL ==<br />
* Implement basic Headless support in the kernel. Implement missing InbvPort routines based on WinLdrPort (using cportlib). Add header for Hdl. Terminal initializes now on COM2. Added misisng code to InbvDisplayString to also display on Headless Terminal (requires unimplemented HeadlessDispatch). Next steps are to implement the kernel log buffer, and HeadlessCmdPutString to see boot strings. (Anton)<br />
* Implement CmdPutString command, and add log message types. Kernel version/build, processor, and RAM, now appear on EMS screen (due to InbvDisplayString), as well as loaded drivers. Next steps are to support log entries and a flag to route debug output (a ReactOS-specific feature request). (Anton)<br />
* Fix support for non Headless scenarios as well. (Anton)<br />
<br />
<br />
== Uncategorized ==<br />
* rapps ([[Daniel Reimer]])<br />
** Update openoffice 2.4 Links to a new and working mirror<br />
** Add Opera 9 to rapps.<br />
** Update OOo to 3.2.1 and the last time... fix the FF2 link.<br />
** Update rapps database to most recent Versions of all apps.<br />
** Add the non yet working FF 3.6 and AbiWord 2.8.5 to rapps to simplify testing.<br />
** Updated VB6, VC2005, VC2008 links according to winetricks.<br />
** Update the rapps download list.<br />
** Fix the SeaMonkey Mirror.<br />
** Try to fix FF2 Download.<br />
** Add Visual C++ 2008 SP1 runtime to rapps and rename the others correctly.<br />
** Added Fox Audio Player to rapps and some more fixes. (Igor Paliychuk, myself)<br />
** Update the rapps Database to a valid FireFox Link once more.<br />
** Bug 5072: PATCH: Add ReMooD to ReactOS Application Downloader. (by GhostlyDeath)<br />
** Update Rapps Links and add the two RosBE Addons.<br />
** Update some more apps. (OpenOffice 3.2.0, SciTE 2.03)<br />
** DosBox to 0.74, Mirror of FireFox 2, IrfanView to 4.27, RosBE to 1.5.1, uTorrent to 2.0.2.<br />
** Update FireFox, KDE, MirandaIM, Mono, Opera, RosBE64, SeaMonkey, ThunderBird, uTorrent, VLC in rapps.<br />
** Added comctl32.ocx, KDEWin, Mono, .net, Media Player Classic, Python, Steam, Tahoma Font and Windows Media Encoder 9 to rapps.<br />
** Update VLC to 1.1.0<br />
** Add SuperFinder XT to rapps.<br />
<br />
<br />
* piperead ([[Daniel Reimer]])<br />
** Update piperead to Version 0.3 (Jan Roeloffzen)<br />
** Updated piperead (Jan Roeloffzen) Bug 5146<br />
<br />
* Bug 5501: Add Wing32 support by Carlo Bramini<br />
* user32: DrawText: CJK and Thai line-wrapping (Katayama Hirofumi)<br />
* appwiz: check if path is valid (Katayama Hirofumi)<br />
<br />
* Put Vizzini's "csq.h" in the Public Domain with permission from the author: ([[Colin Finck]])<br />
<br />
* Make KeFlushProcessTb work. Since no MPCore support, CPU TLB is flushed instead. Maybe should use ASIDs later. ([[evb]])<br />
<br />
* NANDFlash tool for building OMAP3 FLASH Images for DevBoard and QEMU-Maemo. ([[evb]])<br />
* ARM LLB for OMAP3/Beagle (test with QEMU-Maemo) and Versatile (test with QEMU). ([[evb]])<br />
* Boots to blue screen with white text to indicate checkpoint. ([[evb]])<br />
* Enable serial output. ([[evb]])<br />
* Forgot to change SARCH back to Versatile. ([[evb]])<br />
* Plugin support for booting FreeLDR when used as initrd on QEMU command-line. ([[evb]])<br />
* Change ARM loading architecture to match EFI/Firmware model. LLB provides "firmware" routines, FreeLDR obtains "firmware" routines from the ARM block, and sets them as the Machine VTable. All board-specific FreeLDR code gone now. ([[evb]])<br />
* Start work on UI. Serial output is now only for debugging, not usual console. ([[evb]])<br />
* Need PL045 Keyboard code to handle KbHit/GetCh. ([[evb]])<br />
* Have PL011 code ready for MachVideo routines, coming soon... ([[evb]])<br />
* Start stub of environment functions. ([[evb]])<br />
* Add config interface start (PciReadWriteConfigSpace, PciReadSlotConfig) ([[evb]])<br />
* Add PDO_EXTENSION structure and PCI_FUNCTION_RESOURCES, now delete #if0 in old code since PDO_EXTENSION is now exist defintion ([[evb]])<br />
* Add ID Class/Subclass to description functions (PciGetDeviceDescriptionMessage, PciGetDescriptionMessage), use pciclass.mc from sir_richard ([[evb]])<br />
* New debug: PciDebugDumpCommonConfig ([[evb]])<br />
<br />
* Enable non-OOB mode for Versatile. ([[evb]])<br />
* Enable RAMDISK support in LLB. ([[evb]])<br />
* Build commandline for OS Loader (FreeLDR). ([[evb]])<br />
* Now ready to start loading freeldr.ini ([[evb]])<br />
* Add support for ram disk offset (.IMG file is a RAW image, partition starts later...) ([[evb]])<br />
* Fix ram disk support in FreeLDR, ARC changes had broken support for booting FreeLDR (not just the Windows) from a ram disk. ARM port now initializes ramdisk as an FS device. ([[evb]])<br />
* Fix hardcoded DISKREADBUFFER and FILESYSBUFFER values. On ARM these will be dynamically selected for each board (need to improve this through LLB). ([[evb]])<br />
* Now FreeLDR.ini is read, and crash happens because UI routines are all NULL. ([[evb]])<br />
* Add stubs for video mach functions and update minor to 1.3. ([[evb]])<br />
* Implement some simple video routines. ([[evb]])<br />
* Fix usable RAM not to include loader code and ram disk (up to 32MB). ([[evb]])<br />
<br />
* FreeLDR menu now appears, need GetTime for counter. ([[evb]])<br />
* Add PL031 RTC code for Versatile. ([[evb]])<br />
* Add RTC time to TimeInfo convert. ([[evb]])<br />
* Implement FirmWare GetTime function. Countdown in FreeLDR now working. ([[evb]])<br />
* Switch to bootvid 8x13 font (closer to PC/VGA experience). ([[evb]])<br />
* Fix LlbFwVideoGetDisplaySize return characters X/Y, not pixels. Now "Press F8 for advanced menu" shows". ([[evb]])<br />
* Refactor keyboard support to match serial. Now reading a key and waiting for a key are two things. ([[evb]])<br />
* Implement KbHit Firmware routine. ([[evb]])<br />
* It is now possible to interact with FreeLDR using the keyboard. ([[evb]])<br />
* Video Miniport driver not use ntddk.h, but miniport.h. But, Reactos miniport.h is empty! Add some definitions to miniport.h to get simple drivers to compile, so now can remove ntddk.h from VGA/VBE/XBOX miniports! ([[evb]])<br />
* Video Port driver should not use either, but too many changes required. So, define __BROKEN__ to allow ntddk + miniport together. ([[evb]])<br />
* Add VideoPortIsNoVesa API definition. Not implemented in ReactOS, used to disable VESA in F8 "Standard VGA Mode". Should implement for VGA-only support on broken VESA machine, and for test. ([[evb]])<br />
* Fix includes in richard's driver. ([[evb]])<br />
* Fix wrong calling to VideoPortCreateEvent. He got parameters all mixed up~ ([[evb]])<br />
* Change NANDFlash again for Versatile support. Now the LLB and OS Loader are created in one binary blob (loaded with -kernel), while the RAMDISK is loaded with -initrd. ([[evb]])<br />
* Now the only complication is that RAMDISK loaded at 0x80000 which will conflict with the 0x800000 range where kernel loads. Could move RAMDISK in code through LLB, but that would be very expensive (shift by 16MB up). Instead, NANDflash creates ramdisk image starting at offset 16MB. This way, emulator thinks it's loading at 0x80000, but actually loads at 0x1800000. Would be better if QEMU not hardcoded the INITRD_LOAD_ADDR... ([[evb]])<br />
* Define memory map structure for Versatile board/QEMU and send to OS Loader. ([[evb]])<br />
* Many hack removed. ([[evb]])<br />
* Better efficency use of memory layout. ([[evb]])<br />
* Region at 0x800000 now available for FreeLDR use to load kernel files. ([[evb]])<br />
* Implement simple ArmDiskNormalizeSystemPath so boot is allowed to happen. ([[evb]])<br />
* Use better stack address as defined in memory map. ([[evb]])<br />
* Now FreeLDR loads all files correctly from disk and is ready to jump to kernel. ARMv5 paging code must be rewritten before that can happen. ([[evb]])<br />
* Reading MBR from RAMDISK does not work since RAMDISK starts at BootSector (rdoffset) and disk sector functions are NULL. Build bogus signature/checksum for now, unless MBR really needed later. ([[evb]])<br />
* Now FreeLDR crashes no more and arrives at FrLdrStartup to boot kernel and setup paging. ([[evb]])<br />
* Make boot.s just stub to force load address, since ARM LLB already does setup. Will get rid of later. ([[evb]])<br />
* Get rid of all .pagedata stuff from boot.s. Now define simpler static page tables. Will probably get rid of later. ([[evb]])<br />
* Fix memory map to include framebuffer, had forgotten about it. Moved framebuffer to the nearest hole found. It happens to be 0xA0000, nice coincidence (matches x86!). ([[evb]])<br />
* Switch to nicer 8x16 font instead of 8x13. Now FreeLDR UI looks 99% identical to real PC. ([[evb]])<br />
* Start writing new ARMv6 Paging Code. Enable extended page tables and access bit, redefine structures, only for OS Loader for now. ([[evb]])<br />
* Identity map low-memory 1MB and MMIO 2MB space at 0x10000000 for Versatile. Need to make this board-specific later. ([[evb]])<br />
* Need to investigate sharing code with WinLDR. ([[evb]])<br />
* MMU enabled and Printf/LCD output works!. ([[evb]])<br />
* Fix text output ([[evb]])<br />
* Allow for more than just one parameter on the bootROM command line (sepearate with commas). ([[evb]])<br />
* Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets. ([[evb]])<br />
* Last code in PciScanBus: call to PciGetfunctionLimits now implement (call PcipGetfunctionLimits if PciSkipThisFunction say no) ([[evb]])<br />
* PcipGetfunctionLimits support PCI_HACK_CRITICAL_DEVICE and PCI Debug Device by use IPI code (PciExecuteCriticalSystemRoutine implement) ([[evb]])<br />
* PciConfigurators table define for Device, PCI-to-PCI (PP) Bridge plus CardBus Bridge but all configurator stub now ([[evb]])<br />
* Configurator chain: Init (Massage) -> [WRITE INIT] (PciWriteLimitsAndRestoreCurrent) -> Restore -> SaveLimit -> SaveCurrent ([[evb]])<br />
* Support ExpectedWritebackFailure ([[evb]])<br />
* Fix bug in PciApplyHacks (found by me testing sir_richard code) ([[evb]])<br />
* Implement logical keyboard interface. Converts scan code to ASCII codes (just ok). ([[evb]])<br />
* Implement firmware ConsGetCh based on keyboard interface. ([[evb]])<br />
* Implement KMI (Keyboard & Mouse Interface) PL050 driver for Versatile to init PS/2 and read keyboard scancodes. Can now press ENTER/whatever when FreeLDR gives "Cannot find freeldr.ini" error. ([[evb]])<br />
* Support ATAG Linux/ARMBoot architecture defined-structures. These are used by all ARMBoot-compatible loaders (QEmu, U-boot, etc). ([[evb]])<br />
* Read RAMDisk, RAM, Command Line from ATAGs (use -append boot-device=RAMDISK). ([[evb]])<br />
* Make environment-get function read command-line. ([[evb]])<br />
* Allocate RAM memory structure portably. ([[evb]])<br />
* Validate board info on boot. ([[evb]])<br />
<br />
<br />
* ntstrsafe.h] ([[Timo Kreuzer]])<br />
* Fix a number of parameter types (LPSTR/LPCSTR instead of PCHAR, PCCHAR) This is not the same, PCCHAR is a char * not a const char * ([[Timo Kreuzer]])<br />
* CRT ([[Timo Kreuzer]])<br />
** add _mingw_mac.h from ming-w64 and include it into _mingw.h<br />
** Update _CRTIMP definition<br />
** Fix definition of _wctype<br />
** onexit is not _CRTIMP<br />
* MINGW ([[Timo Kreuzer]])<br />
** Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325)<br />
* time.h ([[Timo Kreuzer]])<br />
** Add missing asctime_s and localtime_s, don't include time_s.h anymore<br />
* setjmp.h ([[Timo Kreuzer]])<br />
** Add mingw_getsp as inline function<br />
* reactos.dff ([[Timo Kreuzer]])<br />
** make explorer.exe and ntvdm optional<br />
* dbghelp.h, imagehlp.h ([[Timo Kreuzer]])<br />
** fix LOADED_IMAGE, UpdateDebugInfoFile, UpdateDebugInfoFileEx, ReBaseImage<br />
* WIN32K, WIN32CSR ([[Timo Kreuzer]])<br />
** Get rid of FASTCALL specifier for static functions and functions with no parameters.<br />
* GDI32 ([[Timo Kreuzer]])<br />
** GetTextExtentExPointI and GetTextExtentPointI take an array of glyph indices, not characters. Pass a flag GTEF_INDICES (This is a reactos specific definition and not exactly like on Windows XP, but the real names/values are undocumented and this is the easiest way.) to NtGdiGetTextExtent/NtGdiGetTextExtentExW and handle this flag in TextIntGetTextExtentPoint to account for this.<br />
** Fixes bug 3481<br />
<br />
* MSAFD, PSDK ([[Cameron Gutman]])<br />
** Merge part of r45435<br />
** Merge r48011 from aicom-network-branch<br />
<br />
* winnt.h ([[Timo Kreuzer]])<br />
** Remove definition of UNW_FLAG* constants. They don't belong here.<br />
<br />
* WDMAUD.DRV ([[Johannes Anderwald]])<br />
** Apply changes from mmixer library<br />
** Tested in Vbox with Winamp / ReactOS mplay32<br />
* MMIXER, WDMAUD_KERNEL ([[Johannes Anderwald]])<br />
** Implement retrieving device path<br />
* KSPROXY, MSDVBNP, MSVIDCTL, BDAPLGIN ([[Johannes Anderwald]])<br />
** Implement DllRegisterServer, DllUnregisterServer for those components<br />
** Add msdvbnp, msvidctl to build<br />
** Add msdvbnp, bdaplgin, msvidctl to bootcd<br />
* KSPROXY, MSDVBNP ([[Johannes Anderwald]])<br />
* Remove remaining DebugBreak<br />
* Add debug traces<br />
<br />
* HIVESYS.INF ([[Cameron Gutman]])<br />
** Enable kmtest<br />
<br />
* shellapi.h ([[Gabriel Ilardi]])<br />
** Fix build copy pasta spotted by encoded<br />
<br />
* WINGDI.H ([[Timo Kreuzer]])<br />
** Add missing GetCharWidthI, GetTextExtentExPointI, GetTextExtentPointI<br />
* tchar.h ([[Timo Kreuzer]])<br />
** enable _tcsnlen definition<br />
<br />
* WIN32K, USER32 ([[Jerome Gardou]])<br />
** Get rid of ONEPARAM_ROUTINE_CREATECURICONHANDLE<br />
<br />
* DESK.CPL (Katayama; {{bug|5552}})<br />
** Fix client font in the advanced appearance dialog.<br />
<br />
* winnt.h ([[Timo Kreuzer]])<br />
** Fix definition of KNONVOLATILE_CONTEXT_POINTERS for amd64<br />
<br />
* BDAPLGIN, KSPROXY, MSDVBNP, MSVIDCTL ([[Johannes Anderwald]])<br />
** Register DLLs when ReactOS is installed<br />
<br />
* intrin_x86.h ([[Timo Kreuzer]])<br />
** cast return value of __sync_val_compare_and_swap to make clang happy<br />
** add __cdecl to a number of intrinsics to make them (hopefully) compatible with crt header declarations.<br />
<br />
* WDMAUD.DRV ([[Johannes Anderwald]])<br />
** Cleanup code<br />
** Fix a bug which made the caller assume that a wave handle has already been open.<br />
** define a macro which appends a postfix depending on wether USE_MMIXER_LIB has been defined<br />
<br />
* DESK.CPL ([[Aleksey Bragin]]; {{bug|5620}})<br />
** Katayama Hirofumi <katayama.hirofumi.mz@gmail.com><br />
** Renamed GLOBAL_DATA structures to DATA.<br />
** Added real GLOBAL_DATA in background.c, that manages the background color.<br />
** Resolved conflict of background colors in background.c and appearance.c.<br />
** Fixed drawing the menu in draw.c.<br />
<br />
=== BASE_SYSTEM_EXPAND ===<br />
* Update expand utility to Wine-1.1.37. Last update happened 7 years ago and since then it was translated into 20 languages. Sorry to all the translators but the preference is given to a working untranslated version rather than a non-working localized one. ([[Aleksey Bragin]]; {{bug|4637}})<br />
* Update README.WINE. ([[Aleksey Bragin]])<br />
<br />
=== INPUT_I8042PRT ===<br />
* Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running. ([[Michael Martin]])<br />
<br />
=== INTRIN_X86 ===<br />
* define _alloca() to __builtin_alloca() on amd64 ([[Timo Kreuzer]])<br />
* 46388 ([[Timo Kreuzer]])<br />
* Add __stosq, __movsq, _bittest64 ([[Timo Kreuzer]])<br />
<br />
=== IOEVENT ===<br />
* Added a library containing GUIDs for PnP notifications ([[Pierre Schweitzer]])<br />
<br />
=== NETEVENT ===<br />
* Add new netevent.dll. It is a resource dll that will be used by the event log viewer. ([[Eric Kohl]])<br />
<br />
=== NTOS ===<br />
* Implement GUI thread promotion during the first GUI system call in C. This is tricky due to EBP, and actually requires some tiny inline ASM magic to make it work right. ([[sir_richard]])<br />
* Implement SYSENTER system calls in C as well. ([[sir_richard]])<br />
* Make KiSystemStartup the real C entrypoint of the kernel, and move the "Am I being booted by FreeLDR" logic inside it -- it will then call KiRosPrepareForSystemStartup as earlier. ([[sir_richard]])<br />
* Move the Double Fault and Boot Stack declaration in C code, with the proper alignment attribute. ([[sir_richard]])<br />
* Although the concern that KiSystemStartup cannot be 100% C since it modifies ESP is real (Thomas' original fix of Alex's code), we don't need that much of it in assembly. Instead, write a simple trampoline (KiSwitchToBootStack) inline which switches stacks and jumps to a second-stage C function. ([[sir_richard]])<br />
* Completely remove boot.S as it isn't needed anymore, ReactOS startup is back to being (nearly) 100% C. ([[sir_richard]])<br />
* Workaround for GCC 4.4.x bug reported by Dmitry. ([[sir_richard]])<br />
* Add dclevel flags. ([[James Tabor]])<br />
* Implement KiSwapProcess in C. ([[sir_richard]])<br />
* Implement KiIsNpxPresent and KiIsNpxErrataPresent in C. It's much clearer what these are doing now. ([[sir_richard]])<br />
* Implement KiFlushNPXState and fix some bugs that were present in the ASM version, such as a wrong NPX state check. ([[sir_richard]])<br />
* Implement working intrinsics for fxrstor, fxsave, fnsave and enable them for flushing. We'll update the FPU trap code to use these later. ([[sir_richard]])<br />
* KiDispatchInterrupt crushes EBX, so maybe it should preserve it first? This only worked because KiDispatchInterrupt was only called by ASM code that already was magically aware of this fact, and preserved (or didn't use) EBX before making the call. Yuck! ([[sir_richard]])<br />
* Export the C KiEoiHelper alongside the ASM Ke386EoiHelper. Yes, this is a "ReactOS-only" export, but really this interface is reserved for the HAL, and as long as we keep Ke386EoiHelper, the NT HAL should still work. ([[sir_richard]])<br />
* Need to revisit/finalize this decision and whether or not we can emulate the C-interface with Ke386EoiHelper somehow (reliably). ([[sir_richard]])<br />
* Remove duplicate definitions (now in time.c). ([[Dmitry Gorbachev]])<br />
* Do not attempt querying the Registry Primary Handle for the Backing Hive File Size in the case where there is no actual Primary! There was no error checking so nobody noticed this happens -- it also probably resets Cluster to 0 (instead of 1), which can cause corruption in some cases. ([[sir_richard]])<br />
* Implement 4 lines of support code needed to handle interrupts during V8086 mode, which were lacking since we weren't hitting this case yet. ([[sir_richard]])<br />
* Note that now the KeUpdateSystemTime interface is not "compatible" with Windows anymore. This does not matter, since the only possible caller of KeUpdateSystemTime is a very specific HAL routine that needs a very specific stack layout to actually work, so the chance of anyone calling this API is absolutely zero (no, not even some experimental driver. It's absolutely impossible). ([[sir_richard]])<br />
* Turn off debug print outs. ([[James Tabor]])<br />
* Output PCH, not dependencies. ([[Dmitry Gorbachev]])<br />
* Rework the trap macros again. This time we needed some added complexity because of the need for runtime patching at boot. We got away with it nicely and basically implement a simple "if" in ASM, which gives us a deterministic set of instructions (vs the compiler). We then patch if if needed (see next bullet). ([[sir_richard]])<br />
* Support systems without SYSENTER. Nothing was actually disabling the SYSEXIT mechanism recently enabled. Now IRET is always used unless a SYSENTER machine is discovered, in which case the jmp to the IRET code is patched with a jmp to SYSEXIT code. ([[sir_richard]])<br />
* Enable V8086 Fast-V86 Trap mode for Trap 6 (Invalid Opcode). Because we are now taking zero traps during V8086 mode, we can't do the "BOP lookahead", so the only trap we do get is when we hit the BOP/invalid opcode itself. ([[sir_richard]])<br />
* Multiple fixes to V8086 opcode emulation code that I noticed while looking through the source. Also multiple fixes to VDM code. ([[sir_richard]])<br />
* This change will only impact real hardware and VMWare, since QEMU does not support VME. On VMWare, performance increased up to 400% during bootup (80 million cycles instead of 300 million, in one test). ([[sir_richard]])<br />
* Merge aicom-network-branch (still without the NDIS stuff) ([[Cameron Gutman]])<br />
* Fixes some nasty bugs and hacks in our TCP implementation ([[Cameron Gutman]])<br />
* Remove checks for VDM alert during GPF. This is a Windows-specific hack for VDM, which isn't implemented. ([[sir_richard]])<br />
* Fix L1/L2 cache detection and write out the size and associativity. Now that KeGetCurrentProcessorNumber doesn't think your L2 cache is the number of CPUs, this can be safely done. ([[sir_richard]])<br />
* The last big step. Now that the HAL is in C, we can handle interrupts in C. Do so using the proposed model that was #if'ed out, but with some improvements. ([[sir_richard]])<br />
* Fix recursion when sweeping the DCE list. ([[James Tabor]])<br />
* Another try at the chained interrupt dispatch problem... ([[sir_richard]])<br />
* Return correct IRQ 0 vector instead of IRQL, when the timer interrupt ends. ([[sir_richard]])<br />
* Fix KiEnterInterruptFrame. In the case of a V86 trap, the segments were overriden because this wasn't a kernel trap (missing if/elseif). ([[sir_richard]])<br />
* Simplify KiTrapStub and write registers in order. ([[sir_richard]])<br />
* Always set correct segments; the if/else branch should decide which segments to save, not whether or not to set the sane ones. Fixes boot on VirtualBox and real hardware. ([[sir_richard]])<br />
* Try to fix KiEnterInterrupt once and for all. Only set segments for V8086 or user traps. ([[sir_richard]])<br />
* Rework the way traps with possibly dirty DS/ES segments are handled. The FAST V86 hack is gone. Intead, created a "safe" version of IsTrapV86 and IsTrapUser that does an SS segment dereference (known good). The condition is then based on this, and the segments are saved and loaded safely. Note that for GCC 4.5 the ASM can be improved to directly branch or not to a label, instead of returning a boolean that is then further compared before branching. ([[sir_richard]])<br />
* This will fix certain exceptions that were seen in KeUpdateSystemTime, and might fix the sneaking HalpTrap0D while not in V86 mode (no promises). ([[sir_richard]])<br />
* Yet another fix for KiEnterInterruptTrap: Set correct DS/ES before touching the TrapFrame. ([[sir_richard]])<br />
* Make this operation an inline so any possible future code will not make this mistake twice. ([[sir_richard]])<br />
* Thanks to Physicus for the bug report. ([[sir_richard]])<br />
* Combine all exit trap stubs into a single function with flags (same thing we did for the entry stub). Now there are only 15 lines of ASM instead of 60. ([[sir_richard]])<br />
* Start redefining ARMv6 paging structures. ([[sir_richard]])<br />
* Add a branch-to-self to start testing kernel code. ([[sir_richard]])<br />
* Forgot to setup an IRQ stack, the kernel was working by magic since in previous incarnations of the ARM port, 0xFFFFyyyy was mapped, so a stack of 0 worked (going downwards). ([[sir_richard]])<br />
* Now FreeLDR just calls the KiSystemStartup routine correctly, without any "magic", so fix the code to use a1 instead of a2 (argument 1/2). ([[sir_richard]])<br />
* Get rid of fixed TLB entries on ARM, I don't think that idea makes sense (unlike IA64 or MIPS where they are lot more flexible), since they only allow 1MB sections, not pages. ([[sir_richard]])<br />
* Sync up KiDispatchException with x86 code (and going back to C comment formatting). ([[sir_richard]])<br />
* ARM DDK]: Use the closest possible approximation to the x86 KPCR/KPRCB (in fact, the public KPCR is identical, just the KIPCR is different, internally), instead of a mashup of PPC and MIPS structures. ([[sir_richard]])<br />
* Update code to use new KPCR structure. ([[sir_richard]])<br />
* Make all trap code currently spin forever, because it has not been reviewed yet. ([[sir_richard]])<br />
* Make system startup match x86 code as closely as possible, instead of mixing MIPS/PPC code. Only rip out parts that are obviously x86-specific. Also fix code to use new KPCR definitions. ([[sir_richard]])<br />
* Implement a DbgPrintEarly function that directly uses KDCOM to print to the serial console, instead of going through the Debug Service Interrupt. ([[sir_richard]])<br />
* All calls to DbgPrint will go to DbgPrintEarly for now. ([[sir_richard]])<br />
* More header fixes to match new definitions. ([[sir_richard]])<br />
* Tabula rasa (clean slate) on the old-MM page routines for ARM. Get rid of all of them for now. ([[sir_richard]])<br />
* Implement MmInitGlobalKernelPageDirectory as the first ARM page function in the new file. ([[sir_richard]])<br />
* That's it for the kernel. ([[sir_richard]])<br />
* Setup the template PTE and PDE used on ARM. ([[sir_richard]])<br />
* Implement device location information override support and add the location override value for PS/2 mice. PS/2 keyboards be added next. ([[Eric Kohl]])<br />
* Please translate the location override string. ([[Eric Kohl]])<br />
* Move HYPER_SPACE to 0xC0500000 since it must be on its own PDE. We need to revisit some FreeLDR Mm decisions later. ([[sir_richard]])<br />
* Move certain arch-specific definitions from mm.h to the arch-specific mm.h ([[sir_richard]])<br />
<br />
* Allow registry configuration of large kernel stack size, with proper checks. ([[sir_richard]])<br />
* Actually use calculated kernel stack size value. ([[sir_richard]])<br />
<br />
* Factor out computations of NP sizes and limits into MiComputeNonPagedPoolVa. ([[sir_richard]])<br />
* Fix NP size/limit calculations to use the amount of FREE RAM, not the amount of INSTALLED RAM. ([[sir_richard]])<br />
* Use Windows 2003's algorithm for NP size on machines with more than 512MB of FREE RAM. ([[sir_richard]])<br />
* Partly handle the case of machines with NP over 128MB. ([[sir_richard]])<br />
* Factor out SecondaryColor computations into MiComputeColorInformation. ([[sir_richard]])<br />
* Fix SecondaryColor computations. If the KPCR has no deta, use the default colors of 8, not just 1. Also handle cases where there is more L2 cache than we'd like -- set the secondary colors to a maximum of 1024 in that case. Finally, if the colors are not a power of two, or there are not enough (due to a registry setting), use the default of 8. ([[sir_richard]])<br />
* Allocate and initialize color tables based on MmSecondaryColors (MiInitializeColorTables). ([[sir_richard]])<br />
* These come after the PFN database, so modify the MmPfnAllocation to account for them. ([[sir_richard]])<br />
* Add device location information override PS/2 keyboards. ([[Eric Kohl]])<br />
* partially revert changes from 45560 ([[Christoph von Wittich]])<br />
* Make KiFastCallEntryHandler and KiSystemServiceHandler FASTCALL and pass the systemcall number in TrapFrame->Eax ([[Timo Kreuzer]])<br />
<br />
* Refactor the mapping of the PTEs for the PFN database into MiMapPfnDatabase and move the code to portable directory. ([[sir_richard]])<br />
* Move and refactor some other definitions, and make some numbers more portable by defining arch-specific subvalues. ([[sir_richard]])<br />
<br />
* Fix floppy controller detection ([[Cameron Gutman]]; {{bug|4391}})<br />
* Simplify waiting in Get_Byte and Send_Byte ([[Cameron Gutman]]; {{bug|4391}})<br />
* for details ([[Cameron Gutman]]; {{bug|4391}})<br />
* Fix a stupid bug: x86 has 1024 PDEs, and ARM has 4096 PDEs, not the other way around. ([[sir_richard]])<br />
<br />
<br />
* Fix incorrect sector size detection which caused seeking to fail when booting from a floppy ([[Cameron Gutman]])<br />
* FreeLoader can load from a floppy disk now ([[Cameron Gutman]])<br />
* Remove unused code. ([[sir_richard]])<br />
* Fix an off-by-one-error which incorrectly causes GUI promotion to fail if the first GUI call is "0", since the limit on the GUI descriptor table will also be "0". We should check if the limit is equal to or lower, not just if it's lower. ([[sir_richard]])<br />
* Make EventLog and Spooler services report their status to the SCM. ([[Eric Kohl]])<br />
* Manage the PFN lists using the correct Flink/Blink semantics of the MMPFN structure, instead of typecasting a LIST_ENTRY on top of Flink and PteAddress. This allows PteAddress to be used now, and minimizes the number of differences between MMPFN and the ReactOS PHYSICAL_PAGE. ([[sir_richard]])<br />
* Add MiInsertPageInFreeList to build the colored lists (not yet used) in the ARM3 PFN database. ([[sir_richard]])<br />
* Remove SwapEntry parameter from MmAllocPage since it was always zero. ([[sir_richard]])<br />
* Store SwapEntry as WsIndex. We can do this now since Flink is only used when the page is in a list (meaning it's not active, ie. free or zero), and non-active pages don't have a swap entry. ([[sir_richard]])<br />
* Make MM init read MmProductType to determine what SKU of ReactOS this is, instead of assuming Server. If you want to go back to the old behavior, you need to change "WinNT" to "ServerNT" in the hivesys under Product Type. ([[sir_richard]])<br />
* Initialize thresholds for low and high memory (in pages), low and high paged pool memory, and low and high nonpaged pool memory. These are described in the source. ([[sir_richard]])<br />
* Initialize events for each of those thresholds, and populate the \KernelObject\xxxCondition events that are documented in MSDN for driver and app developers. ([[sir_richard]])<br />
* Define some internal thresholds to use later, representing the minimum number of free pages under we go berserk, and the minimum number of free pages that we consider "plenty". ([[sir_richard]])<br />
* Rename MiRemoveFromList to MiUnlinkFreeOrZeroedPage (Windows name). Make the function handle MmAvailablePages decrement, instead of having the caller do it. ([[sir_richard]])<br />
* Remove run-time initialization of the PFN lists, just initialize them statically (also fixes the fact we forgot to initialize their names). ([[sir_richard]])<br />
* Read ProductType from registry into MmProductType instead of dummy value. Remove duplicate "Mirroring" variable read. ([[sir_richard]])<br />
* Don't prepend fastcall forward's target with @. Fixes binding issues in videoprt, thanks to Olaf Siejka for identifying the issue. ([[Aleksey Bragin]])<br />
* Partially revert patches 45626 and 45633. ([[Eric Kohl]])<br />
* Several services do not report their status to the service manager properly. Therefore we must not use any code that relies on service status information as part of the setup and boot processes as long as these issues have not been fixed. The service manager still needs to provide fake information about the service status. ([[Eric Kohl]])<br />
* Use system PTEs for drivers, both boot drivers and system-loaded drivers. This removes the last user of the deprecated MmAllocateSection internal API. Another side-effect is that drivers will now have much higher load addresses (in the 0xF0000000 and higher range), as you would expect on Windows, plus increasing coverage and usage of system PTEs (which can still be optimized). ([[sir_richard]])<br />
* Do not "copy" boot drivers from one set of pages to another set of pages. Instead, use system PTEs to map the boot drivers to a new VA, and set the PFNs to the original PFNs that the loader had obtained (and don't free that memory). This avoids some overhead. ([[sir_richard]])<br />
* Now the only user of MmMapMemoryArea is the caching code, which I won't touch. ([[sir_richard]])<br />
* Insert pages into zero list with specific MiInsertZeroListAtBack function instead of generic MiInsertInTailList. Allows us to handle insertion into colored page lists (not yet used) correctly, as well as update the page location to ZeroedPageList automatically (so don't let the callers do this anymore). Also handle memory threshold accounting. ([[sir_richard]])<br />
* Temporarily disable last part of MiInsertZeroListAtBack which seems to cause issues in the 1st stage. ([[Aleksey Bragin]])<br />
* Enable high/low memory events notifications. ([[Aleksey Bragin]])<br />
* Reenable critical debug messages. ([[Eric Kohl]])<br />
* Rewrite trap handler exit stubs in pure assembly, remove gcc inline assembly. ([[Timo Kreuzer]])<br />
* Replace jmp to C handler with KiCallHandler macro, that expands to jmp on release builds for speed and call on debug builds to fix backtraces. ([[Timo Kreuzer]])<br />
* Unroll the Syscall handler loop and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack to prevent the compiler from optimizing it away / moving it out of the loop. ([[Timo Kreuzer]])<br />
* Bugcheck in KiTrap0DHandler, if the fault couldn't be resolved. ([[Timo Kreuzer]])<br />
* Remove handling of V86 traps and edited traps in KiServiceExit, ASSERT to make sure they never happen. ([[Timo Kreuzer]])<br />
* Replace code patching of the syscall exit handler with a function pointer. ([[Timo Kreuzer]])<br />
* Use __debugbreak() instead of while(TRUE) in KiExitTrapDebugChecks ([[Timo Kreuzer]])<br />
* Do the "funny message" (not really funny, my apologies) shenanigans after the system components have shutdown, and reset the display and call the HAL at least at DPC level (should probably do it at HIGH IRQL, really). This way, we can avoid the context switch to another process while the HAL is executing the BIOS reset display call (done solely for the benefit of the "funny messages", as the video card driver usually resets the display) and thus avoid the "invalid V86 opcode" message sometimes appearing on shutdown. Did you know the "funny messages" take up more storage space than an average embedded micro-controller OS? ([[sir_richard]])<br />
<br />
* Implement CmSetLazyFlushState to disable lazy writing in the Cm. ([[sir_richard]])<br />
* Implement ExSwapInWorkerThreads to in-swap any worker threads when needed. ([[sir_richard]])<br />
* Add HAL stubs for HalEndOfBoot and HalSetWakeEnable since most HALs set this to NULL. ([[sir_richard]])<br />
* Have I/O Manager Volume Device Objects register with the Power Manager so that they can receive dope. ([[sir_richard]])<br />
* Reimplement NtShutdownSystem. ([[sir_richard]])<br />
* Implement NtSetSystemPowerState for the shutdown/reboot cases. ([[sir_richard]])<br />
* Use the dope from the volume device objects to flush all writeable (non-floppy) devices. Pending hard-disk changes are now flushed to disks before shutdown. ([[sir_richard]])<br />
* Flush \\REGISTRY during shutdown. This flushes all pending changes. ([[sir_richard]])<br />
* Call into Cc to flush lazy writer during shutdown. ([[sir_richard]])<br />
* Stop killing processes on shutdown. The kernel should not be doing this. ([[sir_richard]])<br />
* Don't only shutdown disk file systems, but also cdrom and tape. ([[sir_richard]])<br />
* Don't only notify drivers of first-chance shutdown -- also parse the last-change shutdown list. ([[sir_richard]])<br />
* Reference drivers registering for shutdown notifications so that they remain loaded for them to get the notification at shutdown. ([[sir_richard]])<br />
* Notify drivers that have registered/opened the Power State callback. ([[sir_richard]])<br />
* A lot of the Po* power state code is highly simplified, but provides a good roadmap to anyone interested in this functionality long-term. ([[sir_richard]])<br />
* While attempting to ressucitate the user-mode shutdown code in CSRSS (disabled since 2006), it seemed clear that one of the main steps is to obtain the caller's LUID in order to kill the right processes. This LUID is obtained from the current thread's token, and we know it's the callers since we're supposed to impersonate the caller. Unfortunately, impersonation failed, making the whole process fail. ([[sir_richard]])<br />
* Impersonation failed because NtImpersonateThread was actually inverting the THREAD_IMPERSONATE rights, asking the client thread for the server's permissions, and vice versa. Fixing this resulted in yet another failure. ([[sir_richard]])<br />
* Analysis of this failure showed that even opening the server (ie: current) thread for THREAD_DIRECT_IMPERSONATION failed, which is unusual since the current thread should have access to all its rights. This is determined in PspCreateThread when the ETHREAD->GrantedAccess field is set. ([[sir_richard]])<br />
* Continuing onto this path, tracing revealed that GrantedAccess was merely 0x1607F and not 0x1F3FF as expected, meaning that not all rights were given, including the impersonate right (0x200), explaining the failure, but not the deeper reason behind it. ([[sir_richard]])<br />
* Attempting to identify which code path set this GrantedAccess, the SepAccessCheck routine came to light. A bug there caused MAXIMUM_ALLOWED accesses to fail in certain scenarios, such as when the object had no security descriptor, because MAXIMUM_ALLOWED would be granted as an absolute value, when instead of it is a flag that should grant GENERIC_ALL. Fixing that bug, the failure continued. ([[sir_richard]])<br />
* Further analysis identified that the Administrators SID was being found with GENERIC_READ + WRITE + EXECUTE access, and no SID was found for GENERIC_ALL access. This happened when searching the system token's default DACL, which is assigned to the kernel (but for kernel-mode callers, this check was skipped), smss, winlogon, etc. ([[sir_richard]])<br />
* The code for creating this system token was heavily hacked, so the function to create the system token, as well as NtCreateToken were refactored to use a common piece of token-creating code. Furthermode, the system token was correctly created with Local System as the user, and Administrators as one of the groups. Finally, SeDefaultDacl was used (already setup properly) instead of a badly configured Default DACL. The new shared code also correctly sets the SE_GROUP_ENABLED flag on all SE_GROUP_MANDATORY groups, and scans tokens to set the TOKEN_HAS_ADMIN_GROUP and TOKEN_HAS_TRAVERSE_PRIVILEGE flags which were not previously set. ([[sir_richard]])<br />
* With the correct system token and default DACL, the Local System SID was now found, but the failure continued. This was revealed to be due to an even deeper rooted problem, as the SepIsSidInToken routine checked for SE_GROUP_ENABLED before listing a SID as "present". Although this is correct for actual groups, the User SID will never have the SE_GROUP_ENABLED flag as it is not a group. This caused any granted access ACE belonging to a user (instead of a group) to be ignored, causing either access check failures, or limited rights returned (in the MAXIMUM_ALLOWED case). ([[sir_richard]])<br />
* Upon fixing this bug, the NtImpersonateThread call finally returned success, since the rights were now correct. Promptly upon calling NtOpenThreadToken to query the LUID however, the system ASSERTED with FALSE. ([[sir_richard]])<br />
* The code at fault was a line in NtOpenThreadTokenEx which forcefully ASSERTed if the impersonation code path was taken, presumably because this was never tested, and ReactOS would actually always fail impersonation attempts due to the bugs fixed above. This routine was thus quickly reworked to fix some mistakes (such as forgetting to actually impersonate the client, incorrect referencing/dereferencing of thread/tokens, and assumptions about DACL creation success). ([[sir_richard]])<br />
* Having fixed the NtOpenThreadTokenEx routine, the LUID query now went through for the impersonated token, but soon causing a user-mode crash, due to an incorrect parameter reference in the CsrGetProcessLuid function in the csrsrv code by Alex (which I copy/pasted to reduce code duplication). ([[sir_richard]])<br />
* Fixing this final bug finally allowed the correct LUID to be queried and I was able to continue development of not-yet-commited user-mode shutdown code. ([[sir_richard]])<br />
* Convert battery.inf to UTF-16 ([[Sylvain Petreolle]])<br />
* Add battery.inf and fdc.inf to syssetup process. ([[Sylvain Petreolle]])<br />
* Floppy disk controllers and batteries now appear correctly in device manager. ([[Sylvain Petreolle]])<br />
* Dedicated to aicom ;) ([[Sylvain Petreolle]])<br />
* No good deed goes unpunished. Continuing the novel/saga from a couple of days ago, it seems that now that impersonation works, various code paths are being tickled into existence. For example, it would seem parts of the system now attempt setting primary tokens. This would cause an assertion, since PspAssignPrimaryToken incorrectly dereferenced the token (leading to a double-dereference) due to an off-by-! mistake. ([[sir_richard]])<br />
* List still-running processes at kernel shutdown. Useful for debugging shutdown code later. ([[sir_richard]])<br />
* Quit building a useless IO_RESOURCE_REQUIREMENTS_LIST (and leaking memory) in response to IRP_MN_QUERY_RESOURCES ([[Cameron Gutman]])<br />
* Actually store the IO_RESOURCE_REQUIREMENTS_LIST in Irp->IoStatus.Information in response to IRP_MN_QUERY_RESOURCE_REQUIREMENTS so the PnP manager can use it (and fixes another memory leak) ([[Cameron Gutman]])<br />
<br />
* I forgot to set the exit function for systems without sysenter/sysexit support. Should fix sysreg. ([[Timo Kreuzer]])<br />
* Add DPRINTs to tell if SYSENTER is detected. Requested by Christoph for testing the test machine. ([[Timo Kreuzer]])<br />
* NtOpenThreadTokenEx: Initialize NewToken with NULL, so it doesn't get wrongly dereferenced. Fixes advapi32:security winetest crash. ([[Timo Kreuzer]])<br />
* Update pspec file with amd64 exports, use -arch= where appropriate ([[Timo Kreuzer]])<br />
* Add internal amd64 headers. ([[Timo Kreuzer]])<br />
* Add support for reference strings in IoOpenDeviceInterfaceRegistryKey ([[Johannes Anderwald]])<br />
* Make sure SymbolicLink is null terminated ([[Johannes Anderwald]])<br />
* Rewrite boot driver loading code (not the driver code itself) to use the boot loader's BootDriverListHead, instead of parsing InOrderListHead and cherry-picking ".sys" files. This is the last incompatibility with Windows. ([[sir_richard]])<br />
* Use group prioritiy, tag numbers, and tag priority to determine the correct loading order for boot drivers, instead of just parsing the linked list. Dependencies work now! ([[sir_richard]])<br />
* Load any DLLs that are driver-dependent with MmCallDllInitialize. Previously, these .DLLS were ignored and drivers could lose dependencies. ([[sir_richard]])<br />
* Fix MP install. ([[Sylvain Petreolle]])<br />
* Simplifying MakeInfoDC. ([[James Tabor]])<br />
* Implement Configuration Manager routines for building a driver list, sorting it, detecting circular dependencies and ordering, combining groups, tags, group orders and tag orders, etc. Replaces the "drvrlist" I/O interface currently in ReactOS. ([[sir_richard]])<br />
* Use the new Cm interface in IopInitializeSystemDrivers to parse the ordered list of system drivers to load. Make it use ZwLoadDriver directly instead of having a hacked IopLoadDriver function. ([[sir_richard]])<br />
* Drivers should not show up loading n times a reboot now (some drivers seemed to do this in the past when they failed to load). ([[sir_richard]])<br />
* The system driver code could be further improved by checknig if the driver has already been loaded, or attempted and failed to load, but it is already much better now than in the past. ([[sir_richard]])<br />
* Device interface strings are null terminated ([[Johannes Anderwald]])<br />
* Some PnP ABI refactoring for future patches/work. ([[sir_richard]])<br />
* Switch to PnP Add Device routine, currently mostly a copy of the original ReactOS code. However, PnP now tries to open all the required registry keys before attempting to start the device. Failures are reported and load cancelled. More work TBD. ([[sir_richard]])<br />
* Rename IopBusTypeGuidList to PnpBusTypeGuidList to match Windows 2003 PnP Namespace instead of Windows 2000. ([[sir_richard]])<br />
* Use PnpBusTypeGuidList->Lock instead of PnpBusTypeGuidListLock. ([[sir_richard]])<br />
* Implement PipAllocateDeviceNode for setting up device nodes and linking them to a PDO. Only used for Root PnP now. Main ABI change is that allocate in ReactOS right now includes "insert". These will be seperate in the new PnP ABI. ([[sir_richard]])<br />
<br />
<br />
* Aleksey wants an easy way to see debug messages coming from one process vs. another, which is an obvious idea that should've done a long time ago. Now you can see who is generating a given debug message (including the thread). ([[sir_richard]])<br />
<br />
* In the process, fix bugs in the Event dispatcher code that used Win32 EVENT_TYPE instead of NT KOBJECTS enumeration. ([[sir_richard]])<br />
<br />
* Change some comments to standard ReactOS commenting style. ([[Aleksey Bragin]])<br />
* Fix a strange bug where we were only setting SharedUserData->TestRetInstruction conditionally only if lookup failed - it should be set on success. Also, bail out if the lookups failed. ([[Aleksey Bragin]])<br />
* Fix a code typo which led to a security issue when the XOR algorithm for the system cookie might actually yield zero. Now it's going to loop as long as the cookie is 0, attempting to generate a non-zero one. ([[Aleksey Bragin]])<br />
* Fix several bugs in Inbv (busted locking code, useless variables, magic initializers). ([[Aleksey Bragin]])<br />
* Daniel Zimmermann: Fix POPF bugs in VDM mode, namely truncation of the stackpointer to 16 bit and setting proper flags in the trapframe eflags register. This fixes problems with videocards calling int 0x10 VESA BIOS extension. ([[Aleksey Bragin]]; {{bug|5608}})<br />
<br />
<br />
=== NTOS_PERF ===<br />
* Enable VME support. VME stands for Virtual 8086 Mode Extensions, and it's an Intel optimization that makes changes to the IF bit in EFLAGS (CLI, STI, INT, IRETD, PUSHF, POPF) completely transprent: instead of changing the real (protected) bit, which requires the OS to trap and emulate the behavior, the CPU sets a "Fake" IF bit instead. When you're dong in V8086 mode, you simply update your real flag with whatever the fake flag says. ([[sir_richard]])<br />
<br />
=== NTOSKRNL_CONFIG ===<br />
* Add a macro for asserting hash lock ownership. ([[Aleksey Bragin]])<br />
* Add a macro for getting an alloc page from KCB / delay alloc item. ([[Aleksey Bragin]])<br />
* Add a newly allocated KCB to the tail of CmpFreeKCBList, not to its head. ([[Aleksey Bragin]])<br />
* Add more assert macros for registry operations: locked or loading, exclusively locked or loading, hash and KCB locks, locked for flushing. ([[Aleksey Bragin]])<br />
* Add macros for getting alloc page from KCB and delay alloc item. ([[Aleksey Bragin]])<br />
* Stub support for global quota enable. ([[Aleksey Bragin]])<br />
* Stub support for notifications. ([[Aleksey Bragin]])<br />
* Add a source file for a future HiveList implementation. ([[Aleksey Bragin]])<br />
* Implement new (correct) hive flusher lock/release routines, unused right now. ([[Aleksey Bragin]])<br />
* Flusher lock fixes: wrong kind of lock,total mess (and the wrong kind of lock). Properly fixed throughout cmapi.c, but still missing in many other places. ([[Aleksey Bragin]])<br />
* Add support for detecting loading of an already loaded hive. ([[Aleksey Bragin]])<br />
* Start adding calls to CmpReportNotify to support registry callbacks. ([[Aleksey Bragin]])<br />
* Do work needed to flush notifications for a deleted node (but CmpFlushNotify not yet implemented). ([[Aleksey Bragin]])<br />
* Add support for adding each newly loaded hive to the HiveList key in the registry (but CmpAddHiveToFileList not yet implemented). ([[Aleksey Bragin]])<br />
* Add some ViewLock acquire/releases where needed. ([[Aleksey Bragin]])<br />
* Load the key in a faster way (Ob vs Zw) ([[Aleksey Bragin]])<br />
* Add checks everywhere for HvMarkCellDirty success. In future (when log/backup file is enabled), it can return FALSE (e.g. when we are out of space). ([[Aleksey Bragin]])<br />
* Change logic in CmpDoFlushAll to only flush a hive if it won't shrink (in the future, flushing may lead to hive shrinkage for efficiency). ([[Aleksey Bragin]])<br />
* Add SEH2 protection to all CmApis that may deal with user-mode data. ([[Aleksey Bragin]])<br />
* Add HvTrackCellRef/HvReleaseCellRef for tracking cell references in scenarios where we might need many GetCell/ReleaseCell calls. For now stubbed to only work with up to 4 static references. ([[Aleksey Bragin]])<br />
* Properly unlock/free in some failure paths in some of the CM APIs. ([[Aleksey Bragin]])<br />
* Add some missing HvReleaseCell in paths where it was missing. ([[Aleksey Bragin]])<br />
* Try to fix hack in enumerate key. ([[Aleksey Bragin]])<br />
* Fix wrong usage of KeQuerySystemTime. It was called twice to save it in 2 different places. Instead, there should be only one call, and then duplicate the value across. ([[Aleksey Bragin]])<br />
* Fix logic in CmpSetValueExistingData/Key. ([[Aleksey Bragin]])<br />
* Tested with winetests and .NET framework 1.1 installation which fully completes. ([[Aleksey Bragin]])<br />
<br />
<br />
=== NTOSKRNL_IO_PNPMGR ===<br />
* Fix incorrect POOL_TYPE allocation in IoInvalidateDeviceRelations. This function can be called at DISPATCH_LEVEL, which requires NonPagedPool POOL_TYPE. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_PO ===<br />
* When an IRP is freed in a Completion routine the return Status is STATUS_MORE_PROCESSING_REQUIRED to let IoCompleteRequest know not to do anything further with the IRP. ([[Michael Martin]])<br />
* Fix typo. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* Acquire and Release RundownProtection on the Parent Pocess not the newly created Pcess when setting the SectionObject. ([[Michael Martin]])<br />
* When deleting a Process remove the Process from the MmProcessList. Fixes random NonPaged Pool corruptions. Thanks aicom for assistance. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* Fix a teb member name ([[Timo Kreuzer]])<br />
* 44506 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
=== OLDNAMES ===<br />
* Update moldname-msvcrt.def ([[Timo Kreuzer]])<br />
* Add a proper oldnames lib, instead of implicitly including it with mingw. ([[Timo Kreuzer]])<br />
* 46526 ([[Timo Kreuzer]])<br />
<br />
=== RSYM64 ===<br />
* fix linux compilation ([[Timo Kreuzer]])<br />
* Silence annoying error messages ([[Timo Kreuzer]])<br />
<br />
=== SCM ===<br />
* Fix SCM shutdown. Now all services are stopped (in my working copy with the CSRSS shutdown code). ([[sir_richard]])<br />
<br />
=== SETUPLDR ===<br />
* Do not build on ARM. On a side note, I offer a bountry for "if ARCH != ARM" support in .rbuild files, instead of only allowing * Use mini_hal only on i386 builds ([[Timo Kreuzer]])<br />
* Unify the old setupldr settings with more recent freeldr ones. Also fixes missing _udiv/mod functions on my build. ([[sir_richard]])<br />
<br />
=== STRSAFE ===<br />
* Add strsafe.h from amd64 branch. ([[Timo Kreuzer]])<br />
<br />
=== VMX-SVGA ===<br />
* Experimental driver for WMX-SVGA for testing memory manager and VideoPrt issues and acceleration on QEMU. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Replace mixer / wave support code by mmixer library ([[Johannes Anderwald]])<br />
* Perform all allocations / frees in dedicated alloc / free function ([[Johannes Anderwald]])<br />
* Fix possible buffer overflow ([[Johannes Anderwald]])<br />
<br />
=== WIN32K|GDI32 ===<br />
* Fix GdiBatch, the limit is for user space not system. ([[James Tabor]])<br />
* Enable font batch and fixed setting brush origion. Use the new delete object functions in win32k. ([[James Tabor]])<br />
<br />
=== WIN32K|GGI32 ===<br />
* Diagnostic commit used for troubleshooting leaking region handles. ([[James Tabor]])<br />
* Updates to headers and experimental code added for regions. ([[James Tabor]])<br />
<br />
=== XDK_DDK ===<br />
* Relax INTERLOCKED_RESULT inclusion guard. ([[Amine Khaldi]])<br />
<br />
=== SYSGEN ===<br />
* Implement a rewrite of rbuild written in c# ([[Marc Piulachs]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.12&diff=28784
ChangeLog-0.3.12
2010-10-03T18:29:08Z
<p>CycleGeek: Third Party Libraries: add FreeType and libxml; Regressions: remove extra space; Uncategorized: organize some to more easily identify components</p>
<hr />
<div>TODO: If you want to help, I could really use someone who would go through the list of bugs listed in the regression and bullet point them into actually saying what is broken, ie, what can no longer be done due to the bug. -Z98<br />
<br />
New TODO: We have a bunch of third party libraries, not Wine libraries, but stuff like zlib or whatever. Could someone put them into a list and just state the version they got updated to? I've added a place for them under the Generic section. It may get moved eventually, but we'll leave it there as a temporary measure. -Z98<br />
<br />
This is the changelog for ReactOS™ [[0.3.12|version 0.3.12]] (date yet to be determined), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.11|version 0.3.11]] (released 16 December 2009).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core Developers ===<br />
* Giannis Adamopoulos: Applications, Win32.<br />
* Johannes Anderwald: Kernel, sound.<br />
* Aleksey Bragin: Filesystem, kernel, Win32k.<br />
* Colin Finck: Build tools, translations, release engineer.<br />
* Jérôme Gardou: Win32.<br />
* Stefan Ginsberg: Kernel.<br />
* Dmitry Gorbachev: Applications.<br />
* Cameron Gutman: Networking, PnP.<br />
* Kamil Horníček: 3D Graphics, Win32.<br />
* Amine Khaldi: Build tools.<br />
* Eric Kohl: Kernel, Win32.<br />
* Timo Kreuzer: Win32k.<br />
* Matthias Kupfer: Applications, Win32.<br />
* Michael Martin: Kernel, USB.<br />
* Jeffrey Morlan: Applications, Win32.<br />
* Filip Narava: USB.<br />
* Sylvain Petreolle: Applications.<br />
* Hervé Poussineau: Kernel.<br />
* ReactOS Portable Systems Group: ARM porting, drivers, kernel.<br />
* Daniel Reimer: Build tools, translations.<br />
* Gregor Schneider: Win32.<br />
* Pierre Schweitzer: Filesystem, kernel.<br />
* James Tabor: Win32.<br />
* Christoph von Wittich: Win32.<br />
<br />
=== Patch Submitters ===<br />
* Andrea<br />
* Carlo Bramini<br />
* James Edmeades<br />
* Benedikt Freisen<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Kusanagi Kouichi<br />
* Radek Liška<br />
* Roel Messiant<br />
* Andrew Nguyen<br />
* Samuel Serapión<br />
* Seungju<br />
* Dmitry Timoshkov<br />
* Henri Verbeet<br />
<br />
=== Localization ===<br />
* forenkrams [AT] tuxproject [DOT] de<br />
* Andres Traks<br />
* Andrew Faulds<br />
* Arturs B<br />
* CCTAHEB<br />
* Edison Henrique Andreassy<br />
* Egon Ashrafinia<br />
* Gabriel Ilardi<br />
* Igor Paliychuk<br />
* Javier Fernandéz<br />
* Javier Remacha<br />
* Katayama Hirofumi<br />
* Maciej Bialas<br />
* Maikel Wever<br />
* Marcelo Zamperetti<br />
* Mario Kacmar<br />
* Olaf Siejka<br />
* Paolo Devoti<br />
* Radek Liška<br />
* Sakara Yevhen<br />
* Tomoya Kitagawa<br />
<br />
=== Support Staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.12 Changes ==<br />
=== Applications ===<br />
* Calc: Units and conversion factors added.<br />
* Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.<br />
* IPconfig: Media detection is now fixed.<br />
* MSCUtils: Column names now use resource strings instead of hardcoded strings.<br />
* Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.<br />
* Paint: Initial selection support and angle rounding for lines and edges.<br />
* Regedit: Fix searching the registry.<br />
* Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.<br />
=== Control Panel Applets ===<br />
* Console: Store changes when buffer/window size or color changes.<br />
* Desk: Fix theme switching and screensaver selection.<br />
* Input: Fix changing of keyboard layout.<br />
* Intl: Use resource strings for 'metric' and 'Imperial' strings.<br />
* Sysdm: Fix creation of paging file and place constraints on file size.<br />
=== Installer ===<br />
Various tweaks were made to the installer to ease installing ReactOS.<br />
* Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.<br />
* Fix reading of partitions created in non-standard formats by Linux.<br />
* Minimum space check notification improved. Minimum space value also made configurable through text file.<br />
* Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.<br />
* Installer does not restart in second stage if ESC is pressed.<br />
* PathName and SystemRoot registry key values are now written by the installer.<br />
=== Services ===<br />
* Services no longer trample over other services when reporting their status.<br />
* DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.<br />
* EventLog: Fixes to reading and displaying of log content.<br />
== Tests ==<br />
http://www.reactos.org/testman/compare.php?ids=2123,4021<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* 3dtext<br />
* doskey<br />
* explorer<br />
* ipconfig<br />
* mscutils/servman<br />
* rapps<br />
* shutdown<br />
* spider<br />
* usetup<br />
* winemine<br />
<br />
'''Chinese'''<br />
* charmap<br />
* dxdiag<br />
* fontview<br />
* magnify<br />
* mmc<br />
<br />
'''Czech'''<br />
* appwiz<br />
* devmgr<br />
* intl<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* notepad<br />
* paint<br />
* regedit<br />
* setupapi<br />
* shell32<br />
* slayer<br />
* sndvol32<br />
* sysdm<br />
* userenv<br />
* usetup<br />
* winemine<br />
<br />
'''Dutch'''<br />
* calc<br />
* usetup<br />
<br />
'''English'''<br />
* advpack<br />
* dxdiag<br />
* rapps<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* Add french translations for location overrides. ([[Sylvain Petreolle]])<br />
* eventvwr<br />
* paint<br />
* spider<br />
* usetup<br />
<br />
'''German'''<br />
* Added a German translation myself. ([[Daniel Reimer]])<br />
* access<br />
* appwiz<br />
* calc<br />
* cmd<br />
* cmdutils/reg<br />
* console<br />
* desk<br />
* deskadp<br />
* deskmon<br />
* devmgr<br />
* doskey<br />
* downloader<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* fontview<br />
* format<br />
* hdwwiz<br />
* input<br />
* intl<br />
* ipconfig<br />
* joy<br />
* kernel32<br />
* liccpa<br />
* main<br />
* mmsys<br />
* modemui<br />
* mplay32<br />
* msconfig<br />
* mscutils<br />
* msgina<br />
* mstsc<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* newdev<br />
* notepad<br />
* paint<br />
* powercfg<br />
* rapps<br />
* rasdlg<br />
* regedit<br />
* regsvr32<br />
* runonce<br />
* screensavers/3dtext<br />
* screensavers/logon<br />
* serialui<br />
* setup/reactos<br />
* shdoclc<br />
* shell32<br />
* shimgvw<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* tapiui<br />
* taskmgr<br />
* timedate<br />
* user32<br />
* userenv<br />
* usetup<br />
* usrmgr<br />
* vmwinst<br />
* welcome<br />
* winemine<br />
* winlogon<br />
<br />
'''Italian'''<br />
* calc<br />
* explorer-new<br />
* intl<br />
* mscutils<br />
* netid<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* shell32<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Japanese'''<br />
* cacls<br />
* charmap<br />
* magnify<br />
* mscutils/devmgmt<br />
* mscutils/servmgr<br />
* paint<br />
* rapps<br />
* runonce<br />
* shutdown<br />
* sndrec32<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Polish'''<br />
* calc<br />
* mscutils<br />
* usetup<br />
<br />
'''Portuguese'''<br />
* syssetup<br />
* usetup<br />
<br />
'''Russian'''<br />
* spider<br />
* sysdm<br />
* usetup<br />
<br />
'''Slovak'''<br />
* calc<br />
* devmgr<br />
* explorer-new<br />
* intl<br />
* netshell<br />
* paint<br />
* rapps<br />
* regit<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* syssetup<br />
* usetup<br />
<br />
'''Spanish'''<br />
* browseui<br />
* devmgr<br />
* notepad<br />
* paint<br />
* rapps<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* usrmgr<br />
* welcome<br />
<br />
'''Ukrainian'''<br />
* aclui<br />
* browseui<br />
* charmap<br />
* cmd<br />
* desk<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* freeldr<br />
* input<br />
* kernel32<br />
* mscutils/devmgmt<br />
* mscutils/eventvwr<br />
* msgina<br />
* mstsc<br />
* newdev<br />
* notepad<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* setup<br />
* shell32<br />
* shimgvw<br />
* sndrec32<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* taskmgr<br />
* usetup<br />
* winemine<br />
<br />
== Wine Syncs ==<br />
ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synched to versions 1.2 or 1.3.<br />
<br />
Libraries Synced<br />
* odbc32<br />
* msdmo<br />
* credui<br />
* cryptdlg<br />
* cryptnet<br />
* cryptui<br />
* inetmib1<br />
* mapi32<br />
* msiexec<br />
* netapi32<br />
* pdh<br />
* shdoclc<br />
* xmllite<br />
* actxprxy<br />
* amstream<br />
* clusapi<br />
* d3d8<br />
* d3d9<br />
* ddraw<br />
* dwmapi<br />
* faultrep<br />
* hnetcfg<br />
* iccvid<br />
* imm32<br />
* initpki<br />
* itircl<br />
* itss<br />
* localui <br />
* mdi<br />
* mlang<br />
* mpr<br />
* mscms<br />
* msg711.acm<br />
* msimtf<br />
* msnet32<br />
* msrle32<br />
* mssip32<br />
* msvcrt20<br />
* nddeapi<br />
* obsel<br />
* oleacc<br />
* oledlg<br />
* olepro32<br />
* postorec<br />
* query<br />
* tapi32<br />
* uxtheme<br />
* wined3d<br />
* dbghelp<br />
* fusion<br />
* hlink<br />
* riched20<br />
* activeds<br />
* atl<br />
* avifil32<br />
* cabinet<br />
* comdlg32<br />
* gdiplus<br />
* hhctrl.ocx<br />
* inetcomm<br />
* inseng<br />
* jscript<br />
* localspl<br />
* mciavi32<br />
* mcicda<br />
* mciqtz32<br />
* mciseq<br />
* mciwave<br />
* mscoree<br />
* msctf<br />
* msgsm32.ac<br />
* msvfw32<br />
* msvidc32<br />
* msxml3<br />
* oleaut32<br />
* rsaenh<br />
* schannel<br />
* shlwapi<br />
* sti<br />
* urlmon<br />
* usp10<br />
* version<br />
* windowscodecs<br />
* wintrust<br />
* comctl32<br />
* crypt32<br />
* mshtml<br />
* msi<br />
* msxml<br />
* ole32<br />
* qedit<br />
* quartz<br />
* rpcrt4<br />
* rsaenh<br />
* shdocvw<br />
* shlwapi<br />
* urlmon<br />
* widl<br />
* wininet<br />
<br />
== Third Party Libraries ==<br />
* DejaVu Fonts updated to 2.31<br />
* FreeType updated to 2.3.12<br />
* Liberation Fonts updated to 1.05.2<br />
* libjpeg updated to 8b<br />
* libpng 1.4.3 added<br />
* libtiff 3.9.4 added<br />
* libxml updated to 2.7.7<br />
* zlib updated to 1.2.5<br />
<br />
== Regressions ==<br />
* #4086 CDFS - Data Corruption<br />
* #4330 ReactOS crashes upon restart after installing a 3Com NIC-driver<br />
* #4811 comctl32: dll winesync broke AbiWord toolbar<br />
* #5025 Freeloader error while booting from GRUB with Ubuntu and Windows XP installed<br />
* #5035 Abiword: Fonts listbox isn't shown properly<br />
* #5158 Some keystrokes get lost if typing fast in VirtualBox<br />
* #5290 Slowness during file copying in 1st stage in VirtualBox<br />
* #5320 Not POWNED or CLASSDC hwndCurrent<br />
* #5372 Failed to create directory L"%USERPROFILE%\\Local Settings\\... in 2nd stage<br />
* #5443 Inkscape 0.43-2 crashes immediately upon start.<br />
* #5484 Desktop Open Window Offset<br />
* #5503 Far Manager 1.65 fails to start<br />
* #5504 Internet Explorer 6 errors out at setup<br />
* #5524 Displaced numbers on virtual desktop icons in 32bpp<br />
* #5530 COM ports not available anymore<br />
* #5554 2nd stage, misplaced warning message for empty name, wrong sized too.<br />
* #5569 Techlogica HTTP Server tray icon not displayed<br />
* #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn<br />
<br />
== MSC support ==<br />
As part of the effort to support compilers beyond GCC, several components of ReactOS saw fixes and corrections to the coding style. These include but are not limited to:<br />
* explorer<br />
* rtl<br />
* BDAPLGIN<br />
* ksproxy<br />
* browseui<br />
* shell32<br />
* hal<br />
* ndk<br />
* ntoskrnl<br />
* mingw<br />
* win32csr<br />
* localspl<br />
* compstui<br />
= Host Tools =<br />
== BUILDNO ==<br />
<br />
== LOG2LINES ==<br />
* Updated to version 2.2<br />
<br />
== RBUILD ==<br />
RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.<br />
* Non-existent DLL functions can be exported.<br />
* Function export names are not properly decorated, allowing export names to not match the original function names.<br />
* If function targets are not found, RBuild will link the DLL to itself.<br />
Some development on RBuild also took place before the decision was made to switch over to CMake.<br />
* Initial Visual Studio 2010 project file support.<br />
* Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.<br />
= Core Functionality =<br />
<br />
== Audio/Video Stack ==<br />
The A/V stack has seen a great deal of enhancements and fixes since the last release. The work done has not only added features to better control sound playback, but preliminary support for streaming videos through various media frameworks has also been implemented.<br />
=== BDA ===<br />
The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.<br />
* Interfacing with broadcast devices implemented.<br />
* Filtering of broadcast frequencies implemented.<br />
=== DSOUND ===<br />
A library that bypasses some of the layers in the sound stack to try and speed up processing.<br />
* Starting and stopping audio implemented.<br />
* Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.<br />
=== Kernel Streaming ===<br />
The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.<br />
* Device initialization and registration implemented.<br />
* Objects allocated are placed onto a list for automatic reclamation.<br />
* Pin interface for controlling devices implemented, though issuing of commands still needs work.<br />
=== KSPROXY ===<br />
A DirectShow filter that relays media through the user mode kernel streaming library.<br />
* Enumeration of supported functionality on devices implemented.<br />
* Signal statistics from BDA devices are delivered by KSPROXY.<br />
* Media stream sampling is done to determine buffer allocation strategy.<br />
* Multiple media samples can be dispatched simultaneously.<br />
=== PORTCLS ===<br />
The driver that manages most of the audio functionality in NT.<br />
* Currently a "silent" buffer is used when no audio buffers are available for playback.<br />
* Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.<br />
* A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.<br />
* Audio stream data is only copied to the common buffer when the pin owning it is in a running state.<br />
<br />
== Filesystems ==<br />
ReactOS continues to use the FAT filesystem as its default, but work has been done to add the support needed for newer ones as well as fixing longstanding issues with the current FAT driver.<br />
<br />
=== FSRTL ===<br />
The filesystem runtime library provides a set of basic functionality for filesystem drivers and allows them to avoid duplicating shared functionality while also ensuring higher level libraries inappropriate for kernel drivers do not need be linked in. FsRtl for many years had very minimal documentation, but that is changing with this release.<br />
* Notification of changes to volume state has been implemented.<br />
* Initial groundwork for volume content change notifications begun.<br />
<br />
=== CDFS ===<br />
* Media ejection added.<br />
* Various memory leaks and corruptions have been resolved.<br />
<br />
=== FASTFAT ===<br />
ReactOS uses the FASTFAT driver for the FAT filesystem. The current driver is fairly old and a new one is being developed, but until it is ready FASTFAT will continue to see updates.<br />
* Updated to use various functionality in the FsRtl library instead of reimplementing them inside the driver.<br />
* Driver is now Plug n Play aware but does not support any actual PnP commands.<br />
<br />
=== FASTFAT_NEW ===<br />
The new FAT driver is being implemented using the FullFAT library and wrapping its functionality inside a filesystem driver. It is currently incomplete but will replace the old FASTFAT driver in a future release.<br />
* Control blocks for files have been implemented.<br />
* Basic locking implemented.<br />
=== CM ===<br />
* Implemented finding registry keys when the registry keys are not sorted.<br />
* Fix a bug that caused registry corruption when a registry key got too large.<br />
<br />
== Hardware Management ==<br />
Progress has been made in efforts to give ReactOS better support for various hardware control specifications.<br />
<br />
=== ACPI ===<br />
A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.<br />
* Enumerate attached devices.<br />
* Receive commands from power buttons.<br />
=== ACPI HAL ===<br />
The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.<br />
* Resource querying implemented.<br />
* Separation of ACPI and non-ACPI bus handling.<br />
=== Battery Framework ===<br />
Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.<br />
* Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.<br />
* Composite Battery Driver: Battery detection and PnP notification implemented.<br />
=== Legacy HAL ===<br />
The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.<br />
* i8259A programmable interrupt controller initialization implemented in C.<br />
* HAL now detects EISA systems with the Edge/Level Control Register.<br />
* Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.<br />
* Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.<br />
* IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.<br />
* HAL no longer relies on the memory manager for allocations.<br />
* Various debugging related functions implemented.<br />
* CMOS, ISA, and SYSTEM bus handlers are now registered.<br />
* HAL now can detect PCI and PCI-to-PCI bridges.<br />
=== Plug n Play ===<br />
* Writing of resource list has been fixed to avoid corrupting the registry.<br />
* Registry values for legacy devices are now written.<br />
* Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.<br />
<br />
== Memory Management ==<br />
The memory manager saw several major improvements since the last release, including a new pool manager and major fixes to virtual memory management.<br />
* Page Table Entries work under x64.<br />
* Correctly report the amount of memory available to applications and drivers.<br />
* Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.<br />
* Code refactored so architecture independent code can be shared across platforms.<br />
* Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.<br />
* Global pages support removed due to currently broken code.<br />
* Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.<br />
=== ARM3 ===<br />
A new memory manager designed to be more conformant to the NT architecture and hopefully eliminate the instability caused by the current memory manager's corruption issues.<br />
* Virtual Address Descriptor data structures implemented.<br />
* Page table and directory entry initialization implemented.<br />
* Stack frames are allocated using ARM3.<br />
* Paged pool allocations can be done through ARM3.<br />
* Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.<br />
* Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.<br />
* Shared user data pages are handled by ARM3.<br />
* New AVL tree implementation used to manage Virtual Address Descriptors.<br />
<br />
== Network Stack ==<br />
The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.<br />
=== IP ===<br />
* Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.<br />
* No attempt is made to close a socket already terminated by the remote peer.<br />
* Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.<br />
=== MSAFD ===<br />
The current socket implementation on ReactOS.<br />
* Error codes are now properly reported, fixing many of the Winetests for this component.<br />
* Failures on operations are now reported instead of simply being left dangling.<br />
* Events are waited on instead of immediately being closed.<br />
* Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.<br />
* Socket information is now cleaned up after a socket is closed.<br />
* Support for connectionless sockets added.<br />
* Reading data using the peek functionality no longer causes corruptions.<br />
=== NDIS ===<br />
* Fixes to how operations are done on the timer queue.<br />
* Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.<br />
* Network adapter initialization and binding cleaned up to avoid duplicate entries.<br />
=== OSKITTCP ===<br />
* Multiple wakeups are now prevented from occurring.<br />
* Sent/received reports are only sent if operation completed successfully.<br />
* A check was added to make sure accept is not called on a socket that is not listening.<br />
=== WS2_32 ===<br />
* Reading host files now supported.<br />
<br />
== Graphics ==<br />
Development on ReactOS' graphics components continues, with increased compatibility and functionality. Several enhancements from the yarotows branch have made it into trunk and are now part of this release.<br />
== Kernel ==<br />
* IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.<br />
* FPU state is now correctly not saved when a kernel debugger is not attached.<br />
* Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.<br />
* Trap handling code converted to C with minimal bits of assembly.<br />
* Interrupt handling in kernel converted to C to match conversion done in HAL.<br />
* System call handling now implemented in C.<br />
== I/O ==<br />
* Device property retrieval now returns correct information for the device name.<br />
* IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.<br />
* Changes in device status are now reported.<br />
* New resource information is now reported.<br />
<br />
== Registry ==<br />
* A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.<br />
* Opening registry values for symbolic links is fixed.<br />
<br />
== Startup ==<br />
Startup of ReactOS has seen considerable modification as effort is made to port it to other architectures and new developer-centric changes are added.<br />
* Progress bar during boot now displays correctly.<br />
=== BootVid ===<br />
* Broken initialization code removed and a correct implementation added.<br />
* 4bpp blitting code simplified.<br />
* x64 portability fixes.<br />
=== FreeLoader ===<br />
* FreeLoader is now compiled into the Portable Executable format to allow for debugging.<br />
* FreeLoader no longer needs to be installed on the first partition of the first disk.<br />
* FreeLoader UI on ARM rewritten to slim down on resources needed.<br />
* Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.<br />
* x64 portability fixes.<br />
=== Session Manager Subsystem ===<br />
* SMSS can now add several system environment variables to the registry.<br />
* SMSS now creates a new default paging file if none exists.<br />
=== Winlogon ===<br />
* Environment variables for user are now properly loaded upon login.<br />
<br />
== Security ==<br />
* NtAcessCheck fixed to account for various error cases and improper usage.<br />
* Security token is now checked for what level of authorization it is trying to impersonate.<br />
* Success is only reported if all access requests have been granted.<br />
* Attempts to duplicate security tokens fail if authorization level is too low.<br />
<br />
== Shell ==<br />
The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.<br />
* Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.<br />
=== Explorer ===<br />
* Clock is no longer clipped in its window.<br />
* 24bpp start menu icon added.<br />
=== SHELL32 ===<br />
* Confirmation dialog added for logging off.<br />
* Open With dialog now allows aborting of operation.<br />
* Localized error text now displayed as messagebox caption.<br />
* Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.<br />
* Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.<br />
* Initial file copy/move/delete dialog implementation added.<br />
* File association error texts added.<br />
<br />
== Storage Stack ==<br />
The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.<br />
* Logical units in extended partitions are visible but are not accessible yet.<br />
* Querying for Native ATA channels and configuring controller to use NATA implemented.<br />
=== RAMDISK ===<br />
* Fixes for using ramdisk when booting on ARM.<br />
=== SCSIPORT ===<br />
* x64 portability fixes.<br />
=== UniATA ===<br />
* Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.<br />
<br />
== USB ==<br />
ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. However, a NT5-style USB stack consisting of the usbd library, usbehci driver, and usbhub interface has been started.<br />
<br />
=== USBD ===<br />
Helper library for third party USB drivers, used for querying information about USB devices.<br />
<br />
=== USBEHCI ===<br />
Driver for the ehci USB protocol, currently able to register attachment of new devices to the system and changes in their status.<br />
<br />
=== USBHUB ===<br />
Initializes USB devices and their associated driver objects and handles passing of interrupts and other signals to the driver. Utilizes the usbd library and usbehci driver to fill in information about devices.<br />
<br />
USB Requests Implemented<br />
* USB_DEVICE_DESCRIPTOR_TYPE<br />
* USB_CONFIGURATION_DESCRIPTOR_TYPE<br />
* URB_FUNCTION_SELECT_CONFIGURATION<br />
* URB_FUNCTION_CLASS_DEVICE<br />
* USB_DEVICE_CLASS_HUB<br />
* USB_BUS_INTERFACE_USBDI_V2<br />
* USB_BUS_INTERFACE_HUB_V5<br />
* URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE<br />
* IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION<br />
* IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE<br />
* IOCTL_INTERNAL_USB_GET_HUB_COUNT<br />
* URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN<br />
* USB_REQUEST_CLEAR_FEATURE<br />
* USB_REQUEST_GET_STATUS<br />
* USB_REQUEST_SET_FEATURE<br />
<br />
=== USBDriver ===<br />
The current USB driver, usbdriver provides simplistic support for USB keyboards and mice in very specific configurations.<br />
* Support for multiple EHCI controllers added, increasing compatibility with physical hardware configurations.<br />
* All PCI buses are scanned for USB controllers.<br />
* Cleanup of devices that crashed or failed to initialize properly.<br />
<br />
= Drivers =<br />
* SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.<br />
== Miniport ==<br />
* ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.<br />
== PCI ==<br />
A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.<br />
* Interrupt Request routing implemented.<br />
* Handling of devices that incorrectly implement the PCI standard has been improved.<br />
* Querying and discovery of devices attached to PCI bus implemented.<br />
* Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.<br />
== PCMCIA ==<br />
* Driver has been stubbed so will require more work before any functionality is added.<br />
== VGA ==<br />
* Initial implementation of a driver for the VMWARE SVGA-II Video Card added.<br />
* Various x64 portability fixes to the current VGA driver.<br />
== VIDEOPRT ==<br />
* Proper error codes are now used.<br />
<br />
= Libraries =<br />
== ADVAPI32 ==<br />
* Resources for tracking services are created and destroyed as services start and stop.<br />
* Hardware profiles actually create GUIDs instead of hardcoding them to zero.<br />
* Computer name is used inside of eventlog.<br />
== KERNEL32 ==<br />
The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.<br />
* Remove all Windows 95 function exports.<br />
* Stub all functions that kernel32 is supposed to export.<br />
* Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.<br />
* kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.<br />
* Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.<br />
* Switching between fibers fixed.<br />
* Various x64 portability changes.<br />
* NT-style debug channels are now enabled and used.<br />
== GDI32 ==<br />
* Leaking of regions temporarily fixed.<br />
* Batch support added for selecting regions for clipping.<br />
* Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.<br />
== MSVCRT ==<br />
* Exports added for a variety of functions.<br />
== NTDLL ==<br />
* Various fixes to loading functions for libraries and executables.<br />
* Service status is now reported to the service manager.<br />
* Various x64 portability changes.<br />
== RTL ==<br />
* New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.<br />
* Various fixes to functions that operate on strings.<br />
* x64 portability fixes for functions that operate on the byte level.<br />
== USER32 ==<br />
* Setting of regions now behaves correctly.<br />
* Cursor icons follow correct call chain instead of calling functions that do not exist.<br />
* Various x64 portability changes.<br />
* Scrollbar tracking now ends if mouse capture is lost.<br />
* Window management code saw refactoring and fixes.<br />
* Start user handle manager rewrite.<br />
<br />
= Win32&trade; Personality =<br />
== User mode subsystem server (CSRSS) ==<br />
<br />
<br />
== Kernel-mode subsystem server (Win32K) ==<br />
<br />
* Several fixes to Windows Hook Procedures that causes application lockups.<br />
* Shell can now be restarted after killing it.<br />
* Fix cases where windows can deadlock when waiting on another window to finish.<br />
* Fixes to minimizing/maximizing and setting focus of windows.<br />
* SendMessageCallback now implemented.<br />
<br />
== Regression tests ==<br />
<br />
== BASE ==<br />
<br />
=== APPLICATIONS ===<br />
<br />
==== DXDIAG ====<br />
* get next button to work ([[Christoph von Wittich]])<br />
<br />
==== SC ====<br />
* Roel Messiant: Fix a crash when running some operations in sc without providing arguments. Also, provide usage information for the control and unknown commands. ([[Aleksey Bragin]]; {{bug|5611}})<br />
* Aleksey Bragin: Take Ged Murphy's comments into account and change pointer arithmetic to a convenient style. ([[Aleksey Bragin]]; {{bug|5611}})<br />
<br />
=== SERVICES ===<br />
<br />
==== WLANSVC ====<br />
* Add required libary iphlpapi ([[Sylvain Petreolle]])<br />
* Correctly start and report status to the service manager. ([[Sylvain Petreolle]])<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Instead of disabling a warning when using "main" as something else then the main function, define it to mainptr (it's used as a pointer variable) globally, this approach is portable. ([[Timo Kreuzer]])<br />
<br />
===== SRC =====<br />
<br />
=== DIRECTX ===<br />
<br />
==== BDAPLGIN ====<br />
* Add "BDA Device Control Plug-in for MPEG2 based networks" stub ([[Johannes Anderwald]])<br />
* Sorry folks ([[Johannes Anderwald]])<br />
* Implement IBDA_Topology::GetNodeTypes, IBDA_Topology::GetNodeDescriptors, IBDA_Topology::GetNodeInterfaces, IBDA_Topology::GetPinTypes, IBDA_Topology::CreateTopology, IBDA_Topology::GetControlNode ([[Johannes Anderwald]])<br />
* Implement stub interfaces for control node, IBDA_DigitalDemodulator, IBDA_FrequencyFilter, IBDA_LNBInfo, IBDA_SignalStatistics ([[Johannes Anderwald]])<br />
* Simply construction of CBDAFrequencyFilter, CBDALNBInfo, CBDASignalStatistics ([[Johannes Anderwald]])<br />
* Find IBDA_NetworkProvider in filter graph ([[Johannes Anderwald]])<br />
* Check for IBaseFilter interface when constructing the CBDADeviceControl object ([[Johannes Anderwald]])<br />
* Add macro to enable/disable debug output ([[Johannes Anderwald]])<br />
* Query the BaseFilter for the target control pin in order to query for IKsObject interface, which is used to retrieve the real pin handle. ([[Johannes Anderwald]])<br />
* Pass the NodeId to constructors of IBDA_FrequencyFilter, IBDA_SignalStatistics, IBDA_LNBInfo, IBDA_DigitalDemodulator ([[Johannes Anderwald]])<br />
* Implement IBDA_DigitalDemodulator::put_ModulationType, IBDA_DigitalDemodulator::put_InnerFECMethod, IBDADigitalDemodulator::put_InnerFECRate, IBDADigitalDemodulator::put_OuterFECMethod, IBDADigitalDemodulator::put_OuterFECRate, IBDADigitalDemodulator::put_SymbolRate, IBDADigitalDemodulator::put_SpectralInversion ([[Johannes Anderwald]])<br />
* Implement IBDAFrequencyFilter::put_Frequency, IBDAFrequencyFilter::put_Polarity, IBDAFrequencyFilter::put_Range, IBDAFrequencyFilter::put_Bandwidth, IBDAFrequencyFilter::put_FrequencyMultiplier ([[Johannes Anderwald]])<br />
* Implement IBDALNBInfo::put_LocalOscilatorFrequencyLowBand, IBDALNBInfo::put_LocalOscilatorFrequencyHighBand, IBDALNBInfo::put_HighLowSwitchFrequency ([[Johannes Anderwald]])<br />
* Implement IBDASignalStatistics::get_SignalStrength, IBDASignalStatistics::get_SignalQuality, IBDASignalStatistics::get_SignalPresent, IBDASignalStatistics::get_SignalLocked, IBDASignalStatistics::put_SampleTime, IBDASignalStatistics::get_SampleTime ([[Johannes Anderwald]])<br />
* Implement IBDA_DeviceControl::StartChanges, IBDA_DeviceControl::CheckChanges, IBDA_DeviceControl::CommitChanges, IBDA_DeviceControl::GetChangeState ([[Johannes Anderwald]])<br />
* IBDA_DeviceControl interface now works with SageDvbRecorder(Windows XP SP3) ([[Johannes Anderwald]])<br />
* Move from using include guards to pragma once. (Amine)<br />
* Whilst this is non-standard and potentially makes the code less portable, it's supported by both gcc and msvc and should bringg increased compilation speed due to its optimized behaviour (doesn't need to invoke the preprocessor) (Amine)<br />
* Merge Wine-1.1.39 changes to shlmenu.c. ([[Aleksey Bragin]])<br />
* Maarten Kroese ([[Aleksey Bragin]])<br />
* SHELL_MergeMenus: Don't skip higher IDs if uIDAdjustMax is set to 0xFFFF (according to MSDN). ([[Aleksey Bragin]])<br />
* Implement IBDA_PinControl::GetPinID, IBDA_PinControl::GetPinType ([[Johannes Anderwald]])<br />
* Comment out enumeration of IBDA_NetworkProvider ([[Johannes Anderwald]])<br />
* Set output variable to null to fixup lazy callers ([[Johannes Anderwald]])<br />
* Implement IBDA_PinControl::RegistrationContext ([[Johannes Anderwald]])<br />
* Register filter with IBDA_NetworkProvider when it is an input pin ([[Johannes Anderwald]])<br />
* IBDA_PinControl is now working ([[Johannes Anderwald]])<br />
* Perform property request by passing the request through IKsPropertySet interface. This is necessary as the pin handle might not have been created at the time the proxy plugin has been loaded ([[Johannes Anderwald]])<br />
* Set Reserved of KSP_NODE request to zero as required by the documentation ([[Johannes Anderwald]])<br />
* Reintegrate header branch ([[Timo Kreuzer]])<br />
* DDKAPI -> NTAPI ([[Timo Kreuzer]])<br />
* delete duplicate definitions ([[Timo Kreuzer]])<br />
* move files to right locations ([[Timo Kreuzer]])<br />
* Fix Mm64BitPhysicalAddress definition ([[Timo Kreuzer]])<br />
* Add a number of missing definitions ([[Timo Kreuzer]])<br />
* add XDK ([[Timo Kreuzer]])<br />
* Enhance debug traces ([[Johannes Anderwald]])<br />
<br />
==== DEVENUM ====<br />
* Extend device enumerator to support class enumerators of device interfaces ([[Johannes Anderwald]]<br />
<br />
<br />
==== MSDVBNP ====<br />
* Start implementing Network Provider for MPEG-2 based Networks ([[Johannes Anderwald]])<br />
* Implement IEnumMediaTypes interface ([[Johannes Anderwald]])<br />
* Implement IEnumPins interface ([[Johannes Anderwald]])<br />
* Partly implement output pin (IPin interface) for the network provider ([[Johannes Anderwald]])<br />
* Implement CNetworkProvider::GetState, CNetworkProvider::SetSyncSource, CNetworkProvider::GetSyncSource, CNetworkProvider::EnumPins, CNetworkProvider::QueryFilterInfo ([[Johannes Anderwald]])<br />
* HACK: comment out deletion of object until reference counting has been fixed ([[Johannes Anderwald]])<br />
* Fix crash when instantiating the filter with graphedt ([[Johannes Anderwald]])<br />
* Fix a bug (IEnumPins::Next should increase reference count on pin) ([[Johannes Anderwald]])<br />
* Fix a bug (IPin::QueryFilterInfo should increase reference count on parent filter) ([[Johannes Anderwald]])<br />
* Reference leakage is now fixed ([[Johannes Anderwald]])<br />
* Fix some missing strings in cpu.inf ([[Cameron Gutman]])<br />
* Use FORMAT_None as format specifier ([[Johannes Anderwald]])<br />
* Implement IBaseFilter::Stop, IBaseFilter::Run, IBaseFilter::Pause ([[Johannes Anderwald]])<br />
* Fix missing AddRef in IBaseFilter::QueryFilterInfo ([[Johannes Anderwald]])<br />
* Implement IBDA_NetworkProvider::RegisterDeviceFilter, IBDA_NetworkProvider::UnRegisterDeviceFilter ([[Johannes Anderwald]])<br />
* Partly implement ITuner::put_TuneRequest ([[Johannes Anderwald]])<br />
* ReactOS DVBT Network Provider is now able to tune a channel, though sound is missing ([[Johannes Anderwald]])<br />
* fix encoding ([[Matthias Kupfer]])<br />
* change size of dialog entry for fitting text ([[Matthias Kupfer]])<br />
* two small fixes (freeing resources on error) ([[Matthias Kupfer]])<br />
* Implement IBDA_EthernetFilter, IBDA_IPV4Filter, IBDA_IPV6Filter ([[Johannes Anderwald]])<br />
* Add bda.inf, kscaptur.inf ([[Johannes Anderwald]])<br />
* Remove DebugBreak ([[Johannes Anderwald]])<br />
* Implement IPin::Connect, IPin::ReceiveConnection, IPin::Disconnect, IPin::ConnectedTo ([[Johannes Anderwald]])<br />
* Remove spaces ([[Johannes Anderwald]])<br />
* DVBT Network Provider can now connect tv tuner in ReactOS ([[Johannes Anderwald]])<br />
* Dynamically register DVB network provider categories ([[Johannes Anderwald]])<br />
* Register BDA Filter components ([[Johannes Anderwald]])<br />
* Fix category description ([[Johannes Anderwald]])<br />
<br />
==== MSVIDCTL ====<br />
* Start implementing ActiveX Control for Streaming Video ([[Johannes Anderwald]])<br />
<br />
==== WINE ====<br />
* Move and update assembler functions definition macros from port.h (added by Steven around revision 7000) to config.h as it is now in Wine. ([[Aleksey Bragin]])<br />
* Update related __ASM macros. ([[Aleksey Bragin]])<br />
* define interlocked_xchg_add to InterlockedExchangeAdd ([[Timo Kreuzer]])<br />
* partial sync of test.h ([[Christoph von Wittich]])<br />
* Cast the unused 0 in the ok macro to void to make clang happy ([[Timo Kreuzer]])<br />
<br />
===== WINED3D =====<br />
* Fix prototype of wined3d_event_query_supported (BOOL != HRESULT) ([[Timo Kreuzer]])<br />
<br />
=== KEYBOARD ===<br />
<br />
==== KBDLV ====<br />
* Latvian keyboard fixes by Arturs B., <mad_alchemist AT mail DOT ru> ([[Gregor Schneider]]; {{bug|5385}})<br />
* partly revert r47442 and apply a working fix by guarding some prototypes of functions that exist as intrinsics in #ifdefs, so we don't use them for gcc/clang ([[Timo Kreuzer]])<br />
* remove duplicated prototypes, when an inline function exists already ([[Timo Kreuzer]])<br />
<br />
==== IDNDL ====<br />
<br />
=== NLS ===<br />
* Convert to spec ([[Timo Kreuzer]])<br />
<br />
==== CSR ====<br />
* DejaVu Sans Mono seems to have a bug which makes Windows and Arwinss report double max char width as compared to a real char width. Since only a monospace font could be used, measure exact char width using GetTextExtentPoint32W and use that value. ([[Aleksey Bragin]])<br />
<br />
=== WIN32 ===<br />
<br />
==== BATT ====<br />
* Add battery class installer dll. ([[Eric Kohl]])<br />
* Add missing 4th parameter to BatteryClassCoInstaller. ([[Eric Kohl]])<br />
<br />
==== BEEPMIDI ====<br />
* Fix 64bit compilation ([[Timo Kreuzer]])<br />
<br />
==== BROWSEUI ====<br />
* Merge r44391 from amd64 branch ([[Timo Kreuzer]])<br />
* Fix 64bit build ([[Timo Kreuzer]])<br />
<br />
==== DEVMGR ====<br />
* Display Matching Device ID. ([[Eric Kohl]])<br />
* Display some more device properties. ([[Eric Kohl]])<br />
* devman.dll improvements by Viliam Lejcik: ([[Eric Kohl]])<br />
* display version info for selected driver file in 'Driver File Details' dialog ([[Eric Kohl]])<br />
* resource modification - changed some labels to read-only editboxes ([[Eric Kohl]])<br />
* Fixes bug #4875. ([[Eric Kohl]])<br />
<br />
==== LSASRV ====<br />
* Use a single table for mapping privilege names to values and values to names. ([[Eric Kohl]])<br />
* LsarLookupSids: Return ReferencedDomains information. ([[Eric Kohl]])<br />
* Replace hard-coded privilege names by privilege names from the PSDK. ([[Eric Kohl]])<br />
* Move all includes into a common header file. ([[Eric Kohl]])<br />
* Create a (still incomplete) well-known-sid lookup table and use it in LsarLookupSids. ([[Eric Kohl]])<br />
* Add missing file headers. ([[Eric Kohl]])<br />
* Add more well known sids to the lookup list. ([[Eric Kohl]])<br />
<br />
==== MSGINA ====<br />
* Use WLX_PROFILE_V2_0 instead of WLX_PROFILE_V1_0 and create an environment string that is filled with a single environment variable. WIP for bug #4102. ([[Eric Kohl]])<br />
* Fix the order of controls to match the expected tab order. This makes the focus stop jumping around like crazy when you press the Tab key. ([[Eric Kohl]])<br />
<br />
==== NETCFGX ====<br />
* Improve the DNS data exchange between the basic IP settings and the advanced DNS panel ([[Gregor Schneider]])<br />
* Simplify LaunchAdvancedTcpipSettings ([[Gregor Schneider]])<br />
* Save DHCP and DNS settings from the basic TCP/IP panel independently of each other ([[Gregor Schneider]]; {{bug|5193}})<br />
* Remove the hack that set DI_NEEDRESTART for all network adapters which prevented us from starting the miniport driver ([[Cameron Gutman]])<br />
* Part of the fix for bug 3716 ([[Cameron Gutman]])<br />
* Start the TCP/IP driver after we install a network adapter ([[Cameron Gutman]])<br />
* This fixes the major bug that blocks Live CD networking but we still have some DHCP issues (DHCP starts and fails before the NIC and TCP/IP has been installed) and some other adapter detection issues that I need to look into but this is a good first step ([[Cameron Gutman]])<br />
* Create the DhcpEnabled value in the registry ([[Cameron Gutman]])<br />
<br />
==== NETSHELL ====<br />
* Fix some German resources: ([[Gregor Schneider]])<br />
* Use BS_MULTILINE instead of embedding newline characters into text ([[Gregor Schneider]])<br />
* Make groupboxes and text fit into the window ([[Gregor Schneider]])<br />
* Load all LAN status icons with the same size ([[Gregor Schneider]]; {{bug|3813}})<br />
* Only set the status icon if the icon occurred, don't set NULL icons (properties of LAN adapter window) ([[Gregor Schneider]]; {{bug|3813}})<br />
* Fix LAN status icon resource ([[Gregor Schneider]]; {{bug|3813}})<br />
* Improve current network connection status icons. ([[Gabriel Ilardi]])<br />
* Updated French translation ([[Pierre Schweitzer]])<br />
<br />
==== NTMARTA ====<br />
* AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. ([[Michael Martin]])<br />
<br />
==== QMGR ====<br />
* Don't bulldoze our netsvcs key to install a service that doesn't even work yet ([[Cameron Gutman]])<br />
* Add the FLG_ADDREG_APPEND flag when writing the netsvcs value because, unlike WINE, we are actually going to have values in there ([[Cameron Gutman]])<br />
* Reapply r47268 to fix DHCP ([[Cameron Gutman]])<br />
* Implement DeviceHandleToUsbDevice and remove IsHandleValid. ([[Michael Martin]])<br />
* Add call to DeviceHandleToUsbDevice for all Direct Call functions that pass DeviceHandle. ([[Michael Martin]])<br />
* Stop the processing of Asynchronous List after the Control Request has been processed by controller. ([[Michael Martin]])<br />
* Misc changes. ([[Michael Martin]])<br />
* Fix a FIXME in fastfat driver which also fixes a BSOD in kernel32 path winetest ([[Pierre Schweitzer]])<br />
* sysreg doesn't like rain of SEMI-STUB debug ([[Sylvain Petreolle]])<br />
<br />
==== SETUPAPI ====<br />
* Open Device Class with desired access ([[Johannes Anderwald]])<br />
* Implement SetupDiOpenDeviceInterfaceW ([[Johannes Anderwald]])<br />
* Store device settings in the "Device Parameters" key, as the kernel now does it too ([[Johannes Anderwald]])<br />
* Fixes display of AC97 device in audio cpl ([[Johannes Anderwald]])<br />
* Fix an incorrect length value that corrupted REG_MULTI_SZ values when they had strings appended ([[Cameron Gutman]])<br />
* I'm not sure if this is synced with WINE, but if it is, they need this patch too ([[Cameron Gutman]])<br />
<br />
==== USERENV ====<br />
* Revert r43057: setting environment variables per process is not useful here, a higher authority has to do this globally ([[Gregor Schneider]]; {{bug|4008}})<br />
* Create 'Default User' and 'All Users' directories without postfix and append a postfix only if they already exist. ([[Eric Kohl]])<br />
* Create the user account directory without a prefix and append a prefix if the directory already exists. ([[Eric Kohl]])<br />
* Acquire the restore privilege before unloading a hive and remove it after unloading the hive. ([[Eric Kohl]])<br />
* Patch is based on Gabriel Ilardi's patch. Fixes bug #2972. ([[Eric Kohl]])<br />
* Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. ([[Eric Kohl]]; {{bug|2972}})<br />
* Fixes bug #4008. ([[Eric Kohl]]; {{bug|2972}})<br />
* Disable GDI batch code for regions. "Fixes" broken drawing for AcrobatReader. Yes, it's a "band aid over a bullet wound". I hope the man with the gun is a surgeon, too. ([[Timo Kreuzer]])<br />
* CreateEnvironmentBlock: Also add the volatile environment values to the users environment block. ([[Eric Kohl]])<br />
* Fix Italian commonfiles ([[Gabriel Ilardi]])<br />
* Fix a typo and some Spanish environment variables ([[Gabriel Ilardi]])<br />
* german translation of sendto (Egon; {{bug|5411}})<br />
* Fix mistakenly translated strings "recent" and "sendto" in Italian and Spanish resources, plus another Spanish fix. ([[Gabriel Ilardi]])<br />
* Several Czech translation updates by Radek Liska #5429. ([[Gabriel Ilardi]])<br />
<br />
==== WINMM ====<br />
* Fix a number of 64bit issues, add some comments where the code is not 64 bit safe. This module should be synced with wine, but this still causes a problem with Flash videos on FF2 (likely another timer problem) ([[Timo Kreuzer]])<br />
<br />
== DRIVERS ==<br />
<br />
=== BASE ===<br />
<br />
==== BATTC ====<br />
<br />
=== BATTERY ===<br />
* Add a nearly complete battc driver (the only stuff missing is WMI) ([[Cameron Gutman]])<br />
* Tested with our stubbed cmbatt driver but testing on Windows would be nice too ([[Cameron Gutman]])<br />
* define _BATTERYCLASS_ to not get dllimport specifiers ([[Timo Kreuzer]])<br />
* Fix a warning ([[Timo Kreuzer]])<br />
<br />
==== ISAPNP ====<br />
* Fix isapnp compilation for 64-bit ([[Timo Kreuzer]])<br />
* 36961 (sginsberg) ([[Timo Kreuzer]])<br />
* Rewrite the ISAPnP driver based off EtherBoot source ([[Cameron Gutman]])<br />
* TODO: Resource stuff ([[Cameron Gutman]])<br />
* Fix a typo ([[Cameron Gutman]])<br />
* Comment it out from the bootloader. ([[Aleksey Bragin]])<br />
* Remove it from machine.inf. ([[Aleksey Bragin]])<br />
* This "driver" introduces significant delay at every boot due to i/o space scanning every time at every boot, however there is no real benefit (it always fails). Inclusion of this driver into default boot process might be reconsidered only after it starts providing some advantages. For now please test this driver in your own working copies. ([[Aleksey Bragin]])<br />
<br />
==== NPFS ====<br />
* Change the other side's to PIPE_STATUS_CLOSING_STATE in NpfsCleanup and NpfsClose so the reading/writing thread knows that the pipe is dead when we signal its event ([[Cameron Gutman]])<br />
* Fixes iphlpapi_winetest hang and possibly bug #4689 ([[Cameron Gutman]])<br />
* Partially revert r47370 and apply a better patch ([[Cameron Gutman]])<br />
* Change ReadEvent and WriteEvent to notification events because we reset those events manually when we run out of buffer space ([[Cameron Gutman]])<br />
* Fix race conditions in read IRP cancellation that resulting in random crashes and hangs ([[Cameron Gutman]])<br />
* Fixes MULTIPLE_IRP_COMPLETE_REQUESTS bug checks and failed cancellations resulting in hangs during ntdll:file test ([[Cameron Gutman]])<br />
* Acquire the cancel spin lock before calling IoSetCancelRoutine ([[Cameron Gutman]])<br />
* Remove the old cancellation code ([[Cameron Gutman]])<br />
* Don't use the CCB stored in the IRP because it could be invalid depending on the state of the IRP ([[Cameron Gutman]])<br />
* Simplify thread termination ([[Cameron Gutman]])<br />
* Fixes random crash during rpcrt4:ndr_marshall test ([[Cameron Gutman]])<br />
* Return buffer size if the buffer is too small ([[Johannes Anderwald]])<br />
* Add more buffer checks ([[Johannes Anderwald]])<br />
* Clear DO_DEVICE_INITIALIZING flag ([[Johannes Anderwald]])<br />
* Add invariant checks and fix a bug: Copy+Paste error misusing OldFlink ([[Art Yerkes]])<br />
* Check if MmGetSystemAddressForMdlSafe failed ([[Johannes Anderwald]])<br />
* Fix 2 memory leaks when creating a pipe fails ([[Johannes Anderwald]])<br />
* Fix minor style issue ([[Johannes Anderwald]])<br />
<br />
==== I8042PRT ====<br />
<br />
==== FONT ====<br />
<br />
===== BMFD =====<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
===== DRIVERS =====<br />
<br />
====== CMIDRIVER ======<br />
* Fix a number of warnings, no actual code change (Love; {{bug|5336}})<br />
<br />
===== FILTERS =====<br />
* Remove memset and memcpy implementations from pin.c ([[Amine Khaldi]])<br />
<br />
== INCLUDE ==<br />
<br />
=== CRT ===<br />
* allmul produced wrong results when the higher 32 bits of any of the 64 bit operands are not zero. As the comment correctly said the definition of param locations must change (Jose; {{bug|5121}})<br />
* since esp was altered, but the definitions were not actually changed (Jose; {{bug|5121}})<br />
* vsnprintf: added support for ll size specifier (Jose; {{bug|5122}})<br />
* Disable spooler service. ([[Sylvain Petreolle]])<br />
* This allows bootcdregtest to start here under qemu-kvm. ([[Sylvain Petreolle]])<br />
* Remove unused variables. (Amine)<br />
* add TrailBytes-info for codepage 1361 ([[Christoph von Wittich]])<br />
* david dot hedberg at gmail dot com> ([[Christoph von Wittich]])<br />
* add dsound_winetest to bootcd ([[Christoph von Wittich]])<br />
* Call acpi_bus_set_power instead of acpi_power_transition (Samuel)<br />
* Make sure the device has power management capabilities before calling acpi_bus_set_power (Samuel)<br />
* Report the new power state with PoSetPowerState (Samuel)<br />
* Initialize PDOs with the correct device power state ( (Samuel)<br />
* Initialze PDOs with the correct system power state (Samuel)<br />
* Add a stub for GetOwnerModuleFromTcpEntry (Olaf)<br />
* fix palette index for the progress bar ([[Matthias Kupfer]])<br />
* Make the shutdown with ACPI enabled actually work. (Samuel)<br />
* Stubplement WTSQueryUserToken. (Olaf)<br />
* Import x87 asm version of pow() from glibc. Replaces our broken implementation, fixing a bunch of winetests (oleaut32 vartest) ([[Timo Kreuzer]])<br />
* add _wctype table, it's not identical to _ctype as assumed before ([[Timo Kreuzer]])<br />
* point _pwctype to _wctype instead of _ctype ([[Timo Kreuzer]])<br />
* implement __pctype_func and __pwctype_func ([[Timo Kreuzer]])<br />
* 46502 (tkreuzer) ([[Timo Kreuzer]])<br />
* define _CRTBLD ([[Timo Kreuzer]])<br />
* rename float_t/double_t/long_double_t to float_s/double_s/long_double_s to avoid name conflicts ([[Timo Kreuzer]])<br />
* 46511 ([[Timo Kreuzer]])<br />
* Set crt="static" in freeldr, rtl, bmfs, ftfd, rtl, mini_hal ([[Timo Kreuzer]])<br />
* define "CRTDLL" in ntdll, crtdll, msvcrt, msvcrt20, msvcrt40 ([[Timo Kreuzer]])<br />
* 46535 ([[Timo Kreuzer]])<br />
* fix behavior of _system (fixes msvcrt environ winetest) ([[Christoph von Wittich]])<br />
* Don't define __int64 for clang ( (Amine)<br />
* Fix file and purpose in the header (Amine)<br />
* add clang compatible asm version of ldexp and make the code more readable ([[Timo Kreuzer]])<br />
* constify strndup parameter to match standard ([[Timo Kreuzer]])<br />
* fix broken pointer comparison in signal() ([[Timo Kreuzer]])<br />
* mbstowcs: Fix incorrect size passed as the second parameter for call to RtlMultiByteToUnicodeN. ([[Michael Martin]])<br />
* Fixes loading assemblies when manifest is in a manifest file due to parsing failure. ([[Michael Martin]])<br />
* CRT update part 1/x (Samuel)<br />
* add support for non-underscored symbols (Samuel)<br />
* Add missing file ([[Timo Kreuzer]])<br />
* Stubplement _controlfp_s, rand_s (Samuel)<br />
* Implement _invalid_parameter, _get_invalid_parameter_handler, _set_invalid_parameter_handler (Samuel)<br />
* Implement memmove_s, strncpy_s (Samuel)<br />
* Export memmove_s and memcpy_s ([[Sylvain Petreolle]])<br />
* Implement rnd_s ([[Sylvain Petreolle]])<br />
* Add a debug print to help bugs like 5486. ([[Gabriel Ilardi]])<br />
* Merge r44143 from amd64 branch ([[Timo Kreuzer]])<br />
* Initialize MmDebugPte from MiDebugMapping variable instead of using MiAddressToPte for a constant initializer. This way the page can be set dynamically. Use MmDebugPte to determine if ready for mapping physical pages. ([[Timo Kreuzer]])<br />
* Move #include <precomp.h> to the top, as precompiled headers must be the first thing that is included or it won't take advantage of being precompiled ([[Timo Kreuzer]])<br />
* Fix the double use of _CRTIMP. ([[Amine Khaldi]])<br />
* Add amd64 versions of setjmp / longjmp ([[Timo Kreuzer]])<br />
* Add amd64 versions of chkstk_asm.s, seh.s to libcntpr ([[Timo Kreuzer]])<br />
* Add a number of amd64 specific math functions ([[Timo Kreuzer]])<br />
* add generic c versions of cos and sin ([[Timo Kreuzer]])<br />
* Remove leading underscores from amd64 symbols ([[Timo Kreuzer]])<br />
* Improve NULL definition. ([[Amine Khaldi]])<br />
* Add __MINGW_ATTRIB_UNUSED macro. ([[Amine Khaldi]])<br />
* Convert FillBuf to static __inline. ([[Amine Khaldi]])<br />
* Add logf wrapper ([[Timo Kreuzer]])<br />
* Add amd64 inf files ([[Timo Kreuzer]])<br />
* Get back r47063 & r47960 reverted by r48273 ([[Pierre Schweitzer]])<br />
* Add diffs for msimtf and atl. ([[Sylvain Petreolle]])<br />
* Add hivecls_amd64.inf ([[Timo Kreuzer]])<br />
* Implement a proper version of _assert. It nows shows a message box with the details and let's the user choose to either abort, debug or ignore the assertion. ([[Timo Kreuzer]]; {{bug|5486}})<br />
* bug 5507, bug 5511 ([[Timo Kreuzer]]; {{bug|5486}})<br />
* Remove "implementations" of __lc_collate_cp, __lc_handle and __lc_codepage. These are not functions, but varuables, implemented as MSVCRT_* ([[Timo Kreuzer]])<br />
* add ___lc_codepage_func and ___lc_handle_func taken from wine ([[Timo Kreuzer]])<br />
* Fix msvcrt spec file ([[Timo Kreuzer]])<br />
* Fixes compilation with gcc 4.5.1 ([[Timo Kreuzer]])<br />
* Fix __MINGW_MSC_PREREQ logic. ([[Amine Khaldi]])<br />
<br />
=== REACTOS ===<br />
<br />
==== LIBS ====<br />
<br />
===== PSEH =====<br />
* Use dummy pseh for clang ([[Timo Kreuzer]])<br />
* Add (non working) 64bit code ([[Timo Kreuzer]])<br />
* Stub amd64 functions and remove leading underscores from symbols ([[Timo Kreuzer]])<br />
<br />
==== MC ====<br />
* Add pciclass.mc required for eVb's PCI driver. Matches resource data in Windows driver, minus typos. ([[sir_richard]])<br />
<br />
==== SUBSYS ====<br />
<br />
===== CSRSS =====<br />
* Fix yet another bug in the unused csrss code. ([[sir_richard]])<br />
* Bang in the new thread support in a bunch of places, including creating static server threads. It's very hacked and handle duplication doesn't work 100% reliably, but it gets the job done. ([[sir_richard]])<br />
* Add CsrGetProcessLuid, CsrImpersonateClient, CsrRevertToSelf, CsrShutdownProcesses, CsrFindProcessForShutdown required for user-mode shutdown. Right now we are able to reliably enumerate user apps (in the user LUID) and then service/system apps (in the LOCAL SYSTEM LUID). ([[sir_richard]])<br />
* Differentiate between first-try and second-try shutdown. In the first try, the console server should defer to the user/win32k server to attempt shutdown for a non-console app. However, if we end up with a second try because this did not happen, then the console server takes matters in its own hands and calls the CTRL-C handler (with some exceptions, such as system/service apps, or apps not belonging to the LUID). ([[sir_richard]])<br />
* Split off CSRSS into a more Windows-friendly model. CSRSS.EXE is simply a stub which loads CSRSRV.DLL, where all the actual code is present. ([[sir_richard]])<br />
* Don't expect ReactOS to always boot from C:\ReactOS (that's not the case for LiveCD) ([[Hervé Poussineau]])<br />
* Don't enumerate the ACPI root device ([[Cameron Gutman]])<br />
* Let the ACPI driver handle fixed feature buttons ([[Cameron Gutman]])<br />
* Don't call PrivateCsrssInitialized ([[Giannis Adamopoulos]])<br />
<br />
==== WIN32K ====<br />
* Removed NtUserGetScrollInfo and replaced it, move more type names in window object to WND. ([[James Tabor]])<br />
* When locking and unlocking regions, no need to use probe to check attribute space first before read or write access. The exception handling is a feature. ([[James Tabor]])<br />
* set fix line endings to preserve windows line endings ([[Matthias Kupfer]])<br />
* fixes issue with cancel button ([[Matthias Kupfer]])<br />
* fixes problems with unattended mode ([[Matthias Kupfer]])<br />
* temporarily enable device listing (setupapi) ([[Matthias Kupfer]])<br />
* More movement to WND with updates to related files. Added new scroll and get/post message routines. In the mix we did moved to the MONITOR structure. ([[James Tabor]])<br />
* More movement to WND with updates to related files. Removed unused code rewritten others. Review patch. ([[James Tabor]])<br />
* Patch that fixes VMWare boot (and should fix QEMu/KVM boot on the testbot): ([[sir_richard]])<br />
* Updated headers and related files. ([[James Tabor]])<br />
* Fix the window handle De/Reference throttler issue. Used mIrc. ([[James Tabor]])<br />
* System regions do not possess user attribute sections. . ([[James Tabor]]; {{bug|5124}})<br />
* Read the patch for more information. ([[James Tabor]]; {{bug|5124}})<br />
* Implement IntGdiSetBrushOwner for bug 5124. ([[James Tabor]])<br />
* Add system region support functions. ([[James Tabor]])<br />
* Merge aicom-network-branch (without NDIS changes for now) ([[Cameron Gutman]])<br />
* New noteworthy improvements include (in addition to the other improvements made in the commits that were reverted in trunk): ([[Cameron Gutman]])<br />
* Support for sending/receiving packets > 16KB in size ([[Cameron Gutman]])<br />
* Samba-tng works ([[Cameron Gutman]])<br />
* Tracert works ([[Cameron Gutman]])<br />
* Major speed and stability improvements (especially for TCP connections) ([[Cameron Gutman]])<br />
* Use ExAllocatePoolWithTag/ExFreePoolWithTag instead of memtrack ([[Cameron Gutman]])<br />
* Fixes to region support code. . ([[James Tabor]]; {{bug|5124}})<br />
* Remove CriticalRegion calls. ([[James Tabor]])<br />
* Remove CriticalRegion calls. ([[James Tabor]])<br />
* Fixed DCE masks, clipping and added support for mirror and process owned dce. ([[James Tabor]])<br />
* Reference: http://www.reactos.org/archives/public/ros-dev/2008-July/010498.html http://www.reactos.org/archives/public/ros-dev/2008-July/010499.html ([[James Tabor]])<br />
* Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. ([[James Tabor]])<br />
* Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. ([[James Tabor]])<br />
* Wrong commit msg, removed debug prints and fixed RedrawWindow. This fix one part of the leak. ([[James Tabor]])<br />
* Properly assign error code when a real status error occurred. ([[James Tabor]])<br />
* Free the non user event container for WaitForInputIdle. ([[James Tabor]])<br />
* Fix the new GetClipRgn clipping wine test for EqualRgn and clip region note. ([[James Tabor]])<br />
* If dc is window owned and not class owned do not set class if null pdce. Added debug prints to locate reentrancy issues due to a race condition. ([[James Tabor]])<br />
* Add more checks to find dead windows. ([[James Tabor]])<br />
* remove unused library ([[Ged Murphy]])<br />
* Fix DrawMenuBar. ([[James Tabor]])<br />
* Transition the physical device into D0 state when we receive IRP_MN_START_DEVICE ([[Cameron Gutman]])<br />
* Actually do the power state transtion when a PDO receives IRP_MN_SET_POWER for DevicePowerState ([[Cameron Gutman]])<br />
* Fill the DEVICE_CHARACTERISTICS struct based on values in the acpi_device struct ([[Cameron Gutman]])<br />
* Lots of unhacking ([[Cameron Gutman]])<br />
* Stub-plement NtUserSetInformationThread for UserInitiateShutdown and UserEndShutdown. I think we're supposed to notify Winlogon at some point, and check for races. Part of new shutdown code. ([[sir_richard]])<br />
* Stop memory corruption when InstalledDisplayDrivers has more than one driver in the list. Note that driver loading is inherently broken right now, as the list of drivers is not parsed properly (this breaks eVb's VGA/VBE driver). ([[sir_richard]])<br />
* EngCreateBitmap/IntCreateBitmap don't make much sense (code written back in 2004...). RLEs don't have scanlines by definitions, bit depth alignments and sizing is not done, newer display formats (compressed) are not supported correctly, zero-width surfaces fail because the size is ignored during scanline calculation, etc. These bugs caused eVb's test VGA display driver to fail as it needs to create a zero-depth shadow surface, which would end up with pv0Bits == NULL in the current implementation (and crash during ROPs/BitBLTs). Attempted to rewrite as much of it to 1) make Windows drivers work with it 2) continue the current hacks needed for ReactOS drawing. Note that the broken IntCreateBitmap is still used by non EngXXX interfaces to reduce the change of breakage, but keep in mind the function is entirely wrong. ([[sir_richard]])<br />
* Revert accidental changes to IntCreateBitmap. ([[sir_richard]])<br />
* Enable the alignment code and reduce the number of hacks, leaving only one for 1bpp top-down output (Freetype?) which doesn't seem to like when the lDelta is aligned to the correct bit-boundary. This should fix the crashes and graphic cltches recently introduced. ([[sir_richard]])<br />
* Prevent a possible memory leak. ([[Kamil Hornicek]])<br />
* Use SURFACE_FreeSurfaceByHandle so we don't hit the "Object must not have a handle!" assert in GDIOBJ_FreeObj. ([[Kamil Hornicek]])<br />
* Fix acpi_bus_receive_event and acpi_bus_generate_event which will be used for button events later ([[Cameron Gutman]])<br />
* Uncomment and fix the locking code that protects the event queue and driver list ([[Cameron Gutman]])<br />
* When adding new glyph cache entry convert the glyph bitmap with proper alignment to comply with the new code in EngCreateBitmap and remove the corresponding hack from SURFMEM_bCreateDib. ([[Kamil Hornicek]]; {{bug|5244}})<br />
* Remove a pedantic assert to allow compressed bitmaps. ([[Kamil Hornicek]]; {{bug|5255}})<br />
* 45127 (sserapion) ([[Timo Kreuzer]])<br />
* Kill debug warnings of dc ownership. ([[James Tabor]])<br />
* Implement MakeInfoDC and support functions. Dedicated to Timo. ([[James Tabor]])<br />
* Handle keyboard input when no windows are present (Andrey; {{bug|3560}})<br />
* Since r43772 we now normalize VK_LCONTROL/VK_RCONTROL to VK_CONTROL rather than VK_LCONTROL (and ditto for shift/alt), so update SetKeyState to handle this. Fixes bug 4945. ([[Jeffrey Morlan]])<br />
* Update text and background brush properly. Fixes wrong colors in radio buttons in Firefox. Fix by Jerome Gardou. ([[Timo Kreuzer]]; {{bug|5311}})<br />
* rename w32k.h to win32k.h and win32k.h to win32kp.h ([[Giannis Adamopoulos]])<br />
* Do not do callbacks to user mode while holding system message queue lock ([[Giannis Adamopoulos]]; {{bug|4926}})<br />
* Fix when WH_MOUSE_LL and WH_JOURNALRECORD are called ([[Giannis Adamopoulos]]; {{bug|4926}})<br />
* 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. ([[Michael Martin]])<br />
* 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. ([[Michael Martin]])<br />
* The previous commit claiming to fix bug #4461 was incorrect, it may have actually fixed bug #5320. Testers please test. ([[Michael Martin]])<br />
* Fix IntDumpHandleTable, it was very broken. ([[Timo Kreuzer]])<br />
* bug> ([[Johannes Anderwald]])<br />
* 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. ([[Johannes Anderwald]])<br />
* bug> ([[Johannes Anderwald]])<br />
* fix> ([[Johannes Anderwald]])<br />
* 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) ([[Johannes Anderwald]])<br />
* fix> ([[Johannes Anderwald]])<br />
* Add an assert to PostTimerMessages to catch null pointer windows ([[Johannes Anderwald]])<br />
* Add another assert to catch special windows (Window == 1) ([[Johannes Anderwald]])<br />
* Improve check if the window is '1' ([[Johannes Anderwald]])<br />
* Revert the hack done in 47059 to apply a better solution. ([[Michael Martin]])<br />
* co_IntCreateWindowEx: Add the WNDS2_WMCREATEMSGPROCESSED flag to state2 member of WND after sending the WM_CREATE message. ([[Michael Martin]])<br />
* By setting this flag it can be examined elsewhere to determine if the window was created successfully. ([[Michael Martin]])<br />
* co_UserDestroyWindow: Examine above mentioned flag to make sure the windows was created before calling hook procedure to inform of destroying window. ([[Michael Martin]])<br />
* Only call ExFreePool.. if Buffer is not NULL, which can occur if the Unicode String MessageNameUnsafe coming from user mode is incorrect. Fixes a bugcheck when using OllyDbg V2.0. ([[Michael Martin]])<br />
* IntMouseInput: Add the state of virtual keys to wParam before calling MsqInsertSystemMessage. Fixes bug #5066. ([[Michael Martin]])<br />
* Add and Remove MK_XBUTTON1/2 flags to CurInfo->ButtonsDown vice XBUTTON1/2. ([[Michael Martin]])<br />
* Code based on patches in bug #5066. ([[Michael Martin]])<br />
* Gabriel Ilardi: ([[Aleksey Bragin]])<br />
* Update spanish %temp% path, part of bug 2482. ([[Aleksey Bragin]])<br />
* co_UserDestroyWindow: ThreadInfo->pDeskInfo->hShell holds the hWnd of the Shells Desktop Window. Set it to NULL if that windows is being destroyed. Fixes bug #4902. ([[Michael Martin]])<br />
* Fix sending WM_KILLFOCUS when we give focus to a window of a different thread ([[Giannis Adamopoulos]] ; {{bug|1546}} ; {{bug|1603}})<br />
* Fix broken parameter passing from EngMaskBitBlt to (Alpha)BltMask. It was passing the wrong surface and the wrong point. Rename some parameters to reflect what their usage is. Add ASSERTs to make sure noone passes useless parameters. Fixes crippled text in startmenu. ([[Timo Kreuzer]]; {{bug|4379}})<br />
* The whole code is broken by design, anyway it will go away, once the new text rendering code is done. ([[Timo Kreuzer]]; {{bug|4379}})<br />
* Modify how non-queued messages are send that originate from the Win23k subsystem. ([[Michael Martin]])<br />
* Non-queued messages must go directly to the windows WNDPROC and not through the message pump (previews ROS behavior). ([[Michael Martin]])<br />
* More importantly sending these messages must not cause the sending thread to block waiting for a reply. ([[Michael Martin]])<br />
* Add a messaging handling function that always sends message from Win32k to the windows thread without waiting. ([[Michael Martin]])<br />
* This will also allow the implementation of message call back later. ([[Michael Martin]])<br />
* Modify PackParam and UnpackParam to accept a BOOL value to determine whether LParam needs to be allocated from NonPagedPool. ([[Michael Martin]])<br />
* Use with new message handling as if message sent to another thread have any pointers they must be allocated from NonPagedPool. ([[Michael Martin]])<br />
* Fixed broken logic in can_active_window function and co_WinPosShowWindow. ([[Michael Martin]])<br />
* Fixed broken logic in co_IntSendActivateMessages. ([[Michael Martin]])<br />
* The WM_ACTIVATEAPP message was being sent to every window belonging to the desktop twice. ([[Michael Martin]])<br />
* Once with flag saying window was activated and again with deactivated. ([[Michael Martin]])<br />
* These changes should fix bugs #969, #3171, #4501, #4676, #4677, #4948. ([[Michael Martin]])<br />
* Bring back support for RLE compressed bitmaps. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Merge the decompress functions for 4bb and 8bpp bitmaps to one generic function. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Simplify SURFMEM_bCreateDib a bit by not allowing PNG/JPEG compression at all. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Check the supplied scancode instead of the state buffer whether a key is up ([[Gregor Schneider]]; {{bug|3727}})<br />
* Fixes the calculator keyboard input regression introduced with r35117 ([[Gregor Schneider]]; {{bug|3727}})<br />
* Ref: http://www.osronline.com/ddkx/w98ddk/keycnt_4ilz.htm and wine implementation ([[Gregor Schneider]]; {{bug|3727}})<br />
* When message are sent without waiting a reply (non-queued messages) the message queues are referenced and dereferenced in the call. ([[Michael Martin]])<br />
* Message removal and cleanup functions for queues expected a reference on the queue. Add checks to determine if the message is a non-queued message and if so release memory for those that had pointers and more importantly skip dereferencing the queues. Possibly fixes random crashes and memory leaks. ([[Michael Martin]])<br />
* The description and changes made regarding WM_ACTIVATEAPP messages in r47126 were partially incorrect, the code was mostly correct. ([[Michael Martin]])<br />
* Change the first parameter type from HWND to PWINDOW_OBJECT for IntKillTimer as it makes more sense. ([[Michael Martin]])<br />
* Activate IntSetTimer, already done by James. ([[Michael Martin]])<br />
* Add flag TMRF_DELETEPENDING. Destroy timers when this flag is set in ProcessTimers to allow any timers that have expired to have the WM_SYSTIMER/WM_TIMER messages posted to message queue before being destroyed. ([[Michael Martin]])<br />
* Fix error in FindTimer, it was always returning a Timer and it needed to return NULL if the specified timer did not exist. ([[Michael Martin]])<br />
* Fix error in PostTimerMessages, need to handle cases where the Window object is NULL which occurs when requesting messages for any window belonging to the thread. ([[Michael Martin]])<br />
* In co_IntPeekMessage, simply call PostTimerMessages to have WM_SYSTIMER/WM_TIMER messages posted for expired timers. Remove call to old timer message handling. ([[Michael Martin]])<br />
* TODO: Code using the old timer implementation needs removed. ([[Michael Martin]])<br />
* Fixes bugs #2393, #3634, #2835. Commit dedicated to JT and Mr. Roboto. ([[Michael Martin]])<br />
* Check that the thread is not in cleanup before attempting to do anything related to it. Add a couple asserts for sanity. ([[Michael Martin]])<br />
* Rename co_InflateRect to RECTL_vInflateRect and move it to rect.c ([[Giannis Adamopoulos]])<br />
* WM_WINDOWPOSCHANGED should contain the final window position ([[Giannis Adamopoulos]])<br />
* Store the monitor work area in the monitor and not in the desktop ([[Giannis Adamopoulos]])<br />
* Correctly adjust values returned from co_WinPosGetMinMaxInfo ([[Giannis Adamopoulos]])<br />
* Set MasterTimer initial value to NULL and Initialize MasterTimer at the beginning of RawInputThreadMain before doing anything else. ([[Michael Martin]])<br />
* Add ASSERTs to catch if MasterTimer is NULL. ([[Michael Martin]])<br />
* Move the initialization of MasterTimer into InitInputImp which is called from win32k DriverEntry routine instead of initializing it in the secondary thread RawInputThreadMain. ([[Michael Martin]])<br />
* Remove WS_EX_SETANSICREATOR from Ex style in co_IntCreateWindowEx ([[Timo Kreuzer]])<br />
* For the Low Level Mouse Hook (WH_MOUSE_LL), input can come from the mouse driver or mouse_event. Both of which result in a call to UserSetCursorPos. ([[Michael Martin]])<br />
* UserMode SetCursorPos API also ends up here. Add BOOL parameter that can be used to determine if hooks are to be called. ([[Michael Martin]])<br />
* Move the code related to calling the hook procedure from MsqInsertSystemMessage into UserSetCursorPos and call the hook procedure here if needed. ([[Michael Martin]])<br />
* If hook procedure returns non 0 value. Dont insert the system message. ([[Michael Martin]])<br />
* Fixes a recursive call to the hook procedure resulting thread using to much stack exposed by user32 winetest for input. ([[Michael Martin]])<br />
* When destroying a window, generate a mouse move message, so that the underlying window is notified about the mouse position and can update the pointer if neccessary. Fixes bug #4499 and bug #3893 ([[Timo Kreuzer]]; {{bug|4499}})<br />
* Minor revert of 47281 to fix OO installer textboxes. ([[Michael Martin]])<br />
* Delete old clipregion only and set a new one, if it could be created already, to avoid setting a NULL region. ([[Timo Kreuzer]]; {{bug|4431}})<br />
* Refactor NtGdiGradientFill, use 1 SEH block instead of 2, replace IntGdiGradientFill with GreGradientFill, don't lock the DC in UserDrawCaption. ([[Timo Kreuzer]])<br />
* Implement DestroyTimersForWindow and call it instead of MsqRemoveTimersWindow when destroying a window. ([[Michael Martin]])<br />
* Fire NewMessages event when cleaning up thread so that threads dont wait for new messages that will never be received. Fixes a problem where some application that use timers dont completly exit. ([[Michael Martin]])<br />
* IntSetTimer: Dont try to raise a timer from the dead. Once the TMRF_DELETEPENDING flag is set, let it be destroyed. ([[Michael Martin]])<br />
* co_MsqWaitForNewMessages: Call the wait without a timeout value as now when the timer expires the NewMessages event will be set to exit the wait. ([[Michael Martin]])<br />
* Message Queue specific timer code and old time queuing code is now dead. It will be removed later when we are happy with new timer implementation. ([[Michael Martin]])<br />
* GreGradientFill: don't forget to unlock the DC ([[Timo Kreuzer]])<br />
* Remove use of TMRF_DELETEPENDING for deleting timers as this was a bad idea. ([[Michael Martin]])<br />
* Timers need to be deleted immediately as waiting for them to be deleted resulted in some processes running out of handles. ([[Michael Martin]])<br />
* Fixes richedit winetest for editor. ([[Michael Martin]])<br />
* Add flag TMRF_TIFROMWND for timers created from user mode so the thread stored in the timer object is from the window and not caller. ([[Michael Martin]])<br />
* Fixes an issue where FireFox would not show any of its windows and looked dead. ([[Michael Martin]])<br />
* When creating and deleting timers, If the window is non null and IDEvent is 0 then the IDEvent is changed to 1. ([[Michael Martin]])<br />
* When modifying timer list use UserEnter and Leave instead of a Critical Region only. ([[Michael Martin]])<br />
* The timer is created usingUserCreateObject. It may be a good idea to save the handle in the timer object so that it can be deleted later. ([[Michael Martin]])<br />
* Dereference the object before attempting to delete it. ([[Michael Martin]])<br />
* For types FNID_SENDMESSAGECALLBACK call co_IntSendMessageWithCallBack to put the message in the send queue. ([[Michael Martin]])<br />
* Rewrite code for when messages have a completioncallback ([[Michael Martin]])<br />
* When processing and deleting timers use a seperate timer lock instead of using the global user lock. ([[Michael Martin]])<br />
* Rename co_IntCreateWindowEx to co_UserCreateWindowEx and rewrite it ([[Giannis Adamopoulos]])<br />
* Fix the sequence of messages sent in co_UserCreateWindowEx ([[Giannis Adamopoulos]])<br />
* Allow menus to be shown over the taskbar ([[Giannis Adamopoulos]]; {{bug|5415}})<br />
* Call CsrInit in NtUserInitialize so we can remove PrivateCsrssInitialized ([[Giannis Adamopoulos]])<br />
* Romove a reactos only syscall (NtUserGetClassLong) ([[Giannis Adamopoulos]])<br />
* Remove UserGetClassLongPtr, UserGetWindow, UserGetWindowLong, IntGetOwner. Instead access objects directly ([[Giannis Adamopoulos]])<br />
* In WINDOW_OBJECT store pointer to the ownder window instead of a handle ([[Giannis Adamopoulos]])<br />
* CreateWindow: initialize window position after sending WM_GETMINMAXINFO message ([[Giannis Adamopoulos]])<br />
* assert -> ASSERT ([[Gregor Schneider]])<br />
* Free allocations with the tag that was used to allocate them ([[Gregor Schneider]])<br />
* Use TAG_GDIICM tag for ICM allocations ([[Gregor Schneider]])<br />
* Use TAG_PALETTE for palette entries ([[Gregor Schneider]])<br />
* Remove mapping codes, the functions from pre r9000 don't even exist anymore ([[Gregor Schneider]])<br />
* Use TAG_KEYBOARD for keyboard layouts ([[Gregor Schneider]])<br />
* Free TAG_ACCEL and TAG_DRIVER allocations with their tags ([[Gregor Schneider]])<br />
* Forgot to remove this ASSERT for r47636 ([[Cameron Gutman]])<br />
* Change the number of windowless timers from 1024 to 32768. ([[Michael Martin]])<br />
* When destroying windowless timers, clear the bit number (IDEvent) in the bitmap so the bit number can be reused. ([[Michael Martin]])<br />
* Only create a windowless timer if there is no windowless timer matching IDEvent. ([[Michael Martin]])<br />
* Fixes case where applications create too many windowless timers and/or run out of windowless timers. ([[Michael Martin]])<br />
* Tag more pool allocations ([[Gregor Schneider]])<br />
* Tag even more pool allocations ([[Gregor Schneider]])<br />
* Remove dead code, adjust comments ([[Gregor Schneider]])<br />
* Tag the remaining untagged pool allocations ([[Gregor Schneider]])<br />
* Use GDITAG_RBRUSH instead of hardcoding the tag ([[Gregor Schneider]])<br />
* Merge GDIOBJ related changes from yarotows ([[Jérôme Gardou]])<br />
* GDIOBJ_(Share)LockObj : return NULL on NULL input, avoiding debug spew ([[Jérôme Gardou]])<br />
* Set NULL process owner when setting READY_TO_DIE flag of a gdiobj ([[Jérôme Gardou]])<br />
* So now GDIOBJ_ShareUnlockObj can claim ownership before trying to delete the object ([[Jérôme Gardou]])<br />
* Set DC_DIBSECTION dirty flag when a DIB section is selected, not when one is created. ([[Jérôme Gardou]])<br />
* Chek if there is something to do in GDIOBJ_SetOwnership before doing it ([[Jérôme Gardou]])<br />
* get rid of ROS_DC::BitsPerPixel. ([[Jérôme Gardou]])<br />
* 1 - It was a hack. ([[Jérôme Gardou]])<br />
* 2 - Its use was inconsistent. ([[Jérôme Gardou]])<br />
* co_IntSendMessageWithCallBack is called for two reasons; for messages that originate from win32k and from user mode when using Callbacks. ([[Michael Martin]])<br />
* For both cases do not do anything with the sendqueue member of message struct and do not add the message to the senders dispatch message list. ([[Michael Martin]])<br />
* In msgqueue related functions, check if the message is a nowait messages before attempting to remove and entry from the dispatch message list as it doesnt exist. ([[Michael Martin]])<br />
* Fixes a NonPagedPool corruption that was occurring on regtest bootcd. Thanks Caemyr for testing. ([[Michael Martin]])<br />
* Add Check for spwndNext being null before accessing any of the members. Fixes bugcheck when using cubicexplorer. ([[Michael Martin]])<br />
* update olepro32 base address. ([[Sylvain Petreolle]])<br />
* The Win32ClientInfo TEB field can be bigger than the CLIENTINFO structure. ([[Timo Kreuzer]])<br />
* Only the CompletionCallback member determines if a callback is needed. Checking the SenderReturn is unwanted and this variable was never initialized which could cause bogus callback attempts. Just remove the BOOL variable SenderReturned and directly check if Message->DispatchingListEntry.Flink is NULL before attempting to remove the message from senders queue. Noticed by Timo. ([[Michael Martin]])<br />
* Fix midiOutOpen and midiInOpen prototypes. ([[Sylvain Petreolle]])<br />
* Change percision of win32k timers to 0.5 miliseconds. ([[Michael Martin]])<br />
* Remove Destroy parameter from FindTimer as it is just odd and call RemoveTimer where needed. ([[Michael Martin]])<br />
* PostTimerMessages: No need to continue looping the remainder of the timers once the target timer has been found and message posted to message queue. ([[Michael Martin]])<br />
* Set caret blink rate for global server information too. ([[James Tabor]])<br />
* Remove dead code as in the old SetTimer and KillTimer functions. ([[Michael Martin]])<br />
* Fix typo. ([[Sylvain Petreolle]])<br />
* Dedicated to Physicus ([[Sylvain Petreolle]])<br />
* move set of msg-time (for messages) back to msg queue (msg time is needed for all mouse events not only mouse move) ([[Matthias Kupfer]])<br />
* ClickLock will work again ([[Matthias Kupfer]])<br />
* Revert changes done in 47325 which partially broke mouse hooks. ([[Michael Martin]])<br />
* If the UserSetCursorPos is reached due to SetCursorPos, dont generate a mouse move message or call mouse hooks. ([[Michael Martin]])<br />
* Forgotten in r47924. Change name of BOOL parameter for UserSetCursorPos to better describe its purpose as done in c source. ([[Michael Martin]])<br />
* Remove old win32k timer code. ([[Michael Martin]])<br />
* Get rid of rosdc::hVisRgn, as in yarotows (r46372) ([[Jérôme Gardou]])<br />
* Dereference CursorIcon Object in NtUserCallOneParam ([[Jérôme Gardou]])<br />
* Shared Icons need their bitmaps to be unowned ([[Jérôme Gardou]])<br />
* Bye bye NtUserCreateCursorHandle. ([[Jérôme Gardou]])<br />
* Thanks GedMurphy for explaining me how to suppress that. ([[Jérôme Gardou]])<br />
* Please clean win32k after this commit. ([[Jérôme Gardou]])<br />
* Properly initialize hVisRgn in CLIPPING_UpdateGCRegion ([[Jérôme Gardou]])<br />
* This fixes a whole bunch of "IntGdiCombineRgn requires hSrc2 != NULL for combine mode 1!", and probably some bugs. ([[Jérôme Gardou]])<br />
* Dedicated to encod3d. ([[Jérôme Gardou]])<br />
* rewrite UserDrawIconEx, taken from yarotows, with same small modifications. ([[Jérôme Gardou]])<br />
* Fixes a whole bunch of user32:cursoricon tests ([[Jérôme Gardou]])<br />
* Protect access to the result pointer from KeUserModeCallback with SEH. Fixes a possible kernel mode crash. ([[Timo Kreuzer]])<br />
* Copy the alpha channel as well when doing RGB<->BGR color translations. ([[Timo Kreuzer]])<br />
* Fix NtGdiMaskBlt to handle patterns correctly, use SRCAND, which is more optimized, instead of DSTERASE, and set fore and background colors correctly to not destroy alpha channel. ([[Timo Kreuzer]])<br />
* Remove IntEngExtEscape stub. This function is completely useless. If the driver doesn't provide a DrvEscape, the function should simply fail and must return 0, not -1. ([[Timo Kreuzer]]; {{bug|4563}})<br />
* If a NULL surface is passed, pass on NULL pso to the driver function ([[Timo Kreuzer]]; {{bug|4563}})<br />
* For SetTimer nIDEvent can be 0 in which case return 1. Zero still needs to be used for nIDEvent when killing the timer. Fixes bug 5553. ([[Michael Martin]])<br />
* Modify windowless timers to use IDEvent values decrementing from the max number of windowless timers vice incrementing from 1. Done to match windows behavior. ([[Michael Martin]])<br />
* co_IntTranslateMouseMessage: properly initialize *HitTest and only send WM_NCHITTEST when the message is going to be removed (Jan)<br />
* co_IntPeekMessage: Prevent possible use of uninitialized HitTest by ProcessMouseMessage() (Jan)<br />
* Fixes bug 2139 (Jan)<br />
* Allocate the DCs prgnVis in DC_AllocDC, instead of "on demand" in GdiSelectVisRgn and properly handle failure case. This fixes a possible crash, when running out of gdi handles. ([[Timo Kreuzer]])<br />
* Use the object type index, not the shifted full object type to decide what to do with an object in NtGdiDeleteObjectApp. Fixes leaking derived types such as pens. ([[Timo Kreuzer]])<br />
* When doing a cleanup for a DC, check, if the default brushes are set, before dereferencing them. Fixes a possible kernel mode crash. ([[Timo Kreuzer]])<br />
* Remove some obsolete casts ([[Timo Kreuzer]])<br />
* Move the allocation of the vis region of the DC to a later position, so that all mandatory fields are initialized before we try to delete the DC in failure case. Fixes yet another possible crash. ([[Timo Kreuzer]])<br />
* Seperate DC_vSetLayout from NtGdiSetLayout and save the old value before setting the new one. ([[Timo Kreuzer]])<br />
* Rework EngSetPointerShape, to first allocate the neccessary surfaces, before deleting the old ones. Also check in IntShowMousePointer if a saving surface is present. This way a failure to allocate a surface will not result in a crash, but keep the old mouse pointer. ([[Timo Kreuzer]]; {{bug|5402}})<br />
* Mouse messages can be sent before the desktop is initialized. Check for this and return false if its not. FIxes assert when moving mouse before desktop is up. ([[Michael Martin]])<br />
* Fix large amount of set-but-unused variables. Most of these seemed to be old/unfinished code, however in IntGdiPaintRgn an actual bug seems to have been found. ([[sir_richard]])<br />
* Make IntGdiPaintRgn return the status of the operation, not always TRUE. ([[sir_richard]])<br />
* Giannis Adamopoulos: Only dereference a class if it's valid, should fix Heroes 3 crash. ([[Aleksey Bragin]]; {{bug|5606}})<br />
* Fix a bug, where a failure to allocate the kernel mode WINDOW_OBJECT would cause a page fault, because the WND was still allocated, but never initialized, and Wnd->rpdesktop was then dereferenced to free the WND again. ([[Timo Kreuzer]])<br />
* Call HCBT_CREATEWND, WM_NCCREATE and WM_CREATE with correct style and position ([[Giannis Adamopoulos]])<br />
<br />
=== XDK ===<br />
* Deduplicate FSRTL_COMMON_FCB_HEADER_LAYOUT in ntifs.h ([[Amine Khaldi]])<br />
* Move ECP_HEADER from the ntifs template to fsrtltypes.h ([[Amine Khaldi]])<br />
* Make sure FORCEINLINE comes as first in declarations. ([[Amine Khaldi]])<br />
* Missed this one (FORCEINLINE) ([[Amine Khaldi]])<br />
* WmiTraceMessageVa is NTAPI, not __cdecl. ([[Amine Khaldi]])<br />
* Introduce some _ANONYMOUS_STRUCT and NONAMELESSUNION based definitions. ([[Amine Khaldi]])<br />
<br />
== LIB ==<br />
<br />
=== 3RDPARTY ===<br />
* remove hal from libs ([[Timo Kreuzer]])<br />
* convert to spec ([[Timo Kreuzer]])<br />
<br />
==== FREETYPE ====<br />
* When doing 1BPP -> 8BPP conversion set all 8 bits not only the LSB. (Freetype devs were notified of this issue) ([[Kamil Hornicek]]; {{bug|5244}})<br />
* The FT_MulFix patch is not neccessary anymore, the 1BPP -> 8BPP conversion patch will be applied again right after this. (Jerome; {{bug|4537}})<br />
* Remove setjmplongjmp.s ([[Timo Kreuzer]])<br />
* Fix FT_Get_CID_Is_Internally_CID_Keyed export name to match source code. ([[Aleksey Bragin]])<br />
<br />
===== ICU =====<br />
<br />
====== SOURCE ======<br />
<br />
======= COMMON =======<br />
<br />
======== UNICODE ========<br />
<br />
==== ICU4ROS ====<br />
* include string.h, for memcpy ([[Timo Kreuzer]])<br />
<br />
======= TEST =======<br />
<br />
======== PERF ========<br />
* Do not declare the PCR in KeGetPcr as volatile. It is only volatile as in "if there is a context switch, the PCR is different". You are in a LOT of trouble if the thread switches while your code is running in the first place, and your code is somehow running as a different thread! ([[sir_richard]])<br />
* This change makes C code a lot neater, especially during PCR access, because it doesn't force reloading the PCR each time. For example, Read-Modify-Operations on the PCR, such as AND are 1 line of assembly instead of 3. ([[sir_richard]])<br />
* This helps and will help further with the C HAL, as well as the C trap handlers. ([[sir_richard]])<br />
* Jose Catena <jc1@diwaves.com> ([[Aleksey Bragin]]; {{bug|5139}})<br />
* Fix a typo in aulldvrm (one of the dividends was always wrong). ([[Aleksey Bragin]]; {{bug|5139}})<br />
* Replace early ZwClose system calls with ObCloseHandle(KernelMode). This avoids taking a system call for those cases and gives a slight perf boost to booting up the system. It also pushes the first system call somewhat later in the boot process, allowing for easier debugging should the interface have issues/need tracing. ([[sir_richard]])<br />
* Make all trap handlers, trap exit code, fatal exit code, and exception dispatch code "no return" since it always leads to an iret or other kind of non-directly-returning mechanism. This allows the compiler to optimize better and also remove useless code at the bottom of the functions. Since __builtin_unreachable is only for GCC 4.5, we use exit(0) for now (it will never be reached) to trick GCC. ([[sir_richard]])<br />
* Fix vmwinst.exe crash (bug #5134). ([[Dmitry Gorbachev]])<br />
* Forgot ntdef.h ([[Dmitry Gorbachev]])<br />
* Put #endif where it should be. ([[Dmitry Gorbachev]])<br />
* Trying r45222 hack again... ([[Dmitry Gorbachev]])<br />
* Use for GCC before 4.5, too... ([[Dmitry Gorbachev]])<br />
* Comment out DECLSPEC_NORETURN for now. ([[Dmitry Gorbachev]])<br />
* Make the trap entry/exit macros inlined, just as they used to be before in their pure-assembly forms. This should boost performance quite a bit by avoiding 2-3 extra calls during traps and system calls. ([[sir_richard]])<br />
* Remove ABIOS checks since ReactOS does not support this, and since it doesn't look like the target kernel actually does either, we can remove this vestigal/unsupported code, saving some extra branches and checks. ([[sir_richard]])<br />
* Use __builtin_trap for old GCC, too. ([[Dmitry Gorbachev]])<br />
* KiEoiHelper, KiDispatchExceptionFromTrapFrame: mark noreturn. ([[Dmitry Gorbachev]])<br />
* Return DECLSPEC_NORETURNs. ([[Dmitry Gorbachev]])<br />
* After spending the better part of the last two days rewriting the HAL V8086 code (used for BIOS Display Reset) in C, it dawned upon me that it shouldn't even be used during bootup in the first place! The boot loader, running in real-mode, already sets video mode 12 when starting ReactOS. We then repeat the operation, but since we're in protected mode, we have to emulate the whole sheebang with V8086 mode. We now initialize bootvid without requesting a mode switch (which was broken up until a commit ago). This gives us a dirty palette and VGA state. We then call VidResetDisplay to clean up the palette and setup the VGA registers correctly, but we only reset the screen if a custom /BOOTLOGO command is used (which isn't supported yet). We therefore don't need to enter V8086 mode at all up until the switch to graphics mode from the video card driver. Note that Windows doesn't do this (Win7 might due to the new Boot Graphics Library), so we're actually booting faster! ([[sir_richard]])<br />
* What to do when your SYSEXIT code has a bug? Set KiFastSystemCallDisable to TRUE so it never gets used. Now, for the first time in 3 years and 3 months (not giving a specific revision # to protect the 'innocent'), ReactOS actually fully uses the SYSENTER/SYSEXIT instructions isntead of IRETD, since my code doesn't exhibit the bug and SYSEXIT is safe to use. This should save a good hundred cycles or more per system call. ([[sir_richard]])<br />
* Set WP0 bit in CR0 later, thus allowing the existing runtime patches (and this new one) to function without requiring MmSetPageProtect. Saves TLB flushes and page table walking/mapping on boot. ([[sir_richard]])<br />
* Left in some debug prints to see what buildbot reports...will remove if it survives. ([[sir_richard]])<br />
* Not in any way a scientific number you should bet the farm on, but we do now count the number of cycles at the very first instruction of kernel initialization, at the moment SMSS initializes the registry (when we call kernel initialization complete), and at the moment there have been 12 processes created (10 without counting idle/system), which is a bit less than a normal GUI boot. We also display the number if interrupts, system calls, and context switches it took to get us there. A purely comparative number, perhaps worthy for inclusion in testman/regression tests? ([[sir_richard]])<br />
* Optimize nested interrupt cases (where a pending interrupt exists at the end of a software or system interrupt) just like the old HAL did, by jumping into a second-level handler and completing the outer trap frame instead of the nested trap frame. This saves a lot of cycles in those cases, and they do happen quite often (pending DPC at the end of an interrupt, for example). ([[sir_richard]])<br />
* This is too since the C interrupt handling code is a lot more efficient than the ASM one. Numbers look good here. ([[sir_richard]])<br />
* On real machines, writing the PIC mask is a relatively expensive I/O operation, and IRQL lower/raise can happen hundreds of times a second. Lazy IRQL provides an important optimization. ([[sir_richard]])<br />
* Correctly handling level interrupts as level interrupts allows for faster, and more efficient, IRQ handling. ([[sir_richard]])<br />
* add missing delimiters ([[Sylvain Petreolle]])<br />
* Omit setting certain useless trap frame fields. ([[sir_richard]])<br />
* Change instructions used to save registers on the trap frame to fix some WaW and RaW hazards. ([[sir_richard]])<br />
* Merge some small changes from aicom-network-branch to fix potential memory corruption and remove unused code in oskittcp ([[Cameron Gutman]])<br />
* Add a hack to WSHSetSocketInformation so we don't fail with options that aren't implemented yet ([[Cameron Gutman]])<br />
* Fixes bug #5131 ([[Cameron Gutman]])<br />
* Boot-time improvement since the new system driver loading code uses low-level Cm interfaces (portability side-effect: can be shared with FreeLDR) instead of the complex parse-based object-manager-based system-calls. ([[sir_richard]])<br />
<br />
==== MINGW ====<br />
* Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325) ([[Timo Kreuzer]])<br />
* 46538 ([[Timo Kreuzer]])<br />
* 46539 ([[Timo Kreuzer]])<br />
* add back getopt.c (needed by rosapps) ([[Timo Kreuzer]])<br />
* add ofmt_stub.c and cx_pure_virtual.c ([[Timo Kreuzer]])<br />
* fix a typo ([[Timo Kreuzer]])<br />
* link mingw_common to oldnames and ntdll ([[Timo Kreuzer]])<br />
* Remove broken _fmode declaration ([[Timo Kreuzer]])<br />
* Remove getopt from mingw lib and put it into it's own static library ([[Timo Kreuzer]])<br />
* change crt="dll" to crt="static" for the mingw startup libs, to avoid things like importing from itself. ([[Timo Kreuzer]])<br />
* Add a temporary hack to fix amd64 compilation for some modules. ([[Timo Kreuzer]])<br />
<br />
=== CMLIB ===<br />
* Just use UNIMPLEMENTED. ([[sir_richard]])<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
<br />
===== MMENT4 =====<br />
* Remove a ";" after an if (), that makes no sense and caused GetNt4SoundDeviceCapabilities to always return without doing anything. ([[Timo Kreuzer]])<br />
* Fix warning about uninitialized variable ([[Timo Kreuzer]])<br />
<br />
=== FSLIB ===<br />
<br />
==== VFATLIB ====<br />
* Get rid of the hard-coded sector size as large sector (4KB) harddisks are already available. ([[Eric Kohl]])<br />
* When a partition is formatted, choose the FAT type according to the partition type. The size of the partition does not matter here as it is up to the caller to set the right partition type according to its size. ([[Eric Kohl]])<br />
<br />
=== SDK ===<br />
* Add missing IIDs to UUID. ([[Aleksey Bragin]])<br />
* Implement PNP_HwProfFlags. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
<br />
== MEDIA ==<br />
* Add a device description for PNP0A00 ([[Cameron Gutman]])<br />
* Fix the class GUID so devices appear in the correct category in device manager ([[Cameron Gutman]])<br />
* Remove trailing spaces on some device descriptions ([[Cameron Gutman]])<br />
* Remove the "(UniATA)" at the end of some device descriptions ([[Cameron Gutman]])<br />
* Add -fms-extensions for arm build ([[Timo Kreuzer]])<br />
* Add _NT_TIB_KPCR to compensate for a missing NT_TIB (hackfix) ([[Timo Kreuzer]])<br />
* add KERNEL_STACK_SIZE & co for arm ([[Timo Kreuzer]])<br />
* Add missing KeGetCurrentThread prototype for arm ([[Timo Kreuzer]])<br />
* define INTERLOCKED_RESULT for X86 only ([[Timo Kreuzer]])<br />
* Add _CONTEXT and _EXCEPTION_RECORD forward declarations ([[Timo Kreuzer]])<br />
* remove scsiport from arm build ([[Timo Kreuzer]])<br />
* Compile scsiport.c for freeldr only on x86 builds ([[Timo Kreuzer]])<br />
* revert r46742 ([[Timo Kreuzer]])<br />
* Reenable isapnp ([[Cameron Gutman]])<br />
* Comment out the service installation for VBE and VGA so the configuration set in first-stage won't get overwritten ([[Cameron Gutman]])<br />
* Nasty graphical glitches still remain in VGA mode ([[Cameron Gutman]])<br />
* Fixes bug 2073 and bug 4192 ([[Cameron Gutman]])<br />
* Add 'PortSubClass' values for serial and parallel ports. ([[Eric Kohl]])<br />
<br />
== NTOSKRNL ==<br />
* Implement basic Headless support in the kernel. Implement missing InbvPort routines based on WinLdrPort (using cportlib). Add header for Hdl. Terminal initializes now on COM2. Added misisng code to InbvDisplayString to also display on Headless Terminal (requires unimplemented HeadlessDispatch). Next steps are to implement the kernel log buffer, and HeadlessCmdPutString to see boot strings. (Anton)<br />
* Implement CmdPutString command, and add log message types. Kernel version/build, processor, and RAM, now appear on EMS screen (due to InbvDisplayString), as well as loaded drivers. Next steps are to support log entries and a flag to route debug output (a ReactOS-specific feature request). (Anton)<br />
* Fix support for non Headless scenarios as well. (Anton)<br />
<br />
=== KDBG ===<br />
* Fix attaching to processes (registers / backtraces) ([[Timo Kreuzer]])<br />
<br />
==== CSRSRV ====<br />
<br />
=== CSR ===<br />
<br />
== SUBSYSTEMS ==<br />
* Mostly moved all the current CSRSS code into CSRSRV, with some very minor changes to get it workking. ([[sir_richard]])<br />
* Add some more code from Alex's CSRSRV, such as thread dereferencing/deallocation, hacked to work. ([[sir_richard]])<br />
* Make CsrTerminateProcess destroy each CSR thread in that process, otherwise we were always leaking a handle, so processes never died. Because of this, primary tokens would remain "in use", and when umpnpmgr attempted to do a "Create Process as User" for the second+ time, the call would fail since the token from the first process was still around. This fixed that regression from the mailing list. ([[sir_richard]])<br />
* Move the new process/thread management functions into new, dedicated files. Export some of the functions, so that win32csr can use them by linking to csrsrv. Last change needed for barebones user-mode shutdown support. ([[sir_richard]])<br />
<br />
=== NTVDM ===<br />
* Only compile on x86 builds ([[Timo Kreuzer]])<br />
* Load resource strings in Unicode when printing them in Unicode ([[Gregor Schneider]])<br />
* Update README.WINE. ([[Aleksey Bragin]])<br />
<br />
==== CSRSS ====<br />
<br />
=== WIN32 ===<br />
<br />
===== WIN32CSR =====<br />
* Rewrite harderror handling. ([[Timo Kreuzer]])<br />
* 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. ([[Timo Kreuzer]])<br />
* Add primitive resizing support and automatic scrolling support (Adam; {{bug|2622}})<br />
* Get rid of dynamic "LineBuffer": it wasn't being resized properly in all cases, causing corruption of Win32CsrApiHeap. Replaced with fixed buffer (painting a line with multiple TextOutW calls if necessary). ([[Jeffrey Morlan]])<br />
* Fix display of harderror message box for STATUS_UNHANDLED_EXCEPTION ([[Timo Kreuzer]])<br />
* Fix a FIXME: convert ASCII char to Unicode char with input codepage ([[Gregor Schneider]])<br />
* Rename define parameters to make sense (prefix s - source, d - destination) ([[Gregor Schneider]])<br />
* Assign remaining services to the LocalSystem account. ([[Eric Kohl]])<br />
* Silence a debugprint ([[Timo Kreuzer]])<br />
* Make CsrFreeConsole close the process's console handles. ([[Jeffrey Morlan]])<br />
* Clean up the debris from r47314: Removed some redundant code, reorganized headers, fixed win32csr.rbuild indentation ([[Jeffrey Morlan]])<br />
* Protect ProcessData->Console with the HandleTableLock. ([[Jeffrey Morlan]])<br />
* Simplify locking: having a lock for each screen buffer is overkill since most programs only use one screen buffer at a time. (besides, almost all APIs were taking the console lock anyway) Reduce to just having one lock for a console. ([[Jeffrey Morlan]])<br />
* Instead of keeping track of how many references a screen buffer has, keep track of handles only. When all handles to a screen buffer are closed, it should be deleted even if it's the active buffer (not yet implemented). ([[Jeffrey Morlan]])<br />
* Delete even the active screen buffer when all handles are closed. Fixes a winetest. ([[Jeffrey Morlan]])<br />
* Implement FILE_SHARE_* flags for console handles. Fixes some more winetests. ([[Jeffrey Morlan]])<br />
* Make consistent use of RECT/SMALL_RECT structures: a RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive; a SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive. ([[Jeffrey Morlan]])<br />
* Allow text selections outside of the visible window ([[Jeffrey Morlan]])<br />
* Implement GetConsoleSelectionInfo ([[Jeffrey Morlan]])<br />
* fix tuiconsole ([[Jeffrey Morlan]])<br />
* Revert 47310. Please find a way to enable kmtest only when building the testing cd image, not the installation/live one. ([[Aleksey Bragin]])<br />
* Implement console pausing. [Bug 4739] ([[Jeffrey Morlan]])<br />
* Split up excessively large and disorganized conio.c into 3 separate files: one for input-related functions, one for output-related functions, and one for general/miscellaneous functions. ([[Jeffrey Morlan]])<br />
* Consistently store console input events internally as unicode. ([[Jeffrey Morlan]])<br />
* Console input simplification: ([[Jeffrey Morlan]])<br />
* Put code for processing events for line input in one place, instead of duplicating it everywhere ([[Jeffrey Morlan]])<br />
* Remove "Fake" and "NotChar" fields from ConsoleInput struct. ConioProcessKey didn't actually add Fake events; they were used for the \n when converting \r to \r\n, but this is better done by the line input code. ([[Jeffrey Morlan]])<br />
* Build an input line completely on the server side; this will make it practical to add history and more sophisticated editing later ([[Jeffrey Morlan]])<br />
* Implement some basic line editing capability ([[Jeffrey Morlan]])<br />
* Implement basic support for history in line editing ([[Jeffrey Morlan]])<br />
* Reorganize code to reflect that line input is more coupled to history than it is to character input ([[Jeffrey Morlan]])<br />
* Fix array subscript out of bounds error ([[Timo Kreuzer]])<br />
* Fix a cast ([[Timo Kreuzer]])<br />
* Delete ppcdevtree. ([[Amine Khaldi]])<br />
<br />
== TOOLS ==<br />
<br />
=== GENINC ===<br />
* Add some more constants ([[Timo Kreuzer]])<br />
<br />
=== MKHIVE ===<br />
* Use newinflib instead of inflib. ([[Eric Kohl]])<br />
* Add RegDeleteKeyW stub. ([[Eric Kohl]])<br />
* Convert registry generation code from ANSI APIs to UNICODE APIs. ([[Eric Kohl]])<br />
* wcsicmp -> _wcsicmp, should fix buildbot build ([[Gregor Schneider]])<br />
* Fix a buggy format string (%s --> %S). ([[Eric Kohl]])<br />
* Add _wcsicmp to rtl.c. ([[Eric Kohl]])<br />
* Partial revert of r47019 because mkhive failed on Linux machines. ([[Eric Kohl]])<br />
* Comment out an ASSERT that gets trigged frequently. ([[Timo Kreuzer]]; {{bug|5320}})<br />
* Revert remaining changes of r47019. ([[Eric Kohl]])<br />
* Add RegDeleteKeyW stub. ([[Eric Kohl]])<br />
* Implement RegDeleteKeyA so that it calls RegDeleteKeyW. ([[Eric Kohl]])<br />
* Check parameters before accessing them, update usage information ([[Gregor Schneider]])<br />
* Active the planned cleanup function to motivate people to actually free resources: mkhive currently leaks ~500kb of memory after a usual run ([[Gregor Schneider]])<br />
* Improve debug print ([[Gregor Schneider]])<br />
<br />
== Uncategorized ==<br />
* rapps ([[Daniel Reimer]])<br />
** Update openoffice 2.4 Links to a new and working mirror<br />
** Add Opera 9 to rapps.<br />
** Update OOo to 3.2.1 and the last time... fix the FF2 link.<br />
** Update rapps database to most recent Versions of all apps.<br />
** Add the non yet working FF 3.6 and AbiWord 2.8.5 to rapps to simplify testing.<br />
** Updated VB6, VC2005, VC2008 links according to winetricks.<br />
** Update the rapps download list.<br />
** Fix the SeaMonkey Mirror.<br />
** Try to fix FF2 Download.<br />
** Add Visual C++ 2008 SP1 runtime to rapps and rename the others correctly.<br />
** Added Fox Audio Player to rapps and some more fixes. (Igor Paliychuk, myself)<br />
** Update the rapps Database to a valid FireFox Link once more.<br />
** Bug 5072: PATCH: Add ReMooD to ReactOS Application Downloader. (by GhostlyDeath)<br />
** Update Rapps Links and add the two RosBE Addons.<br />
** Update some more apps. (OpenOffice 3.2.0, SciTE 2.03)<br />
** DosBox to 0.74, Mirror of FireFox 2, IrfanView to 4.27, RosBE to 1.5.1, uTorrent to 2.0.2.<br />
** Update FireFox, KDE, MirandaIM, Mono, Opera, RosBE64, SeaMonkey, ThunderBird, uTorrent, VLC in rapps.<br />
** Added comctl32.ocx, KDEWin, Mono, .net, Media Player Classic, Python, Steam, Tahoma Font and Windows Media Encoder 9 to rapps.<br />
** Update VLC to 1.1.0<br />
** Add SuperFinder XT to rapps.<br />
<br />
* media/inf ([[Daniel Reimer]])<br />
** Add Cyrix, Pentium MMX, Pro, II, M, 4, Core Solo/Duo/Extreme/i*, Atom, AMD K6, K6-3, Via Nehemiah, Esther, Nano and a big bunch of Family 15 (1st gen Athlon64, Turion64, Sempron Series) AMD CPUs to cpu.inf <br />
** Generalize some lines to be used for a whole bunch of models. As long as we don't have a CPU driver I will keep it that way its now, because now it at least shows a approximate CPU Title in Devmgr.<br />
** Add more HIDs for other CPUs and Manufacturers like VIA and AMD into cpu.inf to make it show the real CPU name in the Device Manager. This does not work yet, because our ACPI always returns the Default CPU HID right now.<br />
<br />
* wine ([[Daniel Reimer]])<br />
** Sync rpcrt4 to Wine 1.2rc6<br />
** Sync winemp3.acm with Wine HEAD. This one uses libmpg123 which was added in Version 1.12.3. Thx to Timo Kreuzer for telling me the magics of the crt="dll" switch.<br />
** Update the banner.bmp in credui<br />
** Fix setupapi setupcab winetest. (Samuel Serapion)<br />
** Another updated wine header to fix some synched winetests' build process<br />
** Update WIDL to Wine 1.2 rc6 + sync/modify two idl files making problems with the new widl. (Samuel Serapion)<br />
** update wine's unicode app to 1.2rc6. (Samuel Serapion)<br />
** Update the d3dx9_XX.dll files to the recent wine release version<br />
** Sync sccbase, slbcsp, usp10, wldap32, wuapi and xinput1_3 to Wine 1.1.40<br />
** Remove Esperanto and Walon languages from comctl32, comdlg32, mpr, msi, shlwapi, wininet<br />
<br />
* piperead ([[Daniel Reimer]])<br />
** Update piperead to Version 0.3 (Jan Roeloffzen)<br />
** Updated piperead (Jan Roeloffzen) Bug 5146<br />
<br />
* Update some psdk Headers ([[Daniel Reimer]])<br />
* Sync format_msg from kernel32 (Samuel Serapion) ([[Daniel Reimer]])<br />
is already added by "mingw_common". ([[Daniel Reimer]])<br />
* Some more psdk updates needed for winetests. ([[Daniel Reimer]])<br />
* update kernel32 nls files to be able to build it with the new unicode tool. ([[Daniel Reimer]])<br />
* convert the cmd rc files to utf-8 to fix building. ([[Daniel Reimer]])<br />
* Experimental try to get Itunes Setup start. By Samuel Serapion ([[Daniel Reimer]])<br />
* XML Compliance Patch for the RBUILD Files. By Samuel Serapion ([[Daniel Reimer]])<br />
<br />
* Bug 5501: Add Wing32 support by Carlo Bramini<br />
* user32: DrawText: CJK and Thai line-wrapping (Katayama Hirofumi)<br />
* appwiz: check if path is valid (Katayama Hirofumi)<br />
<br />
* The big RosBE 1.5 compatibility patch. You will need RosBE 1.5 from this point! ([[Colin Finck]]; {{bug|4810}})<br />
** Set the minimum GCC version to 4.4.0 and minimum Binutils version to 20091016.<br />
** Remove the -fno-unit-at-a-time hacks.<br />
** Remove dgorbachev's temporary hacks for user-mode C++ applications.<br />
** Merge ntoskrnl's "precomp.h" and "ntoskrnl.h" again, the PCH issues have been fixed.<br />
** Use our "ofmt_stub.a" to be compatible with newer MinGW Runtime versions.<br />
** Use LD's new -exclude-all-symbols option to not auto-export all symbols in case no DEF file or __declspec(dllexport) was specified.<br />
** We used to patch our LD version to work around this problem.<br />
** Use LD's --start-group and --end-group parameters to allow a more flexible linking order.<br />
** Use GCC's -fno-set-stack-executable for amd64 and i386 targets to disable adding the __enable_execute_stack code.<br />
** Change the makefile's name to "makefile-$(ARCH).auto" for all architectures.<br />
** Remove some -Wno-error flags.<br />
<br />
* This ancient version didn't even receive the GCC 4.1 compatibility update from years ago, so it's safe to remove it. ([[Colin Finck]])<br />
* Put Vizzini's "csq.h" in the Public Domain with permission from the author: ([[Colin Finck]])<br />
<br />
* Make KeFlushProcessTb work. Since no MPCore support, CPU TLB is flushed instead. Maybe should use ASIDs later. ([[evb]])<br />
* Fix wrong initialization of different modes and stacks. ([[evb]])<br />
* NANDFlash tool for building OMAP3 FLASH Images for DevBoard and QEMU-Maemo. ([[evb]])<br />
* ARM LLB for OMAP3/Beagle (test with QEMU-Maemo) and Versatile (test with QEMU). ([[evb]])<br />
* Boots to blue screen with white text to indicate checkpoint. ([[evb]])<br />
* Enable serial output. ([[evb]])<br />
* Forgot to change SARCH back to Versatile. ([[evb]])<br />
* Plugin support for booting FreeLDR when used as initrd on QEMU command-line. ([[evb]])<br />
* Change ARM loading architecture to match EFI/Firmware model. LLB provides "firmware" routines, FreeLDR obtains "firmware" routines from the ARM block, and sets them as the Machine VTable. All board-specific FreeLDR code gone now. ([[evb]])<br />
* Start work on UI. Serial output is now only for debugging, not usual console. ([[evb]])<br />
* Need PL045 Keyboard code to handle KbHit/GetCh. ([[evb]])<br />
* Have PL011 code ready for MachVideo routines, coming soon... ([[evb]])<br />
* Start stub of environment functions. ([[evb]])<br />
* Add config interface start (PciReadWriteConfigSpace, PciReadSlotConfig) ([[evb]])<br />
* Add PDO_EXTENSION structure and PCI_FUNCTION_RESOURCES, now delete #if0 in old code since PDO_EXTENSION is now exist defintion ([[evb]])<br />
* Add ID Class/Subclass to description functions (PciGetDeviceDescriptionMessage, PciGetDescriptionMessage), use pciclass.mc from sir_richard ([[evb]])<br />
* New debug: PciDebugDumpCommonConfig ([[evb]])<br />
* Implement IRP_MN_QUERY_DEVICE_RELATIONS with PciFdoIrpQueryDeviceRelations and PciQueryDeviceRelations ([[evb]])<br />
* Begin PciScanBus, now just dump all found device with no more work (0 QDR return) ([[evb]])<br />
* Support PCI device resource dicsovery for limit and current now, so bridge + device BAR functionning ([[evb]])<br />
* PciScanBus second pass enabled: PciProcessBus, most stubs now until VGA/ISA system tested ([[evb]])<br />
* PciClassifyDeviceType implement as helper function ([[evb]])<br />
* PCI Enumeration 100% complete! ([[evb]])<br />
* Add new unified VGA/VBE miniport driver. Based on NT4 DDK Cirrus Miniport Driver Sample with my modifications (marked with // eVb) to change Cirrus parts to VGA parts if needed. Also add VBE suppor which is not in Cirrus driver, but exists in Windows VGA miniport. ([[evb]])<br />
* Work-in-progress, can boot to GUI with VMWare, but banked modes not yet supported, no VDM, no Mode-X, etc... ([[evb]])<br />
* Thanks to sir_richard for help with headers, comments and other English stuff. ([[evb]])<br />
* Driver is only built, not yet used. ([[evb]])<br />
* NOTE: Some parts of BootVid seem to use functions copied from this sample (VgaInterpretCmdStream) but under "GPL", and also buggy (Chain4 Mode test will not work on most cards and VgaIsPresent == FALSE). Someone should fix. ([[evb]])<br />
* New Framebuffer (Linear) Display Driver to support new unified VGA/VBE miniport. Based on NT4 DDK Sample, with modifications by me (marked with // eVb) to support new functionality needed for 2003-era driver. ([[evb]])<br />
* Also used Virtual Box Display Driver as sample, which is based on "GPL" Windows 2003 DDK sample driver. Could not use 2003 DDK sample directly because of licensing issues, and feel unsafe about VirtualBox "GPL" driver that says "PATENTED AND ONLY FOR USE IN MICROSOFT PRODUCTS". ([[evb]])<br />
* Note that old driver was based off DDK sample too, but with variables renamed (some comments identical!) and code reformatted, then marked as "GPL". This is not very good way to share/use code... one day someone can teach you lesson. ([[evb]])<br />
* Remove bits saying dithering supported, since code patented and removed (also, ReactOS win32k not support dithering calls!). ([[evb]])<br />
* Enable non-OOB mode for Versatile. ([[evb]])<br />
* Enable RAMDISK support in LLB. ([[evb]])<br />
* Build commandline for OS Loader (FreeLDR). ([[evb]])<br />
* Now ready to start loading freeldr.ini ([[evb]])<br />
* Add support for ram disk offset (.IMG file is a RAW image, partition starts later...) ([[evb]])<br />
* Fix ram disk support in FreeLDR, ARC changes had broken support for booting FreeLDR (not just the Windows) from a ram disk. ARM port now initializes ramdisk as an FS device. ([[evb]])<br />
* Fix hardcoded DISKREADBUFFER and FILESYSBUFFER values. On ARM these will be dynamically selected for each board (need to improve this through LLB). ([[evb]])<br />
* Now FreeLDR.ini is read, and crash happens because UI routines are all NULL. ([[evb]])<br />
* Add stubs for video mach functions and update minor to 1.3. ([[evb]])<br />
* Implement some simple video routines. ([[evb]])<br />
* Fix usable RAM not to include loader code and ram disk (up to 32MB). ([[evb]])<br />
* Add GetTime stub, bump version to 1.4. ([[evb]])<br />
* Implement function for drawing character on the screen when request come from firmware. ([[evb]])<br />
* Tui.c assumes all screens are x86 VGA Consoles with 8-bit character and 8-bit attribute. On ARM, call Mach function to draw character instead of drawing into ScreenMemory off-screen buffer. ([[evb]])<br />
* FreeLDR menu now appears, need GetTime for counter. ([[evb]])<br />
* Add PL031 RTC code for Versatile. ([[evb]])<br />
* Add RTC time to TimeInfo convert. ([[evb]])<br />
* Implement FirmWare GetTime function. Countdown in FreeLDR now working. ([[evb]])<br />
* Switch to bootvid 8x13 font (closer to PC/VGA experience). ([[evb]])<br />
* Fix LlbFwVideoGetDisplaySize return characters X/Y, not pixels. Now "Press F8 for advanced menu" shows". ([[evb]])<br />
* Refactor keyboard support to match serial. Now reading a key and waiting for a key are two things. ([[evb]])<br />
* Implement KbHit Firmware routine. ([[evb]])<br />
* It is now possible to interact with FreeLDR using the keyboard. ([[evb]])<br />
* Video Miniport driver not use ntddk.h, but miniport.h. But, Reactos miniport.h is empty! Add some definitions to miniport.h to get simple drivers to compile, so now can remove ntddk.h from VGA/VBE/XBOX miniports! ([[evb]])<br />
* Video Port driver should not use either, but too many changes required. So, define __BROKEN__ to allow ntddk + miniport together. ([[evb]])<br />
* Add VideoPortIsNoVesa API definition. Not implemented in ReactOS, used to disable VESA in F8 "Standard VGA Mode". Should implement for VGA-only support on broken VESA machine, and for test. ([[evb]])<br />
* Fix includes in richard's driver. ([[evb]])<br />
* Fix wrong calling to VideoPortCreateEvent. He got parameters all mixed up~ ([[evb]])<br />
* Begin implement full PCI Bus Driver. code by me comments by sir_richard to avoid Engrish ([[evb]])<br />
* DriverEntry full 100% implemented, ACPI WatchDog detect, PCI IRQ Routing detect, PCI errata/hackflag detect (PciGetDebugPorts not support, need PCI Debug Device to test) ([[evb]])<br />
* Native (S)ATA, PCI BIOS Resource Lock, System Errata/Hackflag also is detect ([[evb]])<br />
* HAL Hoooking enabled, callbacks stub ([[evb]])<br />
* Stub PnP Interfaces: PciAddDevice, PciDriverUnload, PciDispatchIrp ([[evb]])<br />
* PCI utility routines: PciUnicodeStringStrStr, PciStringToUSHORT, PciIsSuiteVersion, PciIsDatacenter, PciOpenKey, PciGetRegistryValue, PciBuildDefaultExclusionList done ([[evb]])<br />
* PCI Verifier Support for future: PciVerifierInit/PciVerifierProfileChangeCallback (stub) ([[evb]])<br />
* Thank you for much patience~ This 1200 first codes, have 12000 codes more to come!~~ ([[evb]])<br />
* More implement of PciScanBus, now read hack flags from table (PciGetHAckFlags), and check for critical device (PciIsCriticalDeviceClass) and VGA device on PCI bridge ([[evb]])<br />
* Do check for skipping some function (double decker ghost, Intel Alder SMP Pentium Pro machine, hacl flag, more), PciSkipThisfunction ([[evb]])<br />
* Do check for PDO already exist for function (PciFindPdoByFunction) ([[evb]])<br />
* Finish impement PciFindParentPciFdoExtension ([[evb]])<br />
* Implement PciPdoCreate and add all PDO IRP stub functions, set dispatch table for major/minor command, add PciIrpInvalidDeviceRequest ([[evb]])<br />
* Fix bug in PciFindPdoByFunction should check device slot info too ([[evb]])<br />
* Add more enumeration codes in PciScanBus to create PDO ([[evb]])<br />
* PCI_HACK_FAKE_CLASS_CODE support ([[evb]])<br />
* Build PDO extension, set ready for PnP manger, now 41 QDR returned ([[evb]])<br />
* Add PCI/CardBus Bridge to list ([[evb]])<br />
* Detect bridge/IDE controller with no power down support, hack for Intel 82375 PCI to EISA bridge for Alpha thanks to sir_richard ([[evb]])<br />
* QUERY_ID is sent to PDOs now! ([[evb]])<br />
* More PciScanBus codes now to check saved PCI BIOS config header saved in registry (PciGetBiosConfig, PciSaveBiosConfig) and support load save compare (PcipIsSameDevice) if change in interrupt line ([[evb]])<br />
* Also for interrupt line use HAL to get parent bus IRQ# if device connected (PciGetAdjustedInterruptLine) ([[evb]])<br />
* For PCI debug HW PciIsDeviceOnDebugPath to detect, but have not real machine with this kind of device to test ([[evb]])<br />
* Support PCI_HACK_NO_SUBSYSTEM and PCI_HACK_NO_SUBSYSTEM/REVISION_AFTER_D3 for when compareing ([[evb]])<br />
* New config function required PciWriteDeviceConfig to update IRQ line from BIOS registry data ([[evb]])<br />
* Save initial, current Command enables to PDO extension, interrupt data too ([[evb]])<br />
* Can't sleep so write more source codes! add scan bus functions to get power caps (PciGetEnhancedCapabilities) and AGP caps, use PciReadDeviceCapability util function, now can get wake levels, PCI power state plus target AGP ID. Now can find PCI Device that can't sleep neither! Ha-ha! ([[evb]])<br />
* Support PCI_HACK_NO_PM_CAPS, PCI_HACK_PRESERVE_COMMAND, PCI_HACK_DONT_DISABLE_DECOES ([[evb]])<br />
* Add scan bus function to set power for PCI, for now to power up (PciSetPowerManagedDevicePowerState), with support for device that is critical/broken (PciCanDisableDecodes) ([[evb]])<br />
* Check spec-correct with PciStallForPowerChange after define PciPowerDelayTable for D0<->D3 crossmatrix spec timings (add PciReadDeviceConfig for support) ([[evb]])<br />
* If bad spec timing use PCI verifier support (PciVerifierRetrieveFailureData) + STATUS_DEVICE_PROTOCOL_ERROR ([[evb]])<br />
* Add PciVerifierFailureTable with all failure type ([[evb]])<br />
* Almost the time for resource discovery of BARs! ([[evb]])<br />
* Added support IOCTRL_QUERY_PUBLIC_ACCESS_RANGES, IOCTRL_SET_PALETTE_REGISTERS, IOCTRL_QUERY_CURRENT_MODE, used by test Standard VGA-only display driver. ([[evb]])<br />
* Code from NT4 DDK Cirrus miniport with some mods by me. ([[evb]])<br />
* Missing PCI_BUS_DRIVER_INTERNAL added to bugcodes. Thx for sir_richard to show me how to add. ([[evb]])<br />
* Implement Root Bus FDO AddDevice codes, get boot config, connect to HAL or ACPI config handlers (PciQueryForPciBusInterface, PciGetConfigHandlers), read BUS FDO hack flag, get _HPP HotPlug PCI ACPI data and initialize arbiter support. ([[evb]])<br />
* PciGetHotPlugParameters work but no PCI HotPlug support on my machines, so cannot test ACPI data, that part stub now ([[evb]])<br />
* Add PciFdoDispatchTable, PciFdoDispatchPnpTable, PciFdoDispatchPowerTable but all stub to PciIrpNotSupported however set correct IRP Dispatch Style for the IRPS ([[evb]])<br />
* Arbiter support in PciInitializeARbiters done, but PciInterfaces array is NULL (stub) at moment ([[evb]])<br />
* Add PCI_SIGNATURE, PCI_STATE, PCI_DISAPTCH_STYLE type, add PciInitializeState to begin the state support ([[evb]])<br />
* Add structure for PCI_FDO_EXTENSION, PCI_SECONDARY_EXTENSION, PCI_INTERFACE, PCI_ARBITER_INSTANCE, PCI_DISPATCH_TABLE ([[evb]])<br />
* PCI utility functions added: PciFindParentPciFdoExtension, PciInsertEntryAtTail, PciInsertEntryAtHead, PcipLinkSecondaryExtension, PciGetDeviceProperty, PciSendIoctl ([[evb]])<br />
* Need sir_richard to add arbiter.h header to define ARBITER_INSTANCE for finish support ([[evb]])<br />
* This 1000 more codes done now~ ([[evb]])<br />
* Implemented IRP dispatch to work in new PCI driver (PciDispatchIrp), fill out FDO IRP handlers which all stubs now, make up/down-call work (PciPassIrpFromFdoToPdo, PciPassDownIrp) ([[evb]])<br />
* Added the helper debug routines ([[evb]])<br />
* PCI driver receive IRP_QUERY_INTERFACE now and hit stub ([[evb]])<br />
* Fix for code to handle IRP dispatching when unrecognized IRP (Thanks you sir_richard) ([[evb]])<br />
* Add FDO IRP_MN_QUERY_INTERFACE support (it calls PciQueryInterface) ([[evb]])<br />
* Add all PCI interface descriptor: PciLocationInterface (GUID_PNP_LOCATION_INTERFACE), PciPmeInterface (GUID_PCI_PME_INTERFACE), PciCardbusPrivateInterface (GUID_PCI_CARDBUS_INTERFACE_PRIVATE), PciLegacyDeviceDetectionInterface (GUID_LEGACY_DEVICE_DETECTION_STANDARD), AgpTargetInterface (GUID_AGP_TARGET_BUS_INTERFACE_STANDARD), PciRoutingInterface (GUID_INT_ROUTE_INTERFACE_STANDARD), BusHandlerInterface (GUID_BUS_INTERFACE_STANDARD) and stub initializer and constructor. ([[evb]])<br />
* Add missing devhere.c interface file ([[evb]])<br />
* Add all PCI arbiter descritptor: ArbiterInterfaceBusNumber, ArbiterInterfaceMemory, ArbiterInterfaceIo. Write constructor stub but not handled ArbitersInitialized == TRUE ([[evb]])<br />
* Also add last-resort PCI interface: TranslatorInterfaceInterrupt (GUID_TRANSLATOR_INTERFACE_STANDARD) and part implement tranirq_Constructor ([[evb]])<br />
* Add PciQueryInterface to find correct FDO/PDO/ROOT interface for a request and call interface constructor ([[evb]])<br />
* Fix interface signatures, fix interface constructor type and PCI_INTERFACE, add interface flags (Thanks sir_richard) ([[evb]])<br />
* Fix Aribtriter code (Thanks sir_richard) ([[evb]])<br />
* Now another 1200 codes added, soon time for enumeration code! ([[evb]])<br />
* IRP_MN_START_DEVICE implement for ROOT FDO (PciFdoStartDevice) ([[evb]])<br />
* PciInitializeArbiterRanges implement to scan arbiter not yet construct since Arb library missing ([[evb]])<br />
* Add PCI state machine (PciBeginStateTransition, PciCancelStateTransition, PciCommitStateTransition) andtransition array (PnpStateTransitionArray) to check if valid ([[evb]])<br />
* Now IRP_MN_QUERY_DEVICE_RELATIONS sent to ROOT FDO means time to enumerate bus! ([[evb]])<br />
* Add all pci bridge control function (PciBridgeIoBase, PciBridgeIoLimit, PciBridgeMemoryBase, PciBridgeMemoryLimit, PciBridgePrefetchMemoryBase, PciBridgePrefetchMemoryLimit, PciBridgeMemoryWorstCasealignment, PciBridgeIsPositiveDecode, PciBridgeIsSubtractiveDecode) ([[evb]])<br />
* More support ICH0/1/2/3/4 hub ([[evb]])<br />
* Add all PCI2PCI bridge limit/current resource codes (PPBridge_*), now is BAR setup okay, and Device_* must be implement ([[evb]])<br />
* Support ISA+VGA legacy decode, 20+64-bit decode, ROM BAR, prefetch BAR ([[evb]])<br />
* Add support for PnP IRP to PDO: IRP_MN_QUERY_BUS_INFORMATION (PciQueryBusInformation), IRP_MN_QUERY_ID (PciQueryId), IRP_MN_QUERY_DEVICE_TEXT (PciQueryDeviceText), IRP_MN_QUERY_CAPABILITIES (PciQueryCapabilities), IRP_MN_QUERY_DEVICE_RELATIONS (PciQueryTargetDeviceRelations implement, PciQueryEjectionRelations, stub) ([[evb]])<br />
* Stub support for PnP IRP to PDO: IRP_MN_QUERY_RESOURCE_REQUIREMENTS (PciQueryRequirements), IRP_MN_QUERY_RESOURCES(PciQueryResources) ([[evb]])<br />
* Add support for PnP IRP to FDO: IRP_MN_QUERY_CAPABILITIES (handle in PciFdoIrpQueryDeviceCapabilities) ([[evb]])<br />
* Build device capability UI number (PciDetermineSlotNumber), use PIR$ (seem support broken, need to check loader) or device property for bus not root ([[evb]])<br />
* Use parent attachee device and this PDO for build device/system wake states, latency, device/system power mappings ([[evb]])<br />
* PCI-ID manage support: PciInitIdBuffer, PciIdPrintf, PciIdPrintfAppend ([[evb]])<br />
* Debug helper: PciDebugDumpQueryCapabilities ([[evb]])<br />
* Thanks richard for advise + beer ([[evb]])<br />
* PCI-X driver now pass 10000 codes lines! ([[evb]])<br />
* IRP_MN_QUERY_RESOURCES support for PDO (PciQueryResources, PciAllocateCmResourceList), now remain IRP_MN_QUERY_RESOURCE_REQUIREMENTS to last device stack interogration from PNPMGR ([[evb]])<br />
* IRP_MN_QUERY_RESOURCE_REQUIREMENTS half support now, PciQueryRequirements, PciAllocateIoRequrementsList, full implement, but PciBuildRequirementsList return 0 always for now ([[evb]])<br />
* Debug helpers: PciDebugPrintIoResReqList, PciDebugPrintIoResource, PciDebugCmResourceTypeToText ([[evb]])<br />
* Now hit assert Assertion '(DeviceNode->Flags & DNF_ADDED)' failed at ntoskrnl/io/pnpmgr/pnpmgr.c line 201, too night to debug, maybe tomorow ([[evb]])<br />
* Change NANDFlash again for Versatile support. Now the LLB and OS Loader are created in one binary blob (loaded with -kernel), while the RAMDISK is loaded with -initrd. ([[evb]])<br />
* Now the only complication is that RAMDISK loaded at 0x80000 which will conflict with the 0x800000 range where kernel loads. Could move RAMDISK in code through LLB, but that would be very expensive (shift by 16MB up). Instead, NANDflash creates ramdisk image starting at offset 16MB. This way, emulator thinks it's loading at 0x80000, but actually loads at 0x1800000. Would be better if QEMU not hardcoded the INITRD_LOAD_ADDR... ([[evb]])<br />
* Define memory map structure for Versatile board/QEMU and send to OS Loader. ([[evb]])<br />
* Many hack removed. ([[evb]])<br />
* Better efficency use of memory layout. ([[evb]])<br />
* Region at 0x800000 now available for FreeLDR use to load kernel files. ([[evb]])<br />
* Implement simple ArmDiskNormalizeSystemPath so boot is allowed to happen. ([[evb]])<br />
* Use better stack address as defined in memory map. ([[evb]])<br />
* Now FreeLDR loads all files correctly from disk and is ready to jump to kernel. ARMv5 paging code must be rewritten before that can happen. ([[evb]])<br />
* Reading MBR from RAMDISK does not work since RAMDISK starts at BootSector (rdoffset) and disk sector functions are NULL. Build bogus signature/checksum for now, unless MBR really needed later. ([[evb]])<br />
* Now FreeLDR crashes no more and arrives at FrLdrStartup to boot kernel and setup paging. ([[evb]])<br />
* Make boot.s just stub to force load address, since ARM LLB already does setup. Will get rid of later. ([[evb]])<br />
* Get rid of all .pagedata stuff from boot.s. Now define simpler static page tables. Will probably get rid of later. ([[evb]])<br />
* Fix memory map to include framebuffer, had forgotten about it. Moved framebuffer to the nearest hole found. It happens to be 0xA0000, nice coincidence (matches x86!). ([[evb]])<br />
* Switch to nicer 8x16 font instead of 8x13. Now FreeLDR UI looks 99% identical to real PC. ([[evb]])<br />
* Start writing new ARMv6 Paging Code. Enable extended page tables and access bit, redefine structures, only for OS Loader for now. ([[evb]])<br />
* Identity map low-memory 1MB and MMIO 2MB space at 0x10000000 for Versatile. Need to make this board-specific later. ([[evb]])<br />
* Need to investigate sharing code with WinLDR. ([[evb]])<br />
* MMU enabled and Printf/LCD output works!. ([[evb]])<br />
* Fix text output ([[evb]])<br />
* Allow for more than just one parameter on the bootROM command line (sepearate with commas). ([[evb]])<br />
* Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets. ([[evb]])<br />
* Last code in PciScanBus: call to PciGetfunctionLimits now implement (call PcipGetfunctionLimits if PciSkipThisFunction say no) ([[evb]])<br />
* PcipGetfunctionLimits support PCI_HACK_CRITICAL_DEVICE and PCI Debug Device by use IPI code (PciExecuteCriticalSystemRoutine implement) ([[evb]])<br />
* PciConfigurators table define for Device, PCI-to-PCI (PP) Bridge plus CardBus Bridge but all configurator stub now ([[evb]])<br />
* Configurator chain: Init (Massage) -> [WRITE INIT] (PciWriteLimitsAndRestoreCurrent) -> Restore -> SaveLimit -> SaveCurrent ([[evb]])<br />
* Support ExpectedWritebackFailure ([[evb]])<br />
* Fix bug in PciApplyHacks (found by me testing sir_richard code) ([[evb]])<br />
* Implement logical keyboard interface. Converts scan code to ASCII codes (just ok). ([[evb]])<br />
* Implement firmware ConsGetCh based on keyboard interface. ([[evb]])<br />
* Implement KMI (Keyboard & Mouse Interface) PL050 driver for Versatile to init PS/2 and read keyboard scancodes. Can now press ENTER/whatever when FreeLDR gives "Cannot find freeldr.ini" error. ([[evb]])<br />
* Support ATAG Linux/ARMBoot architecture defined-structures. These are used by all ARMBoot-compatible loaders (QEmu, U-boot, etc). ([[evb]])<br />
* Read RAMDisk, RAM, Command Line from ATAGs (use -append boot-device=RAMDISK). ([[evb]])<br />
* Make environment-get function read command-line. ([[evb]])<br />
* Allocate RAM memory structure portably. ([[evb]])<br />
* Validate board info on boot. ([[evb]])<br />
<br />
* shellapi.h ([[Timo Kreuzer]])<br />
** fix inclusion of pshpack / poppack (global and not for _WIN64)<br />
<br />
* DHCPCSVC ([[Cameron Gutman]])<br />
** Move code from dhcp to dhcpcsvc<br />
** Export ServiceMain from dhcpcsvc<br />
** Now our DHCP service is compatible with the Windows architecture<br />
** Remove dhcp from build<br />
<br />
* INFLIB ([[Timo Kreuzer]])<br />
** Merge r36443 from amd64 branch:<br />
** Remove references to Infp Functions that collide with inflib names, call the actual functions instead of making small functions that shared the same parameters and just called into inflib anyway, with no changes whatsoever.<br />
<br />
* NTOSKRNL / RTL ([[Eric Kohl]])<br />
** Implement BreakOnTermination case for NtQueryInformationProcess and NtSetInformationProcess.<br />
** Implement RtlSetProcessIsCritical.<br />
<br />
* rpcndr.h ([[Timo Kreuzer]])<br />
** Add a tag to NDR_SCONTEXT struct. MS headers don't have it, but gcc 4.5.x requires it, because without the tag, the struct would be from an unnamed namespace and can't be shared by different compilation units in C++.<br />
* sdkddkver.h ([[Timo Kreuzer]])<br />
** Add UL suffix to some constants.<br />
* wine/commctrl.h ([[Timo Kreuzer]])<br />
** Don't use #include_next, instead imclude psdk/commctrl.h<br />
* crt ([[Timo Kreuzer]])<br />
** _mingw.h: Help compilation with clang. Patch by Amine Khaldi.<br />
** stdlib.h: Improve definition of __mb_cur_max and related, properly handle _M_CEE_PURE<br />
* DDK ([[Timo Kreuzer]])<br />
** Add a number of PCI related types to ntddk.h<br />
** Revert r47553 because testbot doesn't like it<br />
* WINEMP§.ACM ([[Timo Kreuzer]])<br />
** Define WIN32 to fix compilation for anything else than x86<br />
* NDK ([[Timo Kreuzer]])<br />
** Add missing TEB member for Vista<br />
<br />
* HHCTRL.OCX] ([[Christoph von Wittich]])<br />
* HHCTRL.OCX] ([[Sylvain Petreolle]])<br />
* Fix imm.h inclusion. ([[Amine Khaldi]])<br />
<br />
* WIN32K, USER32 ([[Timo Kreuzer]]; {{bug|2900}})<br />
** Convert the window text string from UNICODE_STRING to LARGE_STRING and fix NtUserCreateWindowEx parameters. We currently still pass UNICODE only LARGE_STRINGs, as the rest of the code in win32k expects this.<br />
** Fixes display of large text windows, like the winzip license.<br />
<br />
* KERNEL32, WIN32CSR ([[Jeffrey Morlan]])<br />
** Implement SetConsoleScreenBufferSize. FAR Manager now works again.<br />
** commit file missing from r47165<br />
** Implement the CREATE_NO_WINDOW flag which creates a console with an invisible window.<br />
** More fixes for console winetest<br />
** BasepInitConsole: Initialize console input EXE name<br />
** Make Get/SetConsoleTitle more compatible with windows; in particular, transfer title via capture buffer to allow for longer titles.<br />
** Tighten up capture buffer validation in win32csr<br />
** Implement console history (note: not too useful yet without any way to recall it)<br />
** Implement APIs GetConsoleCommandHistoryLength, GetConsoleCommandHistory, ExpungeConsoleCommandHistory, SetConsoleNumberOfCommands, GetConsoleHistoryInfo, SetConsoleHistoryInfo.<br />
** Remove stub of obsolete function SetConsoleCommandHistoryMode, which no longer exists in Windows.<br />
** add missing file<br />
** Implement ReadConsoleW's CONSOLE_READCONSOLE_CONTROL structure<br />
** Make pressing Insert during line input work<br />
** Move code for managing console handles from csrsrv to win32csr, where the rest of the console code is. No changes in functionality intended.<br />
** Unify the csrsrv->win32csr callbacks (now numbering 4) into one table to avoid excessive code duplication.<br />
<br />
* ntoskrnl\mm ([[Michael Martin]])<br />
** Fix a continuous loop bug in MiWriteProtectSystemImage.<br />
<br />
* REACTOS.DFF ([[Cameron Gutman]])<br />
** Add kmtest.sys and kmtestassist.sys to bootcd (optional)<br />
** Remove isapnp<br />
* BATTERY.INF ([[Cameron Gutman]])<br />
** Added battery.inf to install battery devices<br />
** Remove the incorrect stub from BatteryClassSystemControl<br />
* TXTSETUP.SIF ([[Cameron Gutman]])<br />
** Add PnP information for isapnp<br />
<br />
* BDAPLGIN, MSDVBNP, MSVIDCTL, BDASUP ([[Johannes Anderwald]])<br />
** Disable building dvb stack untill ks has the required functionality<br />
* WDMAUD.DRV ([[Johannes Anderwald]])<br />
** Fix compilation when using USE_MMIXER_LIB<br />
** Fix compilation when using USE_MMIXER_LIB #2<br />
** Fix initialization of mmixer library<br />
<br />
* ntstrsafe.h] ([[Timo Kreuzer]])<br />
* Fix a number of parameter types (LPSTR/LPCSTR instead of PCHAR, PCCHAR) This is not the same, PCCHAR is a char * not a const char * ([[Timo Kreuzer]])<br />
* CRT ([[Timo Kreuzer]])<br />
** add _mingw_mac.h from ming-w64 and include it into _mingw.h<br />
** Update _CRTIMP definition<br />
** Fix definition of _wctype<br />
** onexit is not _CRTIMP<br />
* MINGW ([[Timo Kreuzer]])<br />
** Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325)<br />
* time.h ([[Timo Kreuzer]])<br />
** Add missing asctime_s and localtime_s, don't include time_s.h anymore<br />
* setjmp.h ([[Timo Kreuzer]])<br />
** Add mingw_getsp as inline function<br />
* reactos.dff ([[Timo Kreuzer]])<br />
** make explorer.exe and ntvdm optional<br />
* dbghelp.h, imagehlp.h ([[Timo Kreuzer]])<br />
** fix LOADED_IMAGE, UpdateDebugInfoFile, UpdateDebugInfoFileEx, ReBaseImage<br />
* WIN32K, WIN32CSR ([[Timo Kreuzer]])<br />
** Get rid of FASTCALL specifier for static functions and functions with no parameters.<br />
* GDI32 ([[Timo Kreuzer]])<br />
** GetTextExtentExPointI and GetTextExtentPointI take an array of glyph indices, not characters. Pass a flag GTEF_INDICES (This is a reactos specific definition and not exactly like on Windows XP, but the real names/values are undocumented and this is the easiest way.) to NtGdiGetTextExtent/NtGdiGetTextExtentExW and handle this flag in TextIntGetTextExtentPoint to account for this.<br />
** Fixes bug 3481<br />
<br />
* MSAFD, PSDK ([[Cameron Gutman]])<br />
** Merge part of r45435<br />
** Merge r48011 from aicom-network-branch<br />
<br />
* winnt.h ([[Timo Kreuzer]])<br />
** Remove definition of UNW_FLAG* constants. They don't belong here.<br />
<br />
* WDMAUD.DRV ([[Johannes Anderwald]])<br />
** Apply changes from mmixer library<br />
** Tested in Vbox with Winamp / ReactOS mplay32<br />
* MMIXER, WDMAUD_KERNEL ([[Johannes Anderwald]])<br />
** Implement retrieving device path<br />
* KSPROXY, MSDVBNP, MSVIDCTL, BDAPLGIN ([[Johannes Anderwald]])<br />
** Implement DllRegisterServer, DllUnregisterServer for those components<br />
** Add msdvbnp, msvidctl to build<br />
** Add msdvbnp, bdaplgin, msvidctl to bootcd<br />
* KSPROXY, MSDVBNP ([[Johannes Anderwald]])<br />
* Remove remaining DebugBreak<br />
* Add debug traces<br />
<br />
* HIVESYS.INF ([[Cameron Gutman]])<br />
** Enable kmtest<br />
<br />
* shellapi.h ([[Gabriel Ilardi]])<br />
** Fix build copy pasta spotted by encoded<br />
<br />
* WINGDI.H ([[Timo Kreuzer]])<br />
** Add missing GetCharWidthI, GetTextExtentExPointI, GetTextExtentPointI<br />
* tchar.h ([[Timo Kreuzer]])<br />
** enable _tcsnlen definition<br />
<br />
* WIN32K, USER32 ([[Jerome Gardou]])<br />
** Get rid of ONEPARAM_ROUTINE_CREATECURICONHANDLE<br />
<br />
* DESK.CPL (Katayama; {{bug|5552}})<br />
** Fix client font in the advanced appearance dialog.<br />
<br />
* winnt.h ([[Timo Kreuzer]])<br />
** Fix definition of KNONVOLATILE_CONTEXT_POINTERS for amd64<br />
<br />
* BDAPLGIN, KSPROXY, MSDVBNP, MSVIDCTL ([[Johannes Anderwald]])<br />
** Register DLLs when ReactOS is installed<br />
<br />
* intrin_x86.h ([[Timo Kreuzer]])<br />
** cast return value of __sync_val_compare_and_swap to make clang happy<br />
** add __cdecl to a number of intrinsics to make them (hopefully) compatible with crt header declarations.<br />
<br />
* WDMAUD.DRV ([[Johannes Anderwald]])<br />
** Cleanup code<br />
** Fix a bug which made the caller assume that a wave handle has already been open.<br />
** define a macro which appends a postfix depending on wether USE_MMIXER_LIB has been defined<br />
<br />
* DESK.CPL ([[Aleksey Bragin]]; {{bug|5620}})<br />
** Katayama Hirofumi <katayama.hirofumi.mz@gmail.com><br />
** Renamed GLOBAL_DATA structures to DATA.<br />
** Added real GLOBAL_DATA in background.c, that manages the background color.<br />
** Resolved conflict of background colors in background.c and appearance.c.<br />
** Fixed drawing the menu in draw.c.<br />
<br />
=== 0 ===<br />
* Fix pointer arithmetics in the gdi batch code (&pTeb->GdiTebBatch.Buffer is a PULONG, but pTeb->GdiTebBatch.Offset is a byte offset) ([[Timo Kreuzer]])<br />
* To prevent this from happening again, refactor the code to use one common routine GdiAllocBatchCommand to do most of the stuff. ([[Timo Kreuzer]])<br />
* Reenable gdi batch for SelectObject ([[Timo Kreuzer]])<br />
* Fixes gdi handle leak, causes some drawing problems in Acrobat reader, but those are less critical and I'll investigate those. ([[Timo Kreuzer]])<br />
<br />
=== _EX ===<br />
* Implement CM_Set_HW_Prof. ([[Eric Kohl]])<br />
* Display CSConfigFlags. ([[Eric Kohl]])<br />
* Assign rpcss to its actual group. ([[Sylvain Petreolle]])<br />
* Fixes rpcss/spooler load order. ([[Sylvain Petreolle]])<br />
* silence wdmaud debug ([[Sylvain Petreolle]])<br />
<br />
=== ADVAPI32_LSASRV ===<br />
* Implement LookupPrivilegeValueW and LsaLookupPrivilegeValue. ([[Eric Kohl]])<br />
* Move lookup code from LookupPrivilegeValueW to LsarLookupPrivilegeValue. ([[Eric Kohl]])<br />
* Implement LookupPrivilegeNameW and LsaLookupPrivilegeName. ([[Eric Kohl]])<br />
* Move lookup code from LookupPrivilegeNameW and LsarLookupPrivilegeValue into a separate file. ([[Eric Kohl]])<br />
* Katayama Hirofumi MZ <katayama DOT hirofumi DOT mz AT gmail DOT com> ([[Matthias Kupfer]]; {{bug|5487}})<br />
* Preperation of quick preview für themes. ([[Matthias Kupfer]]; {{bug|5487}})<br />
* for details. ([[Matthias Kupfer]]; {{bug|5487}})<br />
* unix has no io.h. ([[Sylvain Petreolle]])<br />
* move its include to a _WIN32 block. ([[Sylvain Petreolle]])<br />
* Export LsaLookupPrivilegeName. ([[Eric Kohl]])<br />
* Move mockup code from advapi32 to lsasrv (LsaLookupSids --> LsarLookupSids). ([[Eric Kohl]])<br />
* Make LsaLookupSids call the server function LsarLookupSids. ([[Eric Kohl]])<br />
* LookupAccountNameW: Call LsaLookupNames instead of returning a dummy name. ([[Eric Kohl]])<br />
* Implement LsaLookupNames. Calls LsarLookupNames. ([[Eric Kohl]])<br />
* LsarLookupNames: return dummy names. ([[Eric Kohl]])<br />
* Merge r45430 from amd64-bringup : Add #pragma intrinsic for msvc intrinsics. ([[Amine Khaldi]])<br />
* Fix _InterlockedExchangeAdd16, _InterlockedCompareExchangePointer and _InterlockedExchangePointer intrinsics. ([[Amine Khaldi]])<br />
<br />
=== ARMDDK ===<br />
* Use the same KPCR structure on ARM as on x86. ([[sir_richard]])<br />
* Use the same addresses for KPCR and KUSER_SHARED_DATA on ARM as on x86. On ARM however, since there are no "segments", the KPCR is also mapped in user-mode, read-only, to have a static structure that can point to the current TEB. ([[sir_richard]])<br />
<br />
=== A|W ===<br />
* TODO: Add same checks to IShellLinkW interface and fix IShellLink::GetPath / SetPath / SetIdList / GetIdList logic. ([[Amine Khaldi]])<br />
<br />
=== BASE_SYSTEM_EXPAND ===<br />
* Update expand utility to Wine-1.1.37. Last update happened 7 years ago and since then it was translated into 20 languages. Sorry to all the translators but the preference is given to a working untranslated version rather than a non-working localized one. ([[Aleksey Bragin]]; {{bug|4637}})<br />
* Update README.WINE. ([[Aleksey Bragin]])<br />
<br />
=== BOOTCD_LIVECD ===<br />
* Add -$(ARCH) to non-x86 bootcd and livecd image names. ([[Timo Kreuzer]])<br />
<br />
=== BUGCODES ===<br />
* Added missing bugcheck code for PnP manager ([[Pierre Schweitzer]])<br />
<br />
=== CMLIB_NEWINFLIB_MKHIVE ===<br />
* Make cmlib, newinflib and mkhive use the Wine unicode lib instead of the host_wcsfuncs lib. ([[Eric Kohl]])<br />
* Only the header file include/host/wcsfuncs.h is still used to map str*W functions to wcs* functions in WIN32 builds. ([[Eric Kohl]])<br />
* Remove obsolete rtl functions. ([[Eric Kohl]])<br />
* Make mkhive use the newinflib instead of inflib. ([[Eric Kohl]])<br />
* Remove duplicate line. WRC complains about the control id already being in use. ([[Eric Kohl]])<br />
* Delete ANSI version. ([[Eric Kohl]])<br />
* Convert hivedef_i386.inf to Unicode. ([[Eric Kohl]])<br />
* Add Strings-Sections for several languages and add TEMP_DIR string. ([[Eric Kohl]])<br />
* Please translate the TEMP_DIR string as this is the sollution for bug #2482. ([[Eric Kohl]])<br />
<br />
<br />
=== CPORTLIB ===<br />
* Implement Windows' Cp (ComPort) library. See Notes in C file. Not yet used. Based on MS Whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation. (Anton)<br />
* Fix typos in the description of serial port defines. ([[Aleksey Bragin]])<br />
<br />
=== DDK_NDIS ===<br />
* Add missing ntstatus.h inclusion. ([[Amine Khaldi]])<br />
* Group some related definitions. ([[Amine Khaldi]])<br />
* Add several missing ones. ([[Amine Khaldi]])<br />
* update README.WINE ([[Jérôme Gardou]])<br />
* Group some related definitions. ([[Amine Khaldi]])<br />
* Remove some duplicated NDIS_MINIPORT_MAJOR_VERSION/NDIS_MINIPORT_MINOR_VERSION combinations. ([[Amine Khaldi]])<br />
* Add some missing NDIS_LEGACY_DRIVER guards. ([[Amine Khaldi]])<br />
* _ANONYMOUS_UNION -> __MINGW_EXTENSION ([[Amine Khaldi]])<br />
* Update NDIS_PROCESSOR_TYPE and NDIS_INTERFACE_TYPE. ([[Amine Khaldi]])<br />
* Guard NDIS_GENERIC_OBJECT with NDIS_SUPPORT_NDIS6. ([[Amine Khaldi]])<br />
* Add missing NDIS_WAN_GET_STATS, NdisAllocateGenericObject, NdisFreeGenericObject, fPACKET_WRAPPER_RESERVED and NDIS_FLAGS_* definitions. ([[Amine Khaldi]])<br />
* PNDIS_PACKET_POOL : HANDLE -> NDIS_HANDLE. ([[Amine Khaldi]])<br />
* Improve MEDIA_SPECIFIC_INFORMATION ([[Amine Khaldi]])<br />
* Some minor formatting. ([[Amine Khaldi]])<br />
<br />
=== DDK_XDK ===<br />
* Use PCI_COMMON_HEADER_LAYOUT for C, too, place it where it belongs ([[Timo Kreuzer]])<br />
* Don't auto define NO_LEGACY_DRIVERS on reactos x64 builds. ([[Timo Kreuzer]])<br />
<br />
=== EXPLORER_NEW ===<br />
* Display a message box if the explorer registry key cannot be loaded, (Katayama; {{bug|5407}})<br />
<br />
=== FBTUSB ===<br />
* Import the FreeBT USB generic bluetooth driver (abandoned) ([[Cameron Gutman]])<br />
* WMI is currently commented out because our WMI headers are lacking (particularly wmistr.h) ([[Cameron Gutman]])<br />
* Not building by default for now ([[Cameron Gutman]])<br />
* Fix include casing. ([[Sylvain Petreolle]])<br />
<br />
=== FTP_DHCP ===<br />
* remove the oldnames hack, as we now have a proper oldnames lib (included in mingw_common) ([[Timo Kreuzer]])<br />
* protect struct timezone from redefinition ([[Timo Kreuzer]])<br />
* Add bdasup to bootcd ([[Johannes Anderwald]])<br />
* Merge from amd64 branch: ([[Timo Kreuzer]])<br />
* 46478 ([[Timo Kreuzer]])<br />
<br />
=== HALMP ===<br />
* MP HAL should have HalpDefaultInterruptAffinity too. ([[sir_richard]])<br />
<br />
=== HEADERS ===<br />
* Fix type of PRTL_HEAP_PARAMETERS in ifssupp.h. Will be required soon ([[Hervé Poussineau]])<br />
* Reintegrate header-work branch. Thanks to hours of boring work on the ddk headers (Most of it done by Amine Khaldi), we have now a decent set, which is still incomplete but already relatively close to latest WDK. ([[Timo Kreuzer]])<br />
* Remove BOM from UTF-8 rc files. ([[Sylvain Petreolle]])<br />
* asm.h: fix definition of HEX macro ([[Giannis Adamopoulos]])<br />
<br />
=== HOSTS ===<br />
* Add a simple hosts file ([[Cameron Gutman]])<br />
* Not used yet ([[Cameron Gutman]])<br />
<br />
=== INCLUDE_WINE ===<br />
* Update Wine-specific headers to Wine-1.3. ([[Aleksey Bragin]])<br />
* Remove unneeded 16 bit header, and add a bit of stuff into another legacy header. ([[Aleksey Bragin]])<br />
* Indicate in config.h that there is a freetype library present. ([[Aleksey Bragin]])<br />
<br />
=== INFLIBNEW ===<br />
* Free allocated memory on error ([[Gregor Schneider]])<br />
<br />
=== INPUT_I8042PRT ===<br />
* Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running. ([[Michael Martin]])<br />
<br />
=== INTRIN_X86 ===<br />
* define _alloca() to __builtin_alloca() on amd64 ([[Timo Kreuzer]])<br />
* 46388 ([[Timo Kreuzer]])<br />
* Add __stosq, __movsq, _bittest64 ([[Timo Kreuzer]])<br />
<br />
=== IOEVENT ===<br />
* Added a library containing GUIDs for PnP notifications ([[Pierre Schweitzer]])<br />
<br />
=== KERNEL32_CSRSS ===<br />
* Register new Win32 threads with CSRSS. Add a bunch of lookup, creation, allocation, hashing and CSR thread management routines from the unused CSRSRV in trunk. ([[sir_richard]])<br />
<br />
=== LIB_3RDPARTY ===<br />
* Disable unused value warning here, too ([[Timo Kreuzer]])<br />
<br />
=== MKHIVE_USETUP ===<br />
* Fix buffer size calculation for the parser. (me)<br />
* Do not try to execute an empty registry instruction (me)<br />
* Patches by Roel Messiant. (me)<br />
* Stop the parser at the first NULL character. (me)<br />
* Hardcode GeckoCabDir to C:\ReactOS. ([[Sylvain Petreolle]])<br />
* the mshtml installer now wants a REG_SZ string for it, which excludes using %SystemRoot%. ([[Sylvain Petreolle]])<br />
* Fixes bootcdregtest. ([[Sylvain Petreolle]])<br />
<br />
=== NETEVENT ===<br />
* Add new netevent.dll. It is a resource dll that will be used by the event log viewer. ([[Eric Kohl]])<br />
<br />
=== NEWINFLIB ===<br />
* Add a UNICODE-aware version of the inflib library. ([[Eric Kohl]])<br />
* It is not used by other components yet but usetup and mkhive will use it in the future. ([[Eric Kohl]])<br />
* Use LANGID instead of LCID. ([[Eric Kohl]])<br />
* Move LANGID and language macros into the host typedefs header. ([[Eric Kohl]])<br />
* Remove dead code. ([[Eric Kohl]])<br />
* Change Unicode string functions from wcs* to str*W because glibc (Linux build) provides the wcs* functions but they use a wchar_t size of 32 bits instead of the required 16 bits. ([[Eric Kohl]])<br />
* Add a str*W to wcs* wrapper (infrosrtl.c) in order to use the wcs* function for the WIN32 build. ([[Eric Kohl]])<br />
* Add required str*W functions to the host library. ([[Eric Kohl]])<br />
* Fix an off-by-one bug, which lead to the crash of mkhive after parsing ~3 files on Windows or ~5 files on Linux ([[Gregor Schneider]]; {{bug|5338}})<br />
* PINT -> INT* ([[Timo Kreuzer]])<br />
<br />
=== NTDDK ===<br />
* Protect IoMapTransfer from incompatible redefinition. (AmineKhaldi)<br />
<br />
=== NTDKK ===<br />
* Don't use PEB::FastPeb(Un)LockRoutine, these members are deprecated since Windows 2003, use RtlEnter/LeaveCriticalSection instead. ([[Timo Kreuzer]])<br />
* 44523 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
=== NTIFS ===<br />
* Use a preprocessor definition for FSRTL_COMMON_FCB_HEADER instead of using an ms extension, that wouldn't work for ISO C ([[Timo Kreuzer]])<br />
<br />
=== NTOS ===<br />
* Implement GUI thread promotion during the first GUI system call in C. This is tricky due to EBP, and actually requires some tiny inline ASM magic to make it work right. ([[sir_richard]])<br />
* Implement SYSENTER system calls in C as well. ([[sir_richard]])<br />
* Make KiSystemStartup the real C entrypoint of the kernel, and move the "Am I being booted by FreeLDR" logic inside it -- it will then call KiRosPrepareForSystemStartup as earlier. ([[sir_richard]])<br />
* Move the Double Fault and Boot Stack declaration in C code, with the proper alignment attribute. ([[sir_richard]])<br />
* Although the concern that KiSystemStartup cannot be 100% C since it modifies ESP is real (Thomas' original fix of Alex's code), we don't need that much of it in assembly. Instead, write a simple trampoline (KiSwitchToBootStack) inline which switches stacks and jumps to a second-stage C function. ([[sir_richard]])<br />
* Completely remove boot.S as it isn't needed anymore, ReactOS startup is back to being (nearly) 100% C. ([[sir_richard]])<br />
* Workaround for GCC 4.4.x bug reported by Dmitry. ([[sir_richard]])<br />
* Add dclevel flags. ([[James Tabor]])<br />
* Implement KiSwapProcess in C. ([[sir_richard]])<br />
* Implement KiIsNpxPresent and KiIsNpxErrataPresent in C. It's much clearer what these are doing now. ([[sir_richard]])<br />
* Implement KiFlushNPXState and fix some bugs that were present in the ASM version, such as a wrong NPX state check. ([[sir_richard]])<br />
* Implement working intrinsics for fxrstor, fxsave, fnsave and enable them for flushing. We'll update the FPU trap code to use these later. ([[sir_richard]])<br />
* KiDispatchInterrupt crushes EBX, so maybe it should preserve it first? This only worked because KiDispatchInterrupt was only called by ASM code that already was magically aware of this fact, and preserved (or didn't use) EBX before making the call. Yuck! ([[sir_richard]])<br />
* Export the C KiEoiHelper alongside the ASM Ke386EoiHelper. Yes, this is a "ReactOS-only" export, but really this interface is reserved for the HAL, and as long as we keep Ke386EoiHelper, the NT HAL should still work. ([[sir_richard]])<br />
* Need to revisit/finalize this decision and whether or not we can emulate the C-interface with Ke386EoiHelper somehow (reliably). ([[sir_richard]])<br />
* Remove duplicate definitions (now in time.c). ([[Dmitry Gorbachev]])<br />
* Do not attempt querying the Registry Primary Handle for the Backing Hive File Size in the case where there is no actual Primary! There was no error checking so nobody noticed this happens -- it also probably resets Cluster to 0 (instead of 1), which can cause corruption in some cases. ([[sir_richard]])<br />
* Implement 4 lines of support code needed to handle interrupts during V8086 mode, which were lacking since we weren't hitting this case yet. ([[sir_richard]])<br />
* Note that now the KeUpdateSystemTime interface is not "compatible" with Windows anymore. This does not matter, since the only possible caller of KeUpdateSystemTime is a very specific HAL routine that needs a very specific stack layout to actually work, so the chance of anyone calling this API is absolutely zero (no, not even some experimental driver. It's absolutely impossible). ([[sir_richard]])<br />
* Turn off debug print outs. ([[James Tabor]])<br />
* Output PCH, not dependencies. ([[Dmitry Gorbachev]])<br />
* Rework the trap macros again. This time we needed some added complexity because of the need for runtime patching at boot. We got away with it nicely and basically implement a simple "if" in ASM, which gives us a deterministic set of instructions (vs the compiler). We then patch if if needed (see next bullet). ([[sir_richard]])<br />
* Support systems without SYSENTER. Nothing was actually disabling the SYSEXIT mechanism recently enabled. Now IRET is always used unless a SYSENTER machine is discovered, in which case the jmp to the IRET code is patched with a jmp to SYSEXIT code. ([[sir_richard]])<br />
* Enable V8086 Fast-V86 Trap mode for Trap 6 (Invalid Opcode). Because we are now taking zero traps during V8086 mode, we can't do the "BOP lookahead", so the only trap we do get is when we hit the BOP/invalid opcode itself. ([[sir_richard]])<br />
* Multiple fixes to V8086 opcode emulation code that I noticed while looking through the source. Also multiple fixes to VDM code. ([[sir_richard]])<br />
* This change will only impact real hardware and VMWare, since QEMU does not support VME. On VMWare, performance increased up to 400% during bootup (80 million cycles instead of 300 million, in one test). ([[sir_richard]])<br />
* Merge aicom-network-branch (still without the NDIS stuff) ([[Cameron Gutman]])<br />
* Fixes some nasty bugs and hacks in our TCP implementation ([[Cameron Gutman]])<br />
* Remove checks for VDM alert during GPF. This is a Windows-specific hack for VDM, which isn't implemented. ([[sir_richard]])<br />
* Fix L1/L2 cache detection and write out the size and associativity. Now that KeGetCurrentProcessorNumber doesn't think your L2 cache is the number of CPUs, this can be safely done. ([[sir_richard]])<br />
* The last big step. Now that the HAL is in C, we can handle interrupts in C. Do so using the proposed model that was #if'ed out, but with some improvements. ([[sir_richard]])<br />
* Fix recursion when sweeping the DCE list. ([[James Tabor]])<br />
* Another try at the chained interrupt dispatch problem... ([[sir_richard]])<br />
* Return correct IRQ 0 vector instead of IRQL, when the timer interrupt ends. ([[sir_richard]])<br />
* Fix KiEnterInterruptFrame. In the case of a V86 trap, the segments were overriden because this wasn't a kernel trap (missing if/elseif). ([[sir_richard]])<br />
* Simplify KiTrapStub and write registers in order. ([[sir_richard]])<br />
* Always set correct segments; the if/else branch should decide which segments to save, not whether or not to set the sane ones. Fixes boot on VirtualBox and real hardware. ([[sir_richard]])<br />
* Try to fix KiEnterInterrupt once and for all. Only set segments for V8086 or user traps. ([[sir_richard]])<br />
* Rework the way traps with possibly dirty DS/ES segments are handled. The FAST V86 hack is gone. Intead, created a "safe" version of IsTrapV86 and IsTrapUser that does an SS segment dereference (known good). The condition is then based on this, and the segments are saved and loaded safely. Note that for GCC 4.5 the ASM can be improved to directly branch or not to a label, instead of returning a boolean that is then further compared before branching. ([[sir_richard]])<br />
* This will fix certain exceptions that were seen in KeUpdateSystemTime, and might fix the sneaking HalpTrap0D while not in V86 mode (no promises). ([[sir_richard]])<br />
* Yet another fix for KiEnterInterruptTrap: Set correct DS/ES before touching the TrapFrame. ([[sir_richard]])<br />
* Make this operation an inline so any possible future code will not make this mistake twice. ([[sir_richard]])<br />
* Thanks to Physicus for the bug report. ([[sir_richard]])<br />
* Combine all exit trap stubs into a single function with flags (same thing we did for the entry stub). Now there are only 15 lines of ASM instead of 60. ([[sir_richard]])<br />
* Start redefining ARMv6 paging structures. ([[sir_richard]])<br />
* Add a branch-to-self to start testing kernel code. ([[sir_richard]])<br />
* Forgot to setup an IRQ stack, the kernel was working by magic since in previous incarnations of the ARM port, 0xFFFFyyyy was mapped, so a stack of 0 worked (going downwards). ([[sir_richard]])<br />
* Now FreeLDR just calls the KiSystemStartup routine correctly, without any "magic", so fix the code to use a1 instead of a2 (argument 1/2). ([[sir_richard]])<br />
* Get rid of fixed TLB entries on ARM, I don't think that idea makes sense (unlike IA64 or MIPS where they are lot more flexible), since they only allow 1MB sections, not pages. ([[sir_richard]])<br />
* Sync up KiDispatchException with x86 code (and going back to C comment formatting). ([[sir_richard]])<br />
* ARM DDK]: Use the closest possible approximation to the x86 KPCR/KPRCB (in fact, the public KPCR is identical, just the KIPCR is different, internally), instead of a mashup of PPC and MIPS structures. ([[sir_richard]])<br />
* Update code to use new KPCR structure. ([[sir_richard]])<br />
* Make all trap code currently spin forever, because it has not been reviewed yet. ([[sir_richard]])<br />
* Make system startup match x86 code as closely as possible, instead of mixing MIPS/PPC code. Only rip out parts that are obviously x86-specific. Also fix code to use new KPCR definitions. ([[sir_richard]])<br />
* Implement a DbgPrintEarly function that directly uses KDCOM to print to the serial console, instead of going through the Debug Service Interrupt. ([[sir_richard]])<br />
* All calls to DbgPrint will go to DbgPrintEarly for now. ([[sir_richard]])<br />
* More header fixes to match new definitions. ([[sir_richard]])<br />
* Tabula rasa (clean slate) on the old-MM page routines for ARM. Get rid of all of them for now. ([[sir_richard]])<br />
* Implement MmInitGlobalKernelPageDirectory as the first ARM page function in the new file. ([[sir_richard]])<br />
* That's it for the kernel. ([[sir_richard]])<br />
* Setup the template PTE and PDE used on ARM. ([[sir_richard]])<br />
* Implement device location information override support and add the location override value for PS/2 mice. PS/2 keyboards be added next. ([[Eric Kohl]])<br />
* Please translate the location override string. ([[Eric Kohl]])<br />
* Move HYPER_SPACE to 0xC0500000 since it must be on its own PDE. We need to revisit some FreeLDR Mm decisions later. ([[sir_richard]])<br />
* Move certain arch-specific definitions from mm.h to the arch-specific mm.h ([[sir_richard]])<br />
<br />
* Allow registry configuration of large kernel stack size, with proper checks. ([[sir_richard]])<br />
* Actually use calculated kernel stack size value. ([[sir_richard]])<br />
* Found a leak fix patch from years ago ([[Ged Murphy]])<br />
* Update log2lines to ver. 2.1. Jan Roeloffzen, bug #4342. ([[Dmitry Gorbachev]])<br />
* MxGetNextPage is not platform-specific, so share it. ([[sir_richard]])<br />
* Factor out computations of NP sizes and limits into MiComputeNonPagedPoolVa. ([[sir_richard]])<br />
* Fix NP size/limit calculations to use the amount of FREE RAM, not the amount of INSTALLED RAM. ([[sir_richard]])<br />
* Use Windows 2003's algorithm for NP size on machines with more than 512MB of FREE RAM. ([[sir_richard]])<br />
* Partly handle the case of machines with NP over 128MB. ([[sir_richard]])<br />
* Factor out SecondaryColor computations into MiComputeColorInformation. ([[sir_richard]])<br />
* Fix SecondaryColor computations. If the KPCR has no deta, use the default colors of 8, not just 1. Also handle cases where there is more L2 cache than we'd like -- set the secondary colors to a maximum of 1024 in that case. Finally, if the colors are not a power of two, or there are not enough (due to a registry setting), use the default of 8. ([[sir_richard]])<br />
* Allocate and initialize color tables based on MmSecondaryColors (MiInitializeColorTables). ([[sir_richard]])<br />
* These come after the PFN database, so modify the MmPfnAllocation to account for them. ([[sir_richard]])<br />
* Add device location information override PS/2 keyboards. ([[Eric Kohl]])<br />
* Please translate the location override string. ([[Eric Kohl]])<br />
* partially revert changes from 45560 ([[Christoph von Wittich]])<br />
* Make KiFastCallEntryHandler and KiSystemServiceHandler FASTCALL and pass the systemcall number in TrapFrame->Eax ([[Timo Kreuzer]])<br />
<br />
* Refactor the mapping of the PTEs for the PFN database into MiMapPfnDatabase and move the code to portable directory. ([[sir_richard]])<br />
* Move and refactor some other definitions, and make some numbers more portable by defining arch-specific subvalues. ([[sir_richard]])<br />
<br />
* Fix floppy controller detection ([[Cameron Gutman]]; {{bug|4391}})<br />
* Simplify waiting in Get_Byte and Send_Byte ([[Cameron Gutman]]; {{bug|4391}})<br />
* for details ([[Cameron Gutman]]; {{bug|4391}})<br />
* Fix a stupid bug: x86 has 1024 PDEs, and ARM has 4096 PDEs, not the other way around. ([[sir_richard]])<br />
<br />
* Fix broken MI_PFNENTRY_TO_PFN macro. ([[sir_richard]])<br />
* Remove bogus assertion. ([[sir_richard]])<br />
* Get rid of page locking mechanism for MDL since I can't see a reason this would make sense, since these pages won't be scheduled for page out anyway, and that is the only code that looked at this value. ([[sir_richard]])<br />
* Push vector as error code on the stack in KiUnexpectedInterrupt* instead of putting it into eax, because we must not clobber it. Spotted by jcatena. ([[Timo Kreuzer]])<br />
* Allocate the trap frame on the stack by decreasing esp before modifying any members. ([[Timo Kreuzer]])<br />
* While doing it after is a tiny optimization (no need to wait for esp to be ready) and would work with all real traps (which clear cli), it doesn't work with Zw calls that directly call KiSystemService with interrupts enabled. This caused random trap frame corruption when an interrupt fired after members of the trap frame have been set but before esp was adjusted. Should hopefully fix most random failures on real hardware and qemu. ([[Timo Kreuzer]])<br />
* Fix incorrect sector size detection which caused seeking to fail when booting from a floppy ([[Cameron Gutman]])<br />
* FreeLoader can load from a floppy disk now ([[Cameron Gutman]])<br />
* Remove unused code. ([[sir_richard]])<br />
* Fix an off-by-one-error which incorrectly causes GUI promotion to fail if the first GUI call is "0", since the limit on the GUI descriptor table will also be "0". We should check if the limit is equal to or lower, not just if it's lower. ([[sir_richard]])<br />
* Make EventLog and Spooler services report their status to the SCM. ([[Eric Kohl]])<br />
* Manage the PFN lists using the correct Flink/Blink semantics of the MMPFN structure, instead of typecasting a LIST_ENTRY on top of Flink and PteAddress. This allows PteAddress to be used now, and minimizes the number of differences between MMPFN and the ReactOS PHYSICAL_PAGE. ([[sir_richard]])<br />
* Add MiInsertPageInFreeList to build the colored lists (not yet used) in the ARM3 PFN database. ([[sir_richard]])<br />
* Remove SwapEntry parameter from MmAllocPage since it was always zero. ([[sir_richard]])<br />
* Store SwapEntry as WsIndex. We can do this now since Flink is only used when the page is in a list (meaning it's not active, ie. free or zero), and non-active pages don't have a swap entry. ([[sir_richard]])<br />
* Make MM init read MmProductType to determine what SKU of ReactOS this is, instead of assuming Server. If you want to go back to the old behavior, you need to change "WinNT" to "ServerNT" in the hivesys under Product Type. ([[sir_richard]])<br />
* Initialize thresholds for low and high memory (in pages), low and high paged pool memory, and low and high nonpaged pool memory. These are described in the source. ([[sir_richard]])<br />
* Initialize events for each of those thresholds, and populate the \KernelObject\xxxCondition events that are documented in MSDN for driver and app developers. ([[sir_richard]])<br />
* Define some internal thresholds to use later, representing the minimum number of free pages under we go berserk, and the minimum number of free pages that we consider "plenty". ([[sir_richard]])<br />
* Rename MiRemoveFromList to MiUnlinkFreeOrZeroedPage (Windows name). Make the function handle MmAvailablePages decrement, instead of having the caller do it. ([[sir_richard]])<br />
* Remove run-time initialization of the PFN lists, just initialize them statically (also fixes the fact we forgot to initialize their names). ([[sir_richard]])<br />
* Read ProductType from registry into MmProductType instead of dummy value. Remove duplicate "Mirroring" variable read. ([[sir_richard]])<br />
* Don't prepend fastcall forward's target with @. Fixes binding issues in videoprt, thanks to Olaf Siejka for identifying the issue. ([[Aleksey Bragin]])<br />
* Partially revert patches 45626 and 45633. ([[Eric Kohl]])<br />
* Several services do not report their status to the service manager properly. Therefore we must not use any code that relies on service status information as part of the setup and boot processes as long as these issues have not been fixed. The service manager still needs to provide fake information about the service status. ([[Eric Kohl]])<br />
* Use system PTEs for drivers, both boot drivers and system-loaded drivers. This removes the last user of the deprecated MmAllocateSection internal API. Another side-effect is that drivers will now have much higher load addresses (in the 0xF0000000 and higher range), as you would expect on Windows, plus increasing coverage and usage of system PTEs (which can still be optimized). ([[sir_richard]])<br />
* Do not "copy" boot drivers from one set of pages to another set of pages. Instead, use system PTEs to map the boot drivers to a new VA, and set the PFNs to the original PFNs that the loader had obtained (and don't free that memory). This avoids some overhead. ([[sir_richard]])<br />
* Now the only user of MmMapMemoryArea is the caching code, which I won't touch. ([[sir_richard]])<br />
* Insert pages into zero list with specific MiInsertZeroListAtBack function instead of generic MiInsertInTailList. Allows us to handle insertion into colored page lists (not yet used) correctly, as well as update the page location to ZeroedPageList automatically (so don't let the callers do this anymore). Also handle memory threshold accounting. ([[sir_richard]])<br />
* Temporarily disable last part of MiInsertZeroListAtBack which seems to cause issues in the 1st stage. ([[Aleksey Bragin]])<br />
* Enable high/low memory events notifications. ([[Aleksey Bragin]])<br />
* Reenable critical debug messages. ([[Eric Kohl]])<br />
* Rewrite trap handler exit stubs in pure assembly, remove gcc inline assembly. ([[Timo Kreuzer]])<br />
* Replace jmp to C handler with KiCallHandler macro, that expands to jmp on release builds for speed and call on debug builds to fix backtraces. ([[Timo Kreuzer]])<br />
* Unroll the Syscall handler loop and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack to prevent the compiler from optimizing it away / moving it out of the loop. ([[Timo Kreuzer]])<br />
* Bugcheck in KiTrap0DHandler, if the fault couldn't be resolved. ([[Timo Kreuzer]])<br />
* Remove handling of V86 traps and edited traps in KiServiceExit, ASSERT to make sure they never happen. ([[Timo Kreuzer]])<br />
* Replace code patching of the syscall exit handler with a function pointer. ([[Timo Kreuzer]])<br />
* Use __debugbreak() instead of while(TRUE) in KiExitTrapDebugChecks ([[Timo Kreuzer]])<br />
* Do the "funny message" (not really funny, my apologies) shenanigans after the system components have shutdown, and reset the display and call the HAL at least at DPC level (should probably do it at HIGH IRQL, really). This way, we can avoid the context switch to another process while the HAL is executing the BIOS reset display call (done solely for the benefit of the "funny messages", as the video card driver usually resets the display) and thus avoid the "invalid V86 opcode" message sometimes appearing on shutdown. Did you know the "funny messages" take up more storage space than an average embedded micro-controller OS? ([[sir_richard]])<br />
* Add missing InbvIndicateProgress routine to update the progress bar while drivers are loading. Make boot and system driver initialization call it for each new driver. This updates the progress bar in the 25-75% range which was defined prior to IoInitSystem. ([[sir_richard]])<br />
* Fix InbvUpdateProgressBar code to correctly handle the floor and ceiling. ([[sir_richard]])<br />
* Remove shutdown "funny messages", do correct shutdown (should fix the ACPI shutdown issues) procedure. Display the shutdown screen on systems without ACPI (just like Windows does). ([[sir_richard]])<br />
* Add a resource header with IDB_ definitions for all the embedded bitmaps, instead of using magic numbers and guessing which is which. ([[sir_richard]])<br />
* Fix the boot logo initialization code as it was all wrong. 5 is the logo to be used during shutdown, for example, not the full logo background (which is supposed to be in 1, with a special palette that's faded in). Also handle server vs workstation scenarios. ([[sir_richard]])<br />
* Booting in the new WinNT mode now correctly displays the blue background screen when in debug (/SOS) mode, and the header/footer also has the correct color, as does the separator band. ([[sir_richard]])<br />
* Remove logo files that are simply not needed for ReactOS (Compute Cluster Edition, Tablet PC, etc...) ([[sir_richard]])<br />
* Fix logo files (mostly) to have correct palettes. Note that 1.bmp is still quite different from Windows (no fade). ([[sir_richard]])<br />
* Implement CmSetLazyFlushState to disable lazy writing in the Cm. ([[sir_richard]])<br />
* Implement ExSwapInWorkerThreads to in-swap any worker threads when needed. ([[sir_richard]])<br />
* Add HAL stubs for HalEndOfBoot and HalSetWakeEnable since most HALs set this to NULL. ([[sir_richard]])<br />
* Have I/O Manager Volume Device Objects register with the Power Manager so that they can receive dope. ([[sir_richard]])<br />
* Reimplement NtShutdownSystem. ([[sir_richard]])<br />
* Implement NtSetSystemPowerState for the shutdown/reboot cases. ([[sir_richard]])<br />
* Use the dope from the volume device objects to flush all writeable (non-floppy) devices. Pending hard-disk changes are now flushed to disks before shutdown. ([[sir_richard]])<br />
* Flush \\REGISTRY during shutdown. This flushes all pending changes. ([[sir_richard]])<br />
* Call into Cc to flush lazy writer during shutdown. ([[sir_richard]])<br />
* Stop killing processes on shutdown. The kernel should not be doing this. ([[sir_richard]])<br />
* Don't only shutdown disk file systems, but also cdrom and tape. ([[sir_richard]])<br />
* Don't only notify drivers of first-chance shutdown -- also parse the last-change shutdown list. ([[sir_richard]])<br />
* Reference drivers registering for shutdown notifications so that they remain loaded for them to get the notification at shutdown. ([[sir_richard]])<br />
* Notify drivers that have registered/opened the Power State callback. ([[sir_richard]])<br />
* A lot of the Po* power state code is highly simplified, but provides a good roadmap to anyone interested in this functionality long-term. ([[sir_richard]])<br />
* While attempting to ressucitate the user-mode shutdown code in CSRSS (disabled since 2006), it seemed clear that one of the main steps is to obtain the caller's LUID in order to kill the right processes. This LUID is obtained from the current thread's token, and we know it's the callers since we're supposed to impersonate the caller. Unfortunately, impersonation failed, making the whole process fail. ([[sir_richard]])<br />
* Impersonation failed because NtImpersonateThread was actually inverting the THREAD_IMPERSONATE rights, asking the client thread for the server's permissions, and vice versa. Fixing this resulted in yet another failure. ([[sir_richard]])<br />
* Analysis of this failure showed that even opening the server (ie: current) thread for THREAD_DIRECT_IMPERSONATION failed, which is unusual since the current thread should have access to all its rights. This is determined in PspCreateThread when the ETHREAD->GrantedAccess field is set. ([[sir_richard]])<br />
* Continuing onto this path, tracing revealed that GrantedAccess was merely 0x1607F and not 0x1F3FF as expected, meaning that not all rights were given, including the impersonate right (0x200), explaining the failure, but not the deeper reason behind it. ([[sir_richard]])<br />
* Attempting to identify which code path set this GrantedAccess, the SepAccessCheck routine came to light. A bug there caused MAXIMUM_ALLOWED accesses to fail in certain scenarios, such as when the object had no security descriptor, because MAXIMUM_ALLOWED would be granted as an absolute value, when instead of it is a flag that should grant GENERIC_ALL. Fixing that bug, the failure continued. ([[sir_richard]])<br />
* Further analysis identified that the Administrators SID was being found with GENERIC_READ + WRITE + EXECUTE access, and no SID was found for GENERIC_ALL access. This happened when searching the system token's default DACL, which is assigned to the kernel (but for kernel-mode callers, this check was skipped), smss, winlogon, etc. ([[sir_richard]])<br />
* The code for creating this system token was heavily hacked, so the function to create the system token, as well as NtCreateToken were refactored to use a common piece of token-creating code. Furthermode, the system token was correctly created with Local System as the user, and Administrators as one of the groups. Finally, SeDefaultDacl was used (already setup properly) instead of a badly configured Default DACL. The new shared code also correctly sets the SE_GROUP_ENABLED flag on all SE_GROUP_MANDATORY groups, and scans tokens to set the TOKEN_HAS_ADMIN_GROUP and TOKEN_HAS_TRAVERSE_PRIVILEGE flags which were not previously set. ([[sir_richard]])<br />
* With the correct system token and default DACL, the Local System SID was now found, but the failure continued. This was revealed to be due to an even deeper rooted problem, as the SepIsSidInToken routine checked for SE_GROUP_ENABLED before listing a SID as "present". Although this is correct for actual groups, the User SID will never have the SE_GROUP_ENABLED flag as it is not a group. This caused any granted access ACE belonging to a user (instead of a group) to be ignored, causing either access check failures, or limited rights returned (in the MAXIMUM_ALLOWED case). ([[sir_richard]])<br />
* Upon fixing this bug, the NtImpersonateThread call finally returned success, since the rights were now correct. Promptly upon calling NtOpenThreadToken to query the LUID however, the system ASSERTED with FALSE. ([[sir_richard]])<br />
* The code at fault was a line in NtOpenThreadTokenEx which forcefully ASSERTed if the impersonation code path was taken, presumably because this was never tested, and ReactOS would actually always fail impersonation attempts due to the bugs fixed above. This routine was thus quickly reworked to fix some mistakes (such as forgetting to actually impersonate the client, incorrect referencing/dereferencing of thread/tokens, and assumptions about DACL creation success). ([[sir_richard]])<br />
* Having fixed the NtOpenThreadTokenEx routine, the LUID query now went through for the impersonated token, but soon causing a user-mode crash, due to an incorrect parameter reference in the CsrGetProcessLuid function in the csrsrv code by Alex (which I copy/pasted to reduce code duplication). ([[sir_richard]])<br />
* Fixing this final bug finally allowed the correct LUID to be queried and I was able to continue development of not-yet-commited user-mode shutdown code. ([[sir_richard]])<br />
* Convert battery.inf to UTF-16 ([[Sylvain Petreolle]])<br />
* Add battery.inf and fdc.inf to syssetup process. ([[Sylvain Petreolle]])<br />
* Floppy disk controllers and batteries now appear correctly in device manager. ([[Sylvain Petreolle]])<br />
* Dedicated to aicom ;) ([[Sylvain Petreolle]])<br />
* No good deed goes unpunished. Continuing the novel/saga from a couple of days ago, it seems that now that impersonation works, various code paths are being tickled into existence. For example, it would seem parts of the system now attempt setting primary tokens. This would cause an assertion, since PspAssignPrimaryToken incorrectly dereferenced the token (leading to a double-dereference) due to an off-by-! mistake. ([[sir_richard]])<br />
* List still-running processes at kernel shutdown. Useful for debugging shutdown code later. ([[sir_richard]])<br />
* Quit building a useless IO_RESOURCE_REQUIREMENTS_LIST (and leaking memory) in response to IRP_MN_QUERY_RESOURCES ([[Cameron Gutman]])<br />
* Actually store the IO_RESOURCE_REQUIREMENTS_LIST in Irp->IoStatus.Information in response to IRP_MN_QUERY_RESOURCE_REQUIREMENTS so the PnP manager can use it (and fixes another memory leak) ([[Cameron Gutman]])<br />
* Rewrite Trap exits stubs in raw assembly (2nd try) and remove inline assembly. Bugcheck in KiTrap0DHandler, when the fault was not handled. Replace code patching for sysexit vs iret with a function pointer. Slightly refactor KiSystemServiceHandler/KiFastCallEntryHanlder. Unroll the loop in the systemcall handler and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack after converting to gui thread to prevent the compiler from optimizing it away (or moving it out of the loop). Add an asm macro KiCallHandler, which expands to call on debug builds to make sure backtraces work as expected and to jmp on release builds for improved performance. Modify KiExitV86Trap to always exit and add DECLSPEC_NORETURN. Use __debugbreak() instead of while(TRUE) on errors in KiExitTrapDebugChecks. ([[Timo Kreuzer]])<br />
* The old code hat 2 issues: one was restoring segments in KiExitV86Trap when they shouldn't be, leading to a bugcheck. And the other was a long hang (5 mintes or more) in 3rd stage on qemu when selecting RosDbg, caused by the KiFastCallExitHandler function pointer being initialized with a pointer to the iret handler. Initializing it in code solved the issue. To figure out why is left as an exercise to the reader. ([[Timo Kreuzer]])<br />
* I forgot to set the exit function for systems without sysenter/sysexit support. Should fix sysreg. ([[Timo Kreuzer]])<br />
* Add DPRINTs to tell if SYSENTER is detected. Requested by Christoph for testing the test machine. ([[Timo Kreuzer]])<br />
* NtOpenThreadTokenEx: Initialize NewToken with NULL, so it doesn't get wrongly dereferenced. Fixes advapi32:security winetest crash. ([[Timo Kreuzer]])<br />
* Update pspec file with amd64 exports, use -arch= where appropriate ([[Timo Kreuzer]])<br />
* Add internal amd64 headers. ([[Timo Kreuzer]])<br />
* Add support for reference strings in IoOpenDeviceInterfaceRegistryKey ([[Johannes Anderwald]])<br />
* Make sure SymbolicLink is null terminated ([[Johannes Anderwald]])<br />
* Rewrite boot driver loading code (not the driver code itself) to use the boot loader's BootDriverListHead, instead of parsing InOrderListHead and cherry-picking ".sys" files. This is the last incompatibility with Windows. ([[sir_richard]])<br />
* Use group prioritiy, tag numbers, and tag priority to determine the correct loading order for boot drivers, instead of just parsing the linked list. Dependencies work now! ([[sir_richard]])<br />
* Load any DLLs that are driver-dependent with MmCallDllInitialize. Previously, these .DLLS were ignored and drivers could lose dependencies. ([[sir_richard]])<br />
* Fix MP install. ([[Sylvain Petreolle]])<br />
* Simplifying MakeInfoDC. ([[James Tabor]])<br />
* Implement Configuration Manager routines for building a driver list, sorting it, detecting circular dependencies and ordering, combining groups, tags, group orders and tag orders, etc. Replaces the "drvrlist" I/O interface currently in ReactOS. ([[sir_richard]])<br />
* Use the new Cm interface in IopInitializeSystemDrivers to parse the ordered list of system drivers to load. Make it use ZwLoadDriver directly instead of having a hacked IopLoadDriver function. ([[sir_richard]])<br />
* Drivers should not show up loading n times a reboot now (some drivers seemed to do this in the past when they failed to load). ([[sir_richard]])<br />
* The system driver code could be further improved by checknig if the driver has already been loaded, or attempted and failed to load, but it is already much better now than in the past. ([[sir_richard]])<br />
* Device interface strings are null terminated ([[Johannes Anderwald]])<br />
* Some PnP ABI refactoring for future patches/work. ([[sir_richard]])<br />
* Switch to PnP Add Device routine, currently mostly a copy of the original ReactOS code. However, PnP now tries to open all the required registry keys before attempting to start the device. Failures are reported and load cancelled. More work TBD. ([[sir_richard]])<br />
* Rename IopBusTypeGuidList to PnpBusTypeGuidList to match Windows 2003 PnP Namespace instead of Windows 2000. ([[sir_richard]])<br />
* Use PnpBusTypeGuidList->Lock instead of PnpBusTypeGuidListLock. ([[sir_richard]])<br />
* Implement PipAllocateDeviceNode for setting up device nodes and linking them to a PDO. Only used for Root PnP now. Main ABI change is that allocate in ReactOS right now includes "insert". These will be seperate in the new PnP ABI. ([[sir_richard]])<br />
* Implement IopInitializePnpServices to replace PnpInit. Mostly the same work is done, but using new PnP ABI. ([[sir_richard]])<br />
* Implement new helper: IopCreateRegistryKeyEx. ([[sir_richard]])<br />
* Try moving towards new ABI. Lots of debug spam will be generated by various device node flags in incorrect states, and hacks that had to be made to maintain current functionality. Also document things being done at the wrong place. One small step... ([[sir_richard]])<br />
* 1MB is not 1000 * 1KB... ([[sir_richard]])<br />
* Read almost all the Memory Management variables into the system configuration vector. These includes pool limits, percentages, debugging flags, behavioral changes, and others. ([[sir_richard]])<br />
* Minimal stubbed support for some large page functionality in case it gets implemented later and these things would've been ignored. One critical change is that now the MmProcessList is initialized, and the system process is added to it. Other processes should be added later. ([[sir_richard]])<br />
* Add stubbed support for parsing the registry list of drivers that should have large pages enabled. ([[sir_richard]])<br />
* Initialize the loaded module list before working set work. ([[sir_richard]])<br />
* Start doing some minor MmResidentAvailablePages accounting during bootup. ([[sir_richard]])<br />
* Start doing the math required for computing the appropriate MmSystemCacheWsMinimum on the booting system (based on RAM). ([[sir_richard]])<br />
* Now that we use the HAL heap, add the code to scan it for I/O mappings. These are dangerous because we need to sync up caching attributes (not yet used in ReactOS, so not a problem for now). ([[sir_richard]])<br />
* Add more header definitions, and helper definitions such as PDE_MAPPED_VA instead of doing the math by hand. ([[sir_richard]])<br />
* Move MmPageEntireDriver and MmResetDriverPaging to sysldr.c since drvmgmt.c is more for Driver Verifier-style functionality. ([[sir_richard]])<br />
* Recommit rest of ntifs.h and wdm.h from header merge revert ([[Timo Kreuzer]])<br />
* Enable MmPageEntireDriver by implementing MiSetPagingOfDriver. ([[sir_richard]])<br />
* Call MiEnablePagingOfDriver from MmLoadSystemImage and implement it. All the work is done other than actually enabling paging, which requires system working set support. ([[sir_richard]])<br />
* Implement MiWriteProtectSystemImage and MiComputeDriverProtection. All the work is done other than actually setting the bits on the pages, since I wanted to avoid too many changes. ([[sir_richard]])<br />
* MmCheckSystemImage returns STATUS_INVALID_IMAGE_PROTECT, not STATUS_INVALID_IMAGE_FORMAT, so the branch in MmLoadSystemImage needs to check for the correct status code. ([[sir_richard]])<br />
* Support FLG_SHOW_LDR_SNAPS for the kernel loader. ([[sir_richard]])<br />
* Support unload of system modules by parsing the LoadedImports (implement MiDereferenceImports which was just a stub) and calling MiCallDllUnloadAndUnloadDll. ([[sir_richard]])<br />
* Fix a bug in MiClearImports. ([[sir_richard]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* MiFindExportedRoutineByName should validate the ordinal to make sure it's not higher than the function count. ([[sir_richard]])<br />
* Use MM_SYSLDR_ defines instead of magic pointer casts. Use appropriate pool tags. ([[sir_richard]])<br />
* Set the LoadedImport count early-on during image referencing, so that failure will correctly de-reference the imports. By setting it to zero, failures would've leaked driver-dependent DLLs already loaded but now useless. ([[sir_richard]])<br />
* Do the same checks as Windows to avoid drivers linked with user-mode DLLs. ([[sir_richard]])<br />
* Allow "coverage" and "irt" to be linked with Win32K drivers as well. ([[sir_richard]])<br />
* When the linker is fixed not to generate corrupt drivers, add the appropriate code to scan IMAGE_DIRECTORY_ENTRY_IAT for updating thunks. A hack exists in ReactOS now to permit loading these hacked drivers, but Windows is not so generous and will crash with a ReactOS driver. ([[sir_richard]])<br />
* Implement and call MiUseLargeDriverPage. ([[sir_richard]])<br />
* Implement and call MiBuildImportsForBootDrivers. We now have full dependency tracking for correct unloading. ([[sir_richard]])<br />
* Implement and call MiLocateKernelSections. Pool code and paging paths will require this information later. Loader work done for now. ([[sir_richard]])<br />
* Implement MiRemoveAnyPage and MiRemovePageByColor, but only using the list heads, and not the color list heads. Unused. ([[sir_richard]])<br />
* Fixup unused MiInsertPageInFreeList variables ot match the other functions (ColorTable vs ColorHead). ([[sir_richard]])<br />
* Acquire PFN lock before setting up hyperspace PTE/page. ([[sir_richard]])<br />
* Flush TLB after setting up hyperspace. ([[sir_richard]])<br />
* Use new MiRemoveAnyPage interface instead of MmAllocPage(MC_SYSTEM), as the first test of the new Page API/ABI. ([[sir_richard]])<br />
* Add support for creating software PTEs. ([[sir_richard]])<br />
* Restore previous correct ASM behavior of checking for success codes, not only STATUS_SUCCESS, after a page fault. For example, a demand zero fault returns STATUS_PAGE_FAULT_DEMAND_ZERO upon success, and the new C code would treat it as a failure. Fixes a bug. ([[sir_richard]])<br />
<br />
* User pages are not used until Phase 1, they should not be setup in Phase 0. Fixes premature initalization. ([[sir_richard]])<br />
* Fix 4MB assumptions and use PDE_MAPPED_VA instead, which accurately describes the address space mapped by a PDE (which is different on PAE, x64, ARM, etc). ([[sir_richard]])<br />
<br />
* Add assertions to the paged pool and demand zero page faults, to catch possible errors and corruptions. These paths are not yet taken in today's builds, so they do not affect any runtime code. ([[sir_richard]])<br />
* Add assertions regarding the portability of certain code, which will need changes on ARM/x64. These should probably be C_ASSERT's but I don't want to break Timo's build. ([[sir_richard]])<br />
* Define MM_NOIRQL (found in assertions) instead of magical -1. ([[sir_richard]])<br />
* Add MI_IS_SESSION_PTE macro. ([[sir_richard]])<br />
* Export the MiXxxPte variables. ([[sir_richard]])<br />
* Fix some typos in comments. ([[sir_richard]])<br />
* When grabbing physically contigous pages from the zero or free list, make sure to re-initialize their PFN entries correctly, since their data might be stale. Fixes potential weird memory corruption bugs. ([[sir_richard]])<br />
* Physically contiguous memory allocations are not guaranteed to be zeroed, so do not zero the pages. ([[sir_richard]])<br />
* When allocating contigous memory, mark the PFN entries appropriately after mapping the I/O ranges. ([[sir_richard]])<br />
* When freeing contiguous memory, assert that all the freed pages correspond to PFN entries that we expect to have allocated for this purpose. Detects (not neccessarily fixes) memory corruption issues in contiguous memory allocations. ([[sir_richard]])<br />
* These changes mostly affect certain network card and sound card systems/real hardware, they fix possible bugs and detect corruption that was otherwise going by unnoticed. ([[sir_richard]])<br />
* Fix definition of unused MI_MAKE_SOFTWARE_PTE macro. ([[sir_richard]])<br />
* Correctly setup the PFN entries for freshly allocated paged pool pages. Fixes a problem where the page could've still had stale/garbage data. ([[sir_richard]])<br />
* Add some extra assertions in the code to catch memory corruption and detect invalid logic. ([[sir_richard]])<br />
* Fix some typos in the code (comments/whitespace). ([[sir_richard]])<br />
* Make the dreaded page fault message that breaks paged pool on some systems more verbose for future debugging. ([[sir_richard]])<br />
* Re-implement IoGetDeviceProperty. Main changes are usage of existing (and new) helper functions for registry/IRP access, much better factored code, correct implementation of DevicePropertyPhysicalDeviceObjectName, fixed implementation of DevicePropertyBootConfigurationTranslated and DevicePropertyBootConfiguration (do not crash the system anymore), and support for more device properties. ([[sir_richard]])<br />
* Fix caller of IoGetDeviceProperty in pnpres.c to work with new function behavior (which matches WDK documentation and test cases). ([[sir_richard]])<br />
* Implement helper function PnpBusTypeGuidGet, should be used later in other PnP code, but now used only for this patch. ([[sir_richard]])<br />
* Implement helper function PnpDetermineResourceListSize, ditto. N.B. Current IopCalculateResourceListSize function is broken and callers should use this one instead. ([[sir_richard]])<br />
* Implement helper function PpIrpQueryCapabilities, should be used later in device node code, but now only used for this patch. ([[sir_richard]])<br />
* Implement helper function PnpDeviceObjectToDeviceInstance, ditto. ([[sir_richard]])<br />
* Main purpose of this patch is to unblock the new PCIx driver. ([[sir_richard]])<br />
* Root Bus PDO should not override Status with STATUS_NOT_IMPLEMENTED and instead use the current IRP status (which drivers/PnP will typically set to STATUS_NOT_SUPPORTED). Found by testing the new PCIx driver (probably fixes other bus drivers too). ([[sir_richard]])<br />
<br />
* Implement and start using the Pending-Deletion PFN flag. ([[sir_richard]])<br />
* As a result, for stack pages, the Transition page state will now be seen, and the new routine for re-inserting pages into the free list will now be used. Tracking of page table references is also done now for these pages (but we don't free the PT since this doesn't seem safe yet). ([[sir_richard]])<br />
* Fix Implementation of BreakOnTermination -- Process Flags should be accessed with interlocked bit semantics, not through C bitfield extension. ([[sir_richard]])<br />
* Revert 47425 and apply a better fix. ([[sir_richard]])<br />
* Timo/Physicus: Please validate for AMD64. ([[sir_richard]])<br />
* Write down the PTE attribute flags for X86/AMD64. Timo/Physicus: Please double-check. ([[sir_richard]])<br />
* Write down the array that converts from the MM_ protection flags arleady defined, into the appropriate PTE attribute flags that are architecture-specific. ([[sir_richard]])<br />
* This will allow constant-time conversion of NT attributes into PTE attributes. Win32 attributes to NT attributes conversion won't be needed until VAD support. ([[sir_richard]])<br />
* Implement MiAllocatePfn, it is a simpler wrapper that grabs a page, sets its protection, and initializes its PFN entry. ([[sir_richard]])<br />
* Use MiAllocatePfn in MiLoadImageSection instead of MmAllocPage. Other than doing a better job at initializing the page, it creates our first caller of this function, great for testing, since this is a rather high-demand function, especially at boot. ([[sir_richard]])<br />
* Please test. ([[sir_richard]])<br />
* Re-enable the APC debug check in the system call exit code that somehow got removed in 46247. ([[Stefan Ginsberg]])<br />
* Use an inline for emitting the iret instruction in C code for portability. ([[Stefan Ginsberg]])<br />
* Simplify the MSC assembly in KiSwitchToBootStack. ([[Stefan Ginsberg]])<br />
* Fix assertion hit during install ([[Johannes Anderwald]])<br />
* Fix identation ([[Johannes Anderwald]])<br />
* Remove superflous spaces ([[Johannes Anderwald]])<br />
* Allocate non-paged pool pages with MiRemoveAnyPage instead of MmAllocPage. ([[sir_richard]])<br />
* Implement a MI_MAKE_HARDWARE_PTE macro for the generation of valid kernel PTEs instead of always taking the ValidKernelPte and changing its flags. This macro will take into account the protection mask (up until now ignored) and use the array previously implemented to determine the correct hardware PTE settings. Assertions are also added to validate correct usage of the macro, and later revisions will fill out NT-specific fields to help deal with transition PTEs, page faults, etc. ([[sir_richard]])<br />
* Make the stack code the first user of this macro, for the stack PTEs. Good testing base as we create kernel stacks very often. ([[sir_richard]])<br />
* The NT MM ABI specifies that in between the allocation of a new PTE and its initialization as a valid PFN, the PTE entry should be an invalid PTE, and should only be marked valid after the PFN has been initialized. For stack PTEs, do this -- first allocating the page, making it invalid, then initializing the PFN, and then writing the valid page. ([[sir_richard]])<br />
* Build paged pool demand-zero PTE with MI_MAKE_SOFTWARE_PTE macro. ([[sir_richard]])<br />
* Handle paged pool demand-zero fault fulfillment with MI_MAKE_HARDWARE_PTE macro. ([[sir_richard]])<br />
* Use MiRemoveAnyPage instead of MmAllocPage, in paged pool demand-zero fault fulfillment. ([[sir_richard]])<br />
* These changes affect code paths that are not currently in-use. ([[sir_richard]])<br />
* When expanding paged pool, use MiRemoveAnyPage, not MmAllocPage. ([[sir_richard]])<br />
* When expanding paged pool, initialize the PFN entry for the allocated page. Note we might be in arbitrary process space, so the PTE is not necessary valid for the process causing the expansion. ([[sir_richard]])<br />
* Implement MiInitializePfnForOtherProcess to handle the case above. ([[sir_richard]])<br />
* Change two static ASSERTs into C_ASSERTs. Might break non-x86 builds for a bit (vs breaking them at boot, which is worse). ([[sir_richard]])<br />
* Paged pool should start working soon. ([[sir_richard]])<br />
* Implement MiDeleteSystemPageableVm. ([[sir_richard]])<br />
<br />
* In MiDeleteSystemPageableVm, should also handle the case where the PTE is demand-zero. This can happen if the caller allocated, say, 12KB (3 pages) of paged pool, only touched 4KB (1 page), and then frees the allocation -- the other 2 pages will still be demand-zero at this point. ([[sir_richard]])<br />
* In MiInitializePfnForOtherProcess, should increment the sharecount of the page table PFN entry, not the PFN entry of the PTE itself. Spotted by Stefan100. ([[sir_richard]])<br />
<br />
* Define POOL_BLOCK_SIZE definition to set the minimum pool block size. In NT, this is equal to a LIST_ENTRY structure, because the Pool Allocator must be able to store a LIST_ENTRY into a freed pool block. This also determines the alignment of pool allocations. So 8 on x86, 16 on x64. ([[sir_richard]])<br />
* Don't depend on LIST_ENTRY, but use POOL_BLOCK_SIZE instead (on IA64, if we ever want to support this, the pool block size is different from a LIST_ENTRY/POOL_HEADER). ([[sir_richard]])<br />
* The following ASSERTs must hold: the POOL_HEADER must be as big as the the smallest pool block (POOL_BLOCK_SIZE), which must be at least as big as a LIST_ENTRY structure. 8 == 8 == 8 on x86, 16 == 16 == 16 on x64. ([[sir_richard]])<br />
* Use logical math operations on the various block<->entry<->free_list_head operations in the pool code, instead of works-by-chance-and-assumption pointer math operations. This will now allow pool implementations where the pool header is not the size of a pool block (and the size of a LIST_ENTRY, by definition, although, even that, could change, if we choose to implement a cache-aligned overhead). ([[sir_richard]])<br />
* Defensive programming on the pool macros. ([[sir_richard]])<br />
* Add some paranoid-invariant list access checks to the pool code. They serve a dual purpose: catch pool corruption by broken drivers/kernel code, as well as catch malicious modification of the pool links as part of a kernel-mode exploit. ([[sir_richard]])<br />
* Not yet used, thanks to Arthur for the idea. ([[sir_richard]])<br />
* See comment for more information. ([[sir_richard]])<br />
* Fix Exp*PoolList macros. Also make then non-inlined, so we can see who called them in a stack trace. ([[sir_richard]])<br />
* Enable them. ([[sir_richard]])<br />
* This boots on my system -- if it doesn't boot on yours, someone is corrupting your nonpaged pool. Reverting this patch is NOT the solution to your woes. ([[sir_richard]])<br />
* Kill debug spew. ([[sir_richard]])<br />
* Fix up POOL_PREV_BLOCK based on suggestion by hpoussin. ([[sir_richard]])<br />
* Fix up NTAPI location in function definition. ([[sir_richard]])<br />
* Implement even more stringent header checks: ExpCheckPoolHeader and ExpCheckPoolBlocks. Normally we would only want this on a DBG build, but I am enabling them for now until I can fix paged pool. If your machine crashes, reverting this commit is NOT the solution (boots for me). ([[sir_richard]])<br />
<br />
* Fix for the the bug that broke ARM3 paged pool (and has been corrupting ReactOS paged pool behind the scenes for years): ([[sir_richard]])<br />
* When a KCB (key stuff) is allocated, the key name associated with it receives an NCB (name stuff). In case this name is already used, a cache exists, and an existing NCB is grabbed, and its reference count is increased. When the KCB goes away, its NCB loses a reference. When all references are gone, the NCB is destroyed. Simple enough. ([[sir_richard]])<br />
* It turns out that what was currently happening is that an NCB would get dereferenced to 0, deleted, but still remained attached to a valid KCB (shouldn't happen). When that KCB went away, the NCB's reference count was dropped to... -1, and then -2, -3, -4, etc. Remember this is a FREED NCB. In other words, freed pool, that might now belong to someone else, was getting "-1" operations on it. So any value stored in that freed pool would get decremented by one. In ARM3 paged pool, because the allocator keeps a linked list, what would happen is that the FLINK pointer would be 0xE0F01234 instead of 0xE1A01234. What happened is that "0xE1A0" was treated as the reference count of the freed NCB, and it kept getting dereferenced down to 0xE0F0. ([[sir_richard]])<br />
* Proving this was easy, by adding an ASSERT(Ncb->RefCount >= 1) to the routine that dereferences NCBs. Obviously, we should not try to dereference an NCB that has a reference count of 0, because that NCB is now gone. Adding this ASSERT immediately caught the error, regardless of which pool implementation was being used, so this was a problem in ReactOS today, right now. ([[sir_richard]])<br />
* My first thought was that we were taking references to NCBs without incrementing the reference count. The NCB gets referenced in two places: when it gets created, and everytime a cached NCB is re-used for a new KCB (all this in CmpGetNameControlBlock). ([[sir_richard]])<br />
* After adding some tracing code, I discovered that CmpGetNameControlBlock would sometimes return an NCB that was cached, but without referencing it. I did not understand why, since the code says "if (Found) Ncb->RefCount++". ([[sir_richard]])<br />
* Further analysis showed that what would happen, on this particular instance, is that NCB "Foo" was being Found, but NCB "Bar" was returned instead. Therefore, causing some serious issues: First, NCB Foo was receiving too many references. Secondly, NCB Bar was not being referenced. ([[sir_richard]])<br />
* Worse though, it turns out this would happen when "Foo" was the CORRECT NCB, and "Bar" was an INCORRECT NCB. What do we mean by correct and incorrect? Well, because NCBs are hashed, it's possible for two NCB hashes to be VERY SIMILAR, but only ONE OF THOSE NCBs will be the right one -- for example, HKLM\Software\Hello vs HKLM\Software\Hell. ([[sir_richard]])<br />
* In our case, when a KCB for "Hello" was searching for the "Hello" NCB, the "Hello NCB would get a reference, but the "Hell" NCB would be returned. In other words, whenever a HASH COLLISION happened, the incorrect NCB was returned, probably messing up registry code in the process. Subsequently, when the KCB was dereferneced, it was attached to this incorrect, under-referenced NCB. ([[sir_richard]])<br />
* Since in ANY hash collision with "Hell", in our example, the "Hell" NCB would come first, subsequent searches for "Hellmaster", "Hellboy", "Hello World" would all still return "Hell". Eventually when all these KCBs would go away, the "Hell" NCB would reach even -18 references. ([[sir_richard]])<br />
* The simple solution? When the CORRECT NCB is found, STOP SEARCHING! By adding a simple "break" statement. Otherwise, even after the correct NCB is found, further, incorrect, collided NCBs are found, and eventually the last one ("Hell", in our example) got returned, and under-referenced, while "Hellmaster" and "Hellboy" were not returned, but LEAKED REFERENCES. ([[sir_richard]])<br />
* There you have it folks, MEMORY CORRUPTION (USE-AFTER-FREE), INCORRECT REGISTRY NAME PARSHING, REFERENCE LEAKS and REFERENCE UNDERRUNS, all due to ONE missing "break;". ([[sir_richard]])<br />
* r ([[sir_richard]])<br />
<br />
* Fix a loop off-by-one when saving the page table index in contigious memory allocation PFNs. Spotted by Stefan100. ([[sir_richard]])<br />
* Implement MiRemoveZeroPage and MiZeroPhysicalPage. ([[sir_richard]])<br />
* Not yet used. ([[sir_richard]])<br />
* Don't use MmAllocPage for the first paged pool PDE, instead, use MiRemoveZeroPage. ([[sir_richard]])<br />
* Use MiInitializePfnForOtherProcess to setup the first paged pool PDE. ([[sir_richard]])<br />
* A PFN entry is not necessarily physical only if it is higher than MmHighestPhysicalPage. It can also be physical if it lies in a memory hole within the min-max physical page range. We can detect this by using our PFN Bitmap. So replace all "Is this an I/O mapping?" checks with a check on whether or not the PFN Database entry is NULL (which will check for us both of these statements). This ought to be a macro... ([[sir_richard]])<br />
* Another one bites the dust, another one bites the dust. And another one gone and another one gone. Another one bites the dust, yeah. Out of the doorway the bullets rip, Repeating to the sound of the beat. ([[sir_richard]])<br />
* Fix a comment and remove a superfluous extern. ([[Stefan Ginsberg]])<br />
<br />
* Get rid of MiInitializePageList, use MiGetPfnEntryOffset instead of hard-coded pointer math in freelist.c. ([[sir_richard]])<br />
<br />
* Inline writing to PTEs through MI_WRITE_VALID/INVALID_PTE. ([[Stefan Ginsberg]])<br />
* Check registry for our CardList, check if the PCI hardware matches any entry in there that specifies it has full/extended address decoding, and write the registry flag for it. ([[sir_richard]])<br />
* Warn only once about MmLockPageableImageSection being unimplemented. ([[sir_richard]])<br />
* There's no such thing as PRTL_MESSAGE_RESOURCE_ENTRY, use PMESSAGE_RESOURCE_ENTRY instead. ([[sir_richard]])<br />
* Add "vf" NTOS component, required NDK headers, and enable exports required for PCI driver to load. ([[sir_richard]])<br />
* VfFailDeviceNode is actuall __cdecl. ([[sir_richard]])<br />
* Sort, update, clean-up, and add descriptions to bugcodes.mc. ([[sir_richard]])<br />
* Warn only once in MmSecureVirtualMemory/MmUnsecureVirtualMemory, like it was done in 47864. ([[Aleksey Bragin]])<br />
* PnpBusTypeGuidGet : Really return status. ([[Amine Khaldi]])<br />
* Dedicated to Richard ;) ([[Amine Khaldi]])<br />
* Update comctl32 base address. ([[Sylvain Petreolle]])<br />
* Avoids inetcomm related comctl32 relocations. ([[Sylvain Petreolle]])<br />
* Also update comdlg32 address. ([[Sylvain Petreolle]])<br />
* Fixup some base address after mshtml growup. ([[Sylvain Petreolle]])<br />
* Revert rpcrt4 to 99% previous state : (Samuel)<br />
* keep out unix functions (Samuel)<br />
* keep checks that prevent crashes in rpc cstub and rpc winetests (Samuel)<br />
* Fix a typo. ([[Aleksey Bragin]])<br />
<br />
* Handle faults on user-mode addresses, from user-mode processes, if they are owned by ARM3, so they can be forwarded to the VAD fault handler. ([[sir_richard]])<br />
<br />
* Thanks to Timo Kreuzer for some clever definitions, Knuth for his genius, several online C implementations for ideas, the HPI kernel blog for insight on how Windows does it, and others. ([[sir_richard]])<br />
* Learn to build User PTEs as well, with MI_MAKE_HARDWARE_PTE_USER. ([[sir_richard]])<br />
* MI_MAKE_HARDWARE_PTE becomes MI_MAKE_HARDWARE_PTE_KERNEL, since it assumed this. MI_MAKE_HARDWARE_PTE is now a "generic" you can use when you don't know what the PTE should be. It uses MiDetermineUserGlobalMask to set the right bits. ([[sir_richard]])<br />
* Add two more helpers: MI_IS_PAGE_TABLE_ADDRESS and MI_IS_SYSTEM_PAGE_TABLE_ADDDRESS. One is in the symbols, the other I made up to make things clearer. ([[sir_richard]])<br />
* MiResolveDemandZeroFault now knnows how to resolve user-demand-zero-faults. ([[sir_richard]])<br />
* Implement MiZeroPfn to do the actual zeroing during user-demand-zero-faults (also later for VAD faults). ([[sir_richard]])<br />
<br />
* Initialize the system cache working set pushlock. ([[sir_richard]])<br />
* Implement Mi(Un)Lock(Process)WorkingSet inlines to handle the various scenarios. Replace broken/hacky code that was in the system loader, fault handler, and VM deletion paths with the correct macros. No locking is done yet as ReactOS' MAREA implementation overloads the Vm field in EPROCESS, but the correct APC blockings and state transitions are done. ([[sir_richard]])<br />
* Add another helper from symbols, MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS, and use it instead of the math-by-hand. ([[sir_richard]])<br />
* Add MM_IS_ANY_LOCK_HELD and MI_WS_OWNER to help out the new working let locking inlines (names taken from symbols). ([[sir_richard]])<br />
* Add _1GB helper for large-memory checks. Also define _1KB as "1024u". The "u" makes GCC not complain when sizes reach >= 2GB, because GCC will interpret the integer literals as "signed", even if the final calculated value is in an unsigned variable. ([[sir_richard]])<br />
* Allocate the PEB at a pseudo-random address just like Windows XP SP2 and later, to prevent certain kinds of exploits. ([[sir_richard]])<br />
* Allocate PEB and TEB using VADs! The user-mode fault handler seems to work fine, and I could find no regressions. This is the beginning of the end for MAREAs for VM allocations (they will remain for sections). ([[sir_richard]])<br />
* Antique leftover, initialize the shared user data page with MI_MAKE_HARDWARE_PTE_KERNEL ([[sir_richard]])<br />
* Stop handling a bunch of MEMORY_AREA_TYPEs that aren't used anymore. ([[sir_richard]])<br />
* Define the template prototype PTE. ([[sir_richard]])<br />
* Stop handling PEB/TEB MAREAs since they're not used anymore. ([[sir_richard]])<br />
* Note: this patch only implements the code paths, they are not excercised yet. ([[sir_richard]])<br />
* Implement handling a very special case of "prototype PTE", the one used to map the shared user data for user-mode applications. ([[sir_richard]])<br />
* MiCheckVirtualAddress detects this (Windows behavior) and returns a prototype PTE that's marked MM_READONLY. This is our MmSharedUserDataPte from before. This gets sent to MiDispatchFault which calls MiResolveProtoPteFault to handle it. In turn, this calls MiCompleteProtoPteFault. All these code paths have heavy ASSERTions to only allow them to be hit for the shared user data page, however, in the far distant future when prototype PTEs are used for section objects, we'll at least have the right checks and code flow (many of these ASSERTions will then have to be removed). ([[sir_richard]])<br />
* The end result is that we also now have STATUS_PAGE_FAULT_TRANSITION, not just STATUS_PAGE_FAULT_DEMAND_ZERO, and that prototype PTEs are somewhat understood and some assumptions have been removed. ([[sir_richard]])<br />
<br />
* Prepare to take over MmCreateProcessAddressSpace. ([[sir_richard]])<br />
* Reimplement MmCreateProcessAddressSpace in ARM3. Basically the same as before but using the ARM3 PFN list APIs, the ARM3 macros, etc. Once change is processes are now populating the MmProcessList, and the "MmGlobalKernelPageTable" isn't used anymore for new processes. Also the mappings come from SysPTE space, not hyperspace. ([[sir_richard]])<br />
* More work will be needed in this area, but this gets rid of another ReactOS dinosaur. ([[sir_richard]])<br />
* Implement MmCleanProcessAddressSpace in ARM3, now the PEB/TEB VADs are removed when the process exits (although the pages are still leaking, for now), and the pool allocation for the VAD is also freed. ([[sir_richard]])<br />
* Use ARM3 paged pool up until smss.exe starts. There's a last bug in the expansion code before we can get rid of the old paged pool. ([[sir_richard]])<br />
* Implement MmDeleteTeb, VADs are now deleted/freed on thread exit as well (but the underlying page is still leaked). Should fix the advapi32 security crash. ([[sir_richard]])<br />
* Sometimes it seems we hit some bad VADs due to bugs? in the AVL tree implementation. I'm going on vacation for a month and can't look at this, so I've hacked the code to ignore such VADs for now, in the interest of fixing the winetest regression. ([[sir_richard]])<br />
* Convert MmProtectToPteMask to extern. ([[Amine Khaldi]])<br />
* Convert LpcpAllocateFromPortZone to static __inline. ([[Amine Khaldi]])<br />
* Another long-lost-promised straggler for Timo. There may be more of these needed, this is what I had done on my disk. ([[sir_richard]])<br />
* Fix kernel memory corruption when dequeuing a PnP event ([[Cameron Gutman]])<br />
* Xcode.... ([[Cameron Gutman]])<br />
* Aleksey wants an easy way to see debug messages coming from one process vs. another, which is an obvious idea that should've done a long time ago. Now you can see who is generating a given debug message (including the thread). ([[sir_richard]])<br />
* Add DRIVER_CAUGHT_MODIFYING_FREED_POOL bugcheck code. ([[sir_richard]])<br />
* Add support for protected freed nonpaged pool. This is controlled through MmProtectFreedNonPagedPool, which is initialized based on a registry value (see cmdata.c). This is not "Special Pool", but a useful debugging feature Windows implements that we now have too, since I noticed a lot of mj's work was with freed pool access. ([[sir_richard]])<br />
* NB. It's 3AM and I have not tested this, it should be off in trunk by default, you'll need to try turning it on and testing it. Hope it helps. ([[sir_richard]])<br />
* This line, and those low, will be ignored-- ([[sir_richard]])<br />
* M ntoskrnl/mm/ARM3/pagfault.c ([[sir_richard]])<br />
* M ntoskrnl/mm/ARM3/pool.c ([[sir_richard]])<br />
* M include/reactos/mc/bugcodes.mc ([[sir_richard]])<br />
* Missed a bunch of codepaths, protected pool "should" work now. ([[sir_richard]])<br />
* Add an extra layer of protection for freed nonpaged pool: write a 4-byte signature on freed blocks, and assert its valid on checked builds. Use a slightly less egocentric ASCII value than on Windows (name of the developer who wrote the first memory manager). ([[sir_richard]])<br />
* Remove useless variables in kernel code that were set, but never actually used (dead code, tests, copy/pasters). If a variable was set but not used because of missing/#if'ed out code, a note was added instead. ([[sir_richard]])<br />
* In the process, fix bugs in the Event dispatcher code that used Win32 EVENT_TYPE instead of NT KOBJECTS enumeration. ([[sir_richard]])<br />
* Fix a bug in ObpInsertHandleCount, where the object access check was being done with the previous mode, instead of honoring the probe mode, which is defined by OBJ_FORCE_ACCESS_CHECK. ([[sir_richard]])<br />
* Fix a bug in a section function which was always returning STATUS_SUCCESS, now it returns the result of the previous Status = function assignment. If this isn't desired, then don't check for the Status anymore. ([[sir_richard]])<br />
* Note that MDL code does not support SkipBytes argument. If it is used, MDL could be invalid. ([[sir_richard]])<br />
* Add checks for VerifierAllocation and set it when needed (WIP). ([[sir_richard]])<br />
* Clarify what _WORKING_LINKER_ is, and the legal risks in continuing to use a linker that builds non-Microsoft drivers when used with headers whose EULA specify that they can only be used for Microsoft drivers. ([[sir_richard]])<br />
* Rename KINTERRUPT_DISPATCH_CODES to DISPATCH_LENGTH, as it is in PSDK. ([[Aleksey Bragin]])<br />
* Enhance NMI debug support. ([[Aleksey Bragin]])<br />
* Change some comments to standard ReactOS commenting style. ([[Aleksey Bragin]])<br />
* Fix a strange bug where we were only setting SharedUserData->TestRetInstruction conditionally only if lookup failed - it should be set on success. Also, bail out if the lookups failed. ([[Aleksey Bragin]])<br />
* Fix a code typo which led to a security issue when the XOR algorithm for the system cookie might actually yield zero. Now it's going to loop as long as the cookie is 0, attempting to generate a non-zero one. ([[Aleksey Bragin]])<br />
* Fix several bugs in Inbv (busted locking code, useless variables, magic initializers). ([[Aleksey Bragin]])<br />
* Daniel Zimmermann: Fix POPF bugs in VDM mode, namely truncation of the stackpointer to 16 bit and setting proper flags in the trapframe eflags register. This fixes problems with videocards calling int 0x10 VESA BIOS extension. ([[Aleksey Bragin]]; {{bug|5608}})<br />
* Add CmRegistryMachineSystemName to the internal header file, needed for Pierre's further work. ([[Aleksey Bragin]])<br />
* Move the fix for pool corruption due to dangling MmProcessLinks pointer into its correct location. Thanks again to Martin for the fix. ([[sir_richard]])<br />
* Likely fix for bug 5600: ([[sir_richard]])<br />
* Using IsBadRead/CodePtr, it's possible for user-mode code to generate cases where we *think* this is an ARM3-managed piece of VA, which will always have a VAD (Since we only manage the PEB/TEB), but actually it's a bogus VA-looking address that is actually invalid. We didn't consider this case. We now implement the same code Windows normally would also handle, when the VA is bogus, and accept that no VAD might be found, so MM_NOACCESS is returned and thus an access violation sent to the caller. In the case of the IsBad...Ptr, this function would then return TRUE, as the caller expects. ([[sir_richard]])<br />
* More fixes to VDM PUSH/POPF code: ([[Timo Kreuzer]])<br />
* When doing a 32bit push, don't store the flags 2 bytes off ([[Timo Kreuzer]])<br />
* Recalculate HardwareEsp, by substracting the segment part, instead of truncating the flat pointer to 16 bit. ([[Timo Kreuzer]])<br />
* Add support for Cyrix CPUs by checking and applying a workaround for the Cyrix 6x COMA bug (description here: http://gwyn.tux.org/~balsa/linux/cyrix/p11.html). ([[Aleksey Bragin]]; {{bug|5610}})<br />
* Add support for KeyValueFullInformationAlign64, used by some Windows drivers (as a bonus, support Win64). PartialInformationAlign64 is a different beast -- warn when a driver attempts to use it, instead of silent failure. ([[sir_richard]])<br />
* Export VfFailSystemBIOS and stub it. ([[sir_richard]])<br />
* Warn when a driver fails to load due to a missing dependency and print the name and/or missing module, instead of silently failing. ([[sir_richard]])<br />
* Due to a bug in the ReactOS PnP manager, Windows PCI Driver hits an internal pseudo-assert. Hack KeBugCheckEx to ignore this pseudo-assert and continue executing normally. ([[sir_richard]])<br />
* Update 3rd Party Files.txt To Current 3rd Party Releases. ([[Aleksey Bragin]]; {{bug|5603}})<br />
<br />
=== NTOS_HAL ===<br />
* Rework respective code to handle this by using the VDM Alert field in the KPCR. ([[sir_richard]])<br />
* this log message left intentionally non-descriptive ([[Matthias Kupfer]])<br />
* Remove VDM Alert KPCR hack (which was buggy). Now the PKTRAP_FRAME is passed as a parameter to HalpEndSoftwareInterrupt/HalEndSystemInterrupt. This also removes the HalpNestedTrap ASM hack, since the call can now be done in C. ([[sir_richard]])<br />
* Move trap entry points from C into a GAS/ML compatile assembly file (might need fine tuning for ML). The entries are generated by a shared assembly macro TRAP_ENTRY. Removed KiTrapStub, KiIsV8086TrapSafe, KiIsUserTrapSafe, KiSetSaneSegments, removed segment handling from KiEnter*Trap. ([[Timo Kreuzer]])<br />
<br />
=== NTOS_PERF ===<br />
* Enable VME support. VME stands for Virtual 8086 Mode Extensions, and it's an Intel optimization that makes changes to the IF bit in EFLAGS (CLI, STI, INT, IRETD, PUSHF, POPF) completely transprent: instead of changing the real (protected) bit, which requires the OS to trap and emulate the behavior, the CPU sets a "Fake" IF bit instead. When you're dong in V8086 mode, you simply update your real flag with whatever the fake flag says. ([[sir_richard]])<br />
<br />
=== NTOSKNL ===<br />
* undef IoAllocateAdapterChannel before implementing it ([[Timo Kreuzer]])<br />
<br />
=== NTOSKNRL ===<br />
* Add the possibility to break on all first chance exceptions, by passing /FIRSTCHANCE on the command line. Enable it temporary to get some more information from the sysreg crash. ([[Timo Kreuzer]])<br />
* Add /KDSERIAL to the command line, to make sysreg able to bt in first stage. ([[Timo Kreuzer]])<br />
<br />
=== NTOSKRL ===<br />
* Add missing MI_LOWEST_VAD_ADDRESS for amd64 ([[Timo Kreuzer]])<br />
<br />
=== NTOSKRNL_CONFIG ===<br />
* Add a macro for asserting hash lock ownership. ([[Aleksey Bragin]])<br />
* Add a macro for getting an alloc page from KCB / delay alloc item. ([[Aleksey Bragin]])<br />
* Add a newly allocated KCB to the tail of CmpFreeKCBList, not to its head. ([[Aleksey Bragin]])<br />
* Add more assert macros for registry operations: locked or loading, exclusively locked or loading, hash and KCB locks, locked for flushing. ([[Aleksey Bragin]])<br />
* Add macros for getting alloc page from KCB and delay alloc item. ([[Aleksey Bragin]])<br />
* Stub support for global quota enable. ([[Aleksey Bragin]])<br />
* Stub support for notifications. ([[Aleksey Bragin]])<br />
* Add a source file for a future HiveList implementation. ([[Aleksey Bragin]])<br />
* Implement new (correct) hive flusher lock/release routines, unused right now. ([[Aleksey Bragin]])<br />
* Flusher lock fixes: wrong kind of lock,total mess (and the wrong kind of lock). Properly fixed throughout cmapi.c, but still missing in many other places. ([[Aleksey Bragin]])<br />
* Add support for detecting loading of an already loaded hive. ([[Aleksey Bragin]])<br />
* Start adding calls to CmpReportNotify to support registry callbacks. ([[Aleksey Bragin]])<br />
* Do work needed to flush notifications for a deleted node (but CmpFlushNotify not yet implemented). ([[Aleksey Bragin]])<br />
* Add support for adding each newly loaded hive to the HiveList key in the registry (but CmpAddHiveToFileList not yet implemented). ([[Aleksey Bragin]])<br />
* Add some ViewLock acquire/releases where needed. ([[Aleksey Bragin]])<br />
* Load the key in a faster way (Ob vs Zw) ([[Aleksey Bragin]])<br />
* Add checks everywhere for HvMarkCellDirty success. In future (when log/backup file is enabled), it can return FALSE (e.g. when we are out of space). ([[Aleksey Bragin]])<br />
* Change logic in CmpDoFlushAll to only flush a hive if it won't shrink (in the future, flushing may lead to hive shrinkage for efficiency). ([[Aleksey Bragin]])<br />
* Add SEH2 protection to all CmApis that may deal with user-mode data. ([[Aleksey Bragin]])<br />
* Add HvTrackCellRef/HvReleaseCellRef for tracking cell references in scenarios where we might need many GetCell/ReleaseCell calls. For now stubbed to only work with up to 4 static references. ([[Aleksey Bragin]])<br />
* Properly unlock/free in some failure paths in some of the CM APIs. ([[Aleksey Bragin]])<br />
* Add some missing HvReleaseCell in paths where it was missing. ([[Aleksey Bragin]])<br />
* Try to fix hack in enumerate key. ([[Aleksey Bragin]])<br />
* Fix wrong usage of KeQuerySystemTime. It was called twice to save it in 2 different places. Instead, there should be only one call, and then duplicate the value across. ([[Aleksey Bragin]])<br />
* Fix logic in CmpSetValueExistingData/Key. ([[Aleksey Bragin]])<br />
* Tested with winetests and .NET framework 1.1 installation which fully completes. ([[Aleksey Bragin]])<br />
<br />
=== NTOSKRNL_FREELDR ===<br />
* Add amd64 linker scripts ([[Timo Kreuzer]])<br />
<br />
=== NTOSKRNL_IO ===<br />
* Check for null pointers before attempting to copy or free memory. ([[Michael Martin]])<br />
* Modify IopCreateDriver to accept the PLDR_DATA_TABLE_ENTRY instead of the DllBase and SizeOfImage from this structure. ([[Michael Martin]])<br />
* Set the DriverObject->DriverSection before calling the DriverEntry routine. ([[Michael Martin]])<br />
* If the DriverEntry routine fails then set the DriverObject->DriverSection back to NULL so that IopDeleteDriver doesnt attempt to unload the ModuleObject, after it was already unloaded by the caller. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_IO_PNPMGR ===<br />
* Fix incorrect POOL_TYPE allocation in IoInvalidateDeviceRelations. This function can be called at DISPATCH_LEVEL, which requires NonPagedPool POOL_TYPE. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_PO ===<br />
* When an IRP is freed in a Completion routine the return Status is STATUS_MORE_PROCESSING_REQUIRED to let IoCompleteRequest know not to do anything further with the IRP. ([[Michael Martin]])<br />
* Fix typo. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* Acquire and Release RundownProtection on the Parent Pocess not the newly created Pcess when setting the SectionObject. ([[Michael Martin]])<br />
* When deleting a Process remove the Process from the MmProcessList. Fixes random NonPaged Pool corruptions. Thanks aicom for assistance. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* Fix a teb member name ([[Timo Kreuzer]])<br />
* 44506 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
=== OLDNAMES ===<br />
* Update moldname-msvcrt.def ([[Timo Kreuzer]])<br />
* Add a proper oldnames lib, instead of implicitly including it with mingw. ([[Timo Kreuzer]])<br />
* 46526 ([[Timo Kreuzer]])<br />
<br />
=== RSYM64 ===<br />
* fix linux compilation ([[Timo Kreuzer]])<br />
* Silence annoying error messages ([[Timo Kreuzer]])<br />
<br />
=== SCM ===<br />
* Fix SCM shutdown. Now all services are stopped (in my working copy with the CSRSS shutdown code). ([[sir_richard]])<br />
<br />
=== SETUPLDR ===<br />
* Do not build on ARM. On a side note, I offer a bountry for "if ARCH != ARM" support in .rbuild files, instead of only allowing * Use mini_hal only on i386 builds ([[Timo Kreuzer]])<br />
* Unify the old setupldr settings with more recent freeldr ones. Also fixes missing _udiv/mod functions on my build. ([[sir_richard]])<br />
<br />
=== STRSAFE ===<br />
* Add strsafe.h from amd64 branch. ([[Timo Kreuzer]])<br />
<br />
=== VMX-SVGA ===<br />
* Experimental driver for WMX-SVGA for testing memory manager and VideoPrt issues and acceleration on QEMU. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Replace mixer / wave support code by mmixer library ([[Johannes Anderwald]])<br />
* Perform all allocations / frees in dedicated alloc / free function ([[Johannes Anderwald]])<br />
* Fix possible buffer overflow ([[Johannes Anderwald]])<br />
<br />
=== WIN32K|GDI32 ===<br />
* Fix GdiBatch, the limit is for user space not system. ([[James Tabor]])<br />
* Enable font batch and fixed setting brush origion. Use the new delete object functions in win32k. ([[James Tabor]])<br />
<br />
=== WIN32K|GGI32 ===<br />
* Diagnostic commit used for troubleshooting leaking region handles. ([[James Tabor]])<br />
* Updates to headers and experimental code added for regions. ([[James Tabor]])<br />
<br />
=== XDK_DDK ===<br />
* Relax INTERLOCKED_RESULT inclusion guard. ([[Amine Khaldi]])<br />
<br />
=== SYSGEN ===<br />
* Implement a rewrite of rbuild written in c# ([[Marc Piulachs]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek
https://reactos.org/wiki/index.php?title=ChangeLog-0.3.12&diff=28782
ChangeLog-0.3.12
2010-10-03T05:15:40Z
<p>CycleGeek: log2line: Updated to version 2.2; Uncategorized: organize some of the info</p>
<hr />
<div>TODO: If you want to help, I could really use someone who would go through the list of bugs listed in the regression and bullet point them into actually saying what is broken, ie, what can no longer be done due to the bug. -Z98<br />
<br />
New TODO: We have a bunch of third party libraries, not Wine libraries, but stuff like zlib or whatever. Could someone put them into a list and just state the version they got updated to? I've added a place for them under the Generic section. It may get moved eventually, but we'll leave it there as a temporary measure. -Z98<br />
<br />
This is the changelog for ReactOS™ [[0.3.12|version 0.3.12]] (date yet to be determined), an open-source operating system designed to be binary executable - and device driver-compatible with Microsoft™ Windows NT™ and subsequent Microsoft operating systems such as Windows 2000™ and Windows XP™. ReactOS is written by the ReactOS development team, and the last previous version of ReactOS was [[ChangeLog-0.3.11|version 0.3.11]] (released 16 December 2009).<br />
<br />
= General =<br />
== Contributors ==<br />
=== Core Developers ===<br />
* Giannis Adamopoulos: Applications, Win32.<br />
* Johannes Anderwald: Kernel, sound.<br />
* Aleksey Bragin: Filesystem, kernel, Win32k.<br />
* Colin Finck: Build tools, translations, release engineer.<br />
* Jérôme Gardou: Win32.<br />
* Stefan Ginsberg: Kernel.<br />
* Dmitry Gorbachev: Applications.<br />
* Cameron Gutman: Networking, PnP.<br />
* Kamil Horníček: 3D Graphics, Win32.<br />
* Amine Khaldi: Build tools.<br />
* Eric Kohl: Kernel, Win32.<br />
* Timo Kreuzer: Win32k.<br />
* Matthias Kupfer: Applications, Win32.<br />
* Michael Martin: Kernel, USB.<br />
* Jeffrey Morlan: Applications, Win32.<br />
* Filip Narava: USB.<br />
* Sylvain Petreolle: Applications.<br />
* Hervé Poussineau: Kernel.<br />
* ReactOS Portable Systems Group: ARM porting, drivers, kernel.<br />
* Daniel Reimer: Build tools, translations.<br />
* Gregor Schneider: Win32.<br />
* Pierre Schweitzer: Filesystem, kernel.<br />
* James Tabor: Win32.<br />
* Christoph von Wittich: Win32.<br />
<br />
=== Patch Submitters ===<br />
* Andrea<br />
* Carlo Bramini<br />
* James Edmeades<br />
* Benedikt Freisen<br />
* Rafal Harabien<br />
* Katayama Hirofumi<br />
* Kusanagi Kouichi<br />
* Radek Liška<br />
* Roel Messiant<br />
* Andrew Nguyen<br />
* Samuel Serapión<br />
* Seungju<br />
* Dmitry Timoshkov<br />
* Henri Verbeet<br />
<br />
=== Localization ===<br />
* forenkrams [AT] tuxproject [DOT] de<br />
* Andres Traks<br />
* Andrew Faulds<br />
* Arturs B<br />
* CCTAHEB<br />
* Edison Henrique Andreassy<br />
* Egon Ashrafinia<br />
* Gabriel Ilardi<br />
* Igor Paliychuk<br />
* Javier Fernandéz<br />
* Javier Remacha<br />
* Katayama Hirofumi<br />
* Maciej Bialas<br />
* Maikel Wever<br />
* Marcelo Zamperetti<br />
* Mario Kacmar<br />
* Olaf Siejka<br />
* Paolo Devoti<br />
* Radek Liška<br />
* Sakara Yevhen<br />
* Tomoya Kitagawa<br />
<br />
=== Support Staff ===<br />
* Danny Gotte: Web Developer.<br />
* Ziliang Guo: Release Engineer, Web Content Maintainer.<br />
<br />
== Generic 0.3.12 Changes ==<br />
=== Applications ===<br />
* Calc: Units and conversion factors added.<br />
* Cmd: Line breaks follow DOS/Windows style (CRLF) now and various fixes to tab completion.<br />
* IPconfig: Media detection is now fixed.<br />
* MSCUtils: Column names now use resource strings instead of hardcoded strings.<br />
* Netstat: UDP packets are only displayed when the correct argument is passed to netstat at startup.<br />
* Paint: Initial selection support and angle rounding for lines and edges.<br />
* Regedit: Fix searching the registry.<br />
* Taskmgr: Usability fixes to remove outdated information and improve performance of information updates.<br />
=== Control Panel Applets ===<br />
* Console: Store changes when buffer/window size or color changes.<br />
* Desk: Fix theme switching and screensaver selection.<br />
* Input: Fix changing of keyboard layout.<br />
* Intl: Use resource strings for 'metric' and 'Imperial' strings.<br />
* Sysdm: Fix creation of paging file and place constraints on file size.<br />
=== Installer ===<br />
Various tweaks were made to the installer to ease installing ReactOS.<br />
* Provide ability to overwrite GRUB or LILO instead of failing to install Freeloader.<br />
* Fix reading of partitions created in non-standard formats by Linux.<br />
* Minimum space check notification improved. Minimum space value also made configurable through text file.<br />
* Creation of new partitions fixed by correctly writing values of the BIOS Parameter Block.<br />
* Installer does not restart in second stage if ESC is pressed.<br />
* PathName and SystemRoot registry key values are now written by the installer.<br />
=== Services ===<br />
* Services no longer trample over other services when reporting their status.<br />
* DHCP: Service rewritten to be compatible with mswsock_new and not clobber network information stored in the registry. LiveCD now has working networking.<br />
* EventLog: Fixes to reading and displaying of log content.<br />
== Tests ==<br />
http://www.reactos.org/testman/compare.php?ids=2123,4021<br />
== Translations ==<br />
<br />
'''Bulgarian'''<br />
* 3dtext<br />
* doskey<br />
* explorer<br />
* ipconfig<br />
* mscutils/servman<br />
* rapps<br />
* shutdown<br />
* spider<br />
* usetup<br />
* winemine<br />
<br />
'''Chinese'''<br />
* charmap<br />
* dxdiag<br />
* fontview<br />
* magnify<br />
* mmc<br />
<br />
'''Czech'''<br />
* appwiz<br />
* devmgr<br />
* intl<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* notepad<br />
* paint<br />
* regedit<br />
* setupapi<br />
* shell32<br />
* slayer<br />
* sndvol32<br />
* sysdm<br />
* userenv<br />
* usetup<br />
* winemine<br />
<br />
'''Dutch'''<br />
* calc<br />
* usetup<br />
<br />
'''English'''<br />
* advpack<br />
* dxdiag<br />
* rapps<br />
* usetup<br />
<br />
'''Estonian'''<br />
* usetup<br />
<br />
'''French'''<br />
* Add french translations for location overrides. ([[Sylvain Petreolle]])<br />
* eventvwr<br />
* paint<br />
* spider<br />
* usetup<br />
<br />
'''German'''<br />
* Added a German translation myself. ([[Daniel Reimer]])<br />
* access<br />
* appwiz<br />
* calc<br />
* cmd<br />
* cmdutils/reg<br />
* console<br />
* desk<br />
* deskadp<br />
* deskmon<br />
* devmgr<br />
* doskey<br />
* downloader<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* fontview<br />
* format<br />
* hdwwiz<br />
* input<br />
* intl<br />
* ipconfig<br />
* joy<br />
* kernel32<br />
* liccpa<br />
* main<br />
* mmsys<br />
* modemui<br />
* mplay32<br />
* msconfig<br />
* mscutils<br />
* msgina<br />
* mstsc<br />
* netcfgx<br />
* netid<br />
* netshell<br />
* newdev<br />
* notepad<br />
* paint<br />
* powercfg<br />
* rapps<br />
* rasdlg<br />
* regedit<br />
* regsvr32<br />
* runonce<br />
* screensavers/3dtext<br />
* screensavers/logon<br />
* serialui<br />
* setup/reactos<br />
* shdoclc<br />
* shell32<br />
* shimgvw<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* tapiui<br />
* taskmgr<br />
* timedate<br />
* user32<br />
* userenv<br />
* usetup<br />
* usrmgr<br />
* vmwinst<br />
* welcome<br />
* winemine<br />
* winlogon<br />
<br />
'''Italian'''<br />
* calc<br />
* explorer-new<br />
* intl<br />
* mscutils<br />
* netid<br />
* netshell<br />
* paint<br />
* rapps<br />
* regedit<br />
* shell32<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Japanese'''<br />
* cacls<br />
* charmap<br />
* magnify<br />
* mscutils/devmgmt<br />
* mscutils/servmgr<br />
* paint<br />
* rapps<br />
* runonce<br />
* shutdown<br />
* sndrec32<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* win32csr<br />
<br />
'''Polish'''<br />
* calc<br />
* mscutils<br />
* usetup<br />
<br />
'''Portuguese'''<br />
* syssetup<br />
* usetup<br />
<br />
'''Russian'''<br />
* spider<br />
* sysdm<br />
* usetup<br />
<br />
'''Slovak'''<br />
* calc<br />
* devmgr<br />
* explorer-new<br />
* intl<br />
* netshell<br />
* paint<br />
* rapps<br />
* regit<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* syssetup<br />
* usetup<br />
<br />
'''Spanish'''<br />
* browseui<br />
* devmgr<br />
* notepad<br />
* paint<br />
* rapps<br />
* runonce<br />
* shell32<br />
* sndrec32<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* usetup<br />
* usrmgr<br />
* welcome<br />
<br />
'''Ukrainian'''<br />
* aclui<br />
* browseui<br />
* charmap<br />
* cmd<br />
* desk<br />
* dxdiag<br />
* explorer<br />
* explorer-new<br />
* freeldr<br />
* input<br />
* kernel32<br />
* mscutils/devmgmt<br />
* mscutils/eventvwr<br />
* msgina<br />
* mstsc<br />
* newdev<br />
* notepad<br />
* paint<br />
* rapps<br />
* regedit<br />
* runonce<br />
* setup<br />
* shell32<br />
* shimgvw<br />
* sndrec32<br />
* sndvol32<br />
* solitaire<br />
* spider<br />
* sysdm<br />
* syssetup<br />
* taskmgr<br />
* usetup<br />
* winemine<br />
<br />
== Wine Syncs ==<br />
ReactOS relies heavily on Wine for many of its Win32 libraries and syncs these as Wine incorporates improvements into their releases. Most of these libraries are synched to versions 1.2 or 1.3.<br />
<br />
Libraries Synced<br />
* odbc32<br />
* msdmo<br />
* credui<br />
* cryptdlg<br />
* cryptnet<br />
* cryptui<br />
* inetmib1<br />
* mapi32<br />
* msiexec<br />
* netapi32<br />
* pdh<br />
* shdoclc<br />
* xmllite<br />
* actxprxy<br />
* amstream<br />
* clusapi<br />
* d3d8<br />
* d3d9<br />
* ddraw<br />
* dwmapi<br />
* faultrep<br />
* hnetcfg<br />
* iccvid<br />
* imm32<br />
* initpki<br />
* itircl<br />
* itss<br />
* localui <br />
* mdi<br />
* mlang<br />
* mpr<br />
* mscms<br />
* msg711.acm<br />
* msimtf<br />
* msnet32<br />
* msrle32<br />
* mssip32<br />
* msvcrt20<br />
* nddeapi<br />
* obsel<br />
* oleacc<br />
* oledlg<br />
* olepro32<br />
* postorec<br />
* query<br />
* tapi32<br />
* uxtheme<br />
* wined3d<br />
* dbghelp<br />
* fusion<br />
* hlink<br />
* riched20<br />
* activeds<br />
* atl<br />
* avifil32<br />
* cabinet<br />
* comdlg32<br />
* gdiplus<br />
* hhctrl.ocx<br />
* inetcomm<br />
* inseng<br />
* jscript<br />
* localspl<br />
* mciavi32<br />
* mcicda<br />
* mciqtz32<br />
* mciseq<br />
* mciwave<br />
* mscoree<br />
* msctf<br />
* msgsm32.ac<br />
* msvfw32<br />
* msvidc32<br />
* msxml3<br />
* oleaut32<br />
* rsaenh<br />
* schannel<br />
* shlwapi<br />
* sti<br />
* urlmon<br />
* usp10<br />
* version<br />
* windowscodecs<br />
* wintrust<br />
* comctl32<br />
* crypt32<br />
* mshtml<br />
* msi<br />
* msxml<br />
* ole32<br />
* qedit<br />
* quartz<br />
* rpcrt4<br />
* rsaenh<br />
* shdocvw<br />
* shlwapi<br />
* urlmon<br />
* widl<br />
* wininet<br />
<br />
== Third Party Libraries ==<br />
* DejaVu Fonts 2.30 -> 2.31<br />
* Liberation Fonts 1.04 -> 1.05.2<br />
* Update zlib from 1.2.3 to 1.2.5<br />
* Update libjpeg from 6b to 8b<br />
* Add a new libpng 1.4.3<br />
* Add libtiff 3.9.4<br />
<br />
== Regressions ==<br />
* #4086 CDFS - Data Corruption<br />
* #4330 ReactOS crashes upon restart after installing a 3Com NIC-driver<br />
* #4811 comctl32: dll winesync broke AbiWord toolbar<br />
* #5025 Freeloader error while booting from GRUB with Ubuntu and Windows XP installed<br />
* #5035 Abiword: Fonts listbox isn't shown properly<br />
* #5158 Some keystrokes get lost if typing fast in VirtualBox<br />
* #5290 Slowness during file copying in 1st stage in VirtualBox<br />
* #5320 Not POWNED or CLASSDC hwndCurrent<br />
* #5372 Failed to create directory L"%USERPROFILE%\\Local Settings\\... in 2nd stage<br />
* #5443 Inkscape 0.43-2 crashes immediately upon start.<br />
* #5484 Desktop Open Window Offset<br />
* #5503 Far Manager 1.65 fails to start<br />
* #5504 Internet Explorer 6 errors out at setup<br />
* #5524 Displaced numbers on virtual desktop icons in 32bpp<br />
* #5530 COM ports not available anymore<br />
* #5554 2nd stage, misplaced warning message for empty name, wrong sized too.<br />
* #5569 Techlogica HTTP Server tray icon not displayed<br />
* #5593 GDI REGION objects are leaked when Freeciv start window is being redrawn<br />
<br />
== MSC support ==<br />
As part of the effort to support compilers beyond GCC, several components of ReactOS saw fixes and corrections to the coding style. These include but are not limited to:<br />
* explorer<br />
* rtl<br />
* BDAPLGIN<br />
* ksproxy<br />
* browseui<br />
* shell32<br />
* hal<br />
* ndk<br />
* ntoskrnl<br />
* mingw<br />
* win32csr<br />
* localspl<br />
* compstui<br />
= Host Tools =<br />
== BUILDNO ==<br />
<br />
== LOG2LINES ==<br />
* Updated to version 2.2<br />
<br />
== RBUILD ==<br />
RBuild is the build management system currently employed by ReactOS. The project is currently transitioning to cmake, but for the current release the project still relies on RBuild. However, a series of fairly serious flaws and issues have been uncovered during the transition and these are documented here.<br />
* Non-existent DLL functions can be exported.<br />
* Function export names are not properly decorated, allowing export names to not match the original function names.<br />
* If function targets are not found, RBuild will link the DLL to itself.<br />
Some development on RBuild also took place before the decision was made to switch over to CMake.<br />
* Initial Visual Studio 2010 project file support.<br />
* Removal of code::blocks project file generation, as code::blocks is incapable of building ReactOS.<br />
= Core Functionality =<br />
<br />
== Audio/Video Stack ==<br />
The A/V stack has seen a great deal of enhancements and fixes since the last release. The work done has not only added features to better control sound playback, but preliminary support for streaming videos through various media frameworks has also been implemented.<br />
=== BDA ===<br />
The Broadcast Driver Architecture is the framework that allows use of TV-tuner cards in Windows.<br />
* Interfacing with broadcast devices implemented.<br />
* Filtering of broadcast frequencies implemented.<br />
=== DSOUND ===<br />
A library that bypasses some of the layers in the sound stack to try and speed up processing.<br />
* Starting and stopping audio implemented.<br />
* Initial implementing of sound mixing, currently does not work. Volume information can be retrieved but not set.<br />
=== Kernel Streaming ===<br />
The core kernel component that handles stream of media and serves as the foundation of much of the A/V functionality in NT.<br />
* Device initialization and registration implemented.<br />
* Objects allocated are placed onto a list for automatic reclamation.<br />
* Pin interface for controlling devices implemented, though issuing of commands still needs work.<br />
=== KSPROXY ===<br />
A DirectShow filter that relays media through the user mode kernel streaming library.<br />
* Enumeration of supported functionality on devices implemented.<br />
* Signal statistics from BDA devices are delivered by KSPROXY.<br />
* Media stream sampling is done to determine buffer allocation strategy.<br />
* Multiple media samples can be dispatched simultaneously.<br />
=== PORTCLS ===<br />
The driver that manages most of the audio functionality in NT.<br />
* Currently a "silent" buffer is used when no audio buffers are available for playback.<br />
* Play position is reset when an audio stream is stopped, fixing playback for when playback is stopped and started multiple times.<br />
* A get position request can arrive before the audio buffer is transferred. This situation is handled to avoid a divide by zero error.<br />
* Audio stream data is only copied to the common buffer when the pin owning it is in a running state.<br />
<br />
== Filesystems ==<br />
ReactOS continues to use the FAT filesystem as its default, but work has been done to add the support needed for newer ones as well as fixing longstanding issues with the current FAT driver.<br />
<br />
=== FSRTL ===<br />
The filesystem runtime library provides a set of basic functionality for filesystem drivers and allows them to avoid duplicating shared functionality while also ensuring higher level libraries inappropriate for kernel drivers do not need be linked in. FsRtl for many years had very minimal documentation, but that is changing with this release.<br />
* Notification of changes to volume state has been implemented.<br />
* Initial groundwork for volume content change notifications begun.<br />
<br />
=== CDFS ===<br />
* Media ejection added.<br />
* Various memory leaks and corruptions have been resolved.<br />
<br />
=== FASTFAT ===<br />
ReactOS uses the FASTFAT driver for the FAT filesystem. The current driver is fairly old and a new one is being developed, but until it is ready FASTFAT will continue to see updates.<br />
* Updated to use various functionality in the FsRtl library instead of reimplementing them inside the driver.<br />
* Driver is now Plug n Play aware but does not support any actual PnP commands.<br />
<br />
=== FASTFAT_NEW ===<br />
The new FAT driver is being implemented using the FullFAT library and wrapping its functionality inside a filesystem driver. It is currently incomplete but will replace the old FASTFAT driver in a future release.<br />
* Control blocks for files have been implemented.<br />
* Basic locking implemented.<br />
=== CM ===<br />
* Implemented finding registry keys when the registry keys are not sorted.<br />
* Fix a bug that caused registry corruption when a registry key got too large.<br />
<br />
== Hardware Management ==<br />
Progress has been made in efforts to give ReactOS better support for various hardware control specifications.<br />
<br />
=== ACPI ===<br />
A driver for the Advanced Configuration and Power Interface was implemented, providing most of the functionality of the standard. However, it does not conform to the NT architecture due to incomplete pieces in other parts of ReactOS.<br />
* Enumerate attached devices.<br />
* Receive commands from power buttons.<br />
=== ACPI HAL ===<br />
The Hardware Abstraction Layer that provides support for the ACPI standard. This is separate from the current HAL used in ReactOS and is the incomplete piece needed by a NT architecture conformant ACPI driver.<br />
* Resource querying implemented.<br />
* Separation of ACPI and non-ACPI bus handling.<br />
=== Battery Framework ===<br />
Implementation of the components needed to interface with batteries and retrieve information about power levels. This collection of drivers is dependent on several other pieces such as Plug n Play, ACPI, and general interface drivers, so is currently not functional.<br />
* Control Method Batter Driver: Initial implementation of cmbatt driver, with information and status queries implemented. ACPI and PnP interaction present but dependent on the respective interfaces in other parts of ReactOS.<br />
* Composite Battery Driver: Battery detection and PnP notification implemented.<br />
=== Legacy HAL ===<br />
The legacy HAL will continue to be used for hardware that does not implement the ACPI standard.<br />
* i8259A programmable interrupt controller initialization implemented in C.<br />
* HAL now detects EISA systems with the Edge/Level Control Register.<br />
* Various Interrupt Request Level functions are now implemented in C instead of x86 assembly.<br />
* Asynchronous and Deferred Procedure Call trap handlers are now implemented in C.<br />
* IRQL handling rewritten to use "lazy" raising and lowering of the interrupt mask.<br />
* HAL no longer relies on the memory manager for allocations.<br />
* Various debugging related functions implemented.<br />
* CMOS, ISA, and SYSTEM bus handlers are now registered.<br />
* HAL now can detect PCI and PCI-to-PCI bridges.<br />
=== Plug n Play ===<br />
* Writing of resource list has been fixed to avoid corrupting the registry.<br />
* Registry values for legacy devices are now written.<br />
* Detected devices are now reported in response to a IRP_MN_QUERY_DEVICE TEXT.<br />
<br />
== Memory Management ==<br />
The memory manager saw several major improvements since the last release, including a new pool manager and major fixes to virtual memory management.<br />
* Page Table Entries work under x64.<br />
* Correctly report the amount of memory available to applications and drivers.<br />
* Massive fixes to page tables, page directories, and page frame numbers that are used for tracking virtual memory addresses and their physical memory address counterparts. Many corruptions, incorrect address resolutions, and improper usage of PTE, PDE, and PFN structures and values were dealt with.<br />
* Code refactored so architecture independent code can be shared across platforms.<br />
* Multiple logic fixes to page allocations, resolving several instances of non-free pages being allocated.<br />
* Global pages support removed due to currently broken code.<br />
* Working sets of memory use a bitmap instead of a linked list based on the Least Recently Used algorithm for organization. Only free pages use a linked list now.<br />
=== ARM3 ===<br />
A new memory manager designed to be more conformant to the NT architecture and hopefully eliminate the instability caused by the current memory manager's corruption issues.<br />
* Virtual Address Descriptor data structures implemented.<br />
* Page table and directory entry initialization implemented.<br />
* Stack frames are allocated using ARM3.<br />
* Paged pool allocations can be done through ARM3.<br />
* Memory areas managed by ARM3 are kept separate from areas controlled by the regular memory manager.<br />
* Protected Freed Nonpaged Pool support added. This type of pool is a debugging feature.<br />
* Shared user data pages are handled by ARM3.<br />
* New AVL tree implementation used to manage Virtual Address Descriptors.<br />
<br />
== Network Stack ==<br />
The network stack has seen considerable amounts of refactoring and additions as its components are implemented. Various parts are also currently undergoing a rewrite with varying levels of completion.<br />
=== IP ===<br />
* Attempts to acquire the IP address now wait until after the DHCP service is running for dynamic addressing.<br />
* No attempt is made to close a socket already terminated by the remote peer.<br />
* Socket operations that can be completed immediately are carried out on a closing socket to avoid losing data in the receive buffer.<br />
=== MSAFD ===<br />
The current socket implementation on ReactOS.<br />
* Error codes are now properly reported, fixing many of the Winetests for this component.<br />
* Failures on operations are now reported instead of simply being left dangling.<br />
* Events are waited on instead of immediately being closed.<br />
* Socket information is now stored in a linked list instead of a static array, improving scalability and eliminating the risk of buffer overflows.<br />
* Socket information is now cleaned up after a socket is closed.<br />
* Support for connectionless sockets added.<br />
* Reading data using the peek functionality no longer causes corruptions.<br />
=== NDIS ===<br />
* Fixes to how operations are done on the timer queue.<br />
* Protocol bindings are refreshed after a new device is added, allowing network cards to be used even if they are added after boot.<br />
* Network adapter initialization and binding cleaned up to avoid duplicate entries.<br />
=== OSKITTCP ===<br />
* Multiple wakeups are now prevented from occurring.<br />
* Sent/received reports are only sent if operation completed successfully.<br />
* A check was added to make sure accept is not called on a socket that is not listening.<br />
=== WS2_32 ===<br />
* Reading host files now supported.<br />
<br />
== Graphics ==<br />
Development on ReactOS' graphics components continues, with increased compatibility and functionality. Several enhancements from the yarotows branch have made it into trunk and are now part of this release.<br />
== Kernel ==<br />
* IRP_MN_FILTER_RESOURCE_REQUIREMENTS responses are now correctly handled, allowing drivers to acquire needed resources.<br />
* FPU state is now correctly not saved when a kernel debugger is not attached.<br />
* Debug register clearing is now fixed, preventing random hardware breakpoints from triggering.<br />
* Trap handling code converted to C with minimal bits of assembly.<br />
* Interrupt handling in kernel converted to C to match conversion done in HAL.<br />
* System call handling now implemented in C.<br />
== I/O ==<br />
* Device property retrieval now returns correct information for the device name.<br />
* IoReportDetectedDevice reimplemented, though a bug causes it to create a new device instance every boot.<br />
* Changes in device status are now reported.<br />
* New resource information is now reported.<br />
<br />
== Registry ==<br />
* A leaking reference that was resulting in incorrect registry name parsing and memory corruption has been fixed.<br />
* Opening registry values for symbolic links is fixed.<br />
<br />
== Startup ==<br />
Startup of ReactOS has seen considerable modification as effort is made to port it to other architectures and new developer-centric changes are added.<br />
* Progress bar during boot now displays correctly.<br />
=== BootVid ===<br />
* Broken initialization code removed and a correct implementation added.<br />
* 4bpp blitting code simplified.<br />
* x64 portability fixes.<br />
=== FreeLoader ===<br />
* FreeLoader is now compiled into the Portable Executable format to allow for debugging.<br />
* FreeLoader no longer needs to be installed on the first partition of the first disk.<br />
* FreeLoader UI on ARM rewritten to slim down on resources needed.<br />
* Initial paging of memory on ARM is rewritten to be more efficient, now only using 1MB instead of 20MB.<br />
* x64 portability fixes.<br />
=== Session Manager Subsystem ===<br />
* SMSS can now add several system environment variables to the registry.<br />
* SMSS now creates a new default paging file if none exists.<br />
=== Winlogon ===<br />
* Environment variables for user are now properly loaded upon login.<br />
<br />
== Security ==<br />
* NtAcessCheck fixed to account for various error cases and improper usage.<br />
* Security token is now checked for what level of authorization it is trying to impersonate.<br />
* Success is only reported if all access requests have been granted.<br />
* Attempts to duplicate security tokens fail if authorization level is too low.<br />
<br />
== Shell ==<br />
The code supporting the user interface in ReactOS is currently undergoing a rewrite. However, the old code remains in place and continues to see fixes and updates as the rewrite progresses.<br />
* Attempting to format a non-existent drive will now fail and return instead of prompting for a disk to be inserted.<br />
=== Explorer ===<br />
* Clock is no longer clipped in its window.<br />
* 24bpp start menu icon added.<br />
=== SHELL32 ===<br />
* Confirmation dialog added for logging off.<br />
* Open With dialog now allows aborting of operation.<br />
* Localized error text now displayed as messagebox caption.<br />
* Success checking for ShellExecuteEx has been simplified, fixing instances where a dialog may be opened twice.<br />
* Alpha channels for icons are no longer destroyed when shortcuts are created, fixing overlay icons.<br />
* Initial file copy/move/delete dialog implementation added.<br />
* File association error texts added.<br />
<br />
== Storage Stack ==<br />
The storage stack involves all the components of the operating system that deal with disk storage, excluding filesystems. These saw considerable modifications as the project continues to integrate the UniATA driver.<br />
* Logical units in extended partitions are visible but are not accessible yet.<br />
* Querying for Native ATA channels and configuring controller to use NATA implemented.<br />
=== RAMDISK ===<br />
* Fixes for using ramdisk when booting on ARM.<br />
=== SCSIPORT ===<br />
* x64 portability fixes.<br />
=== UniATA ===<br />
* Reduce wait time from 10000 to 500 milliseconds for sending the ATAPI_RESET command.<br />
<br />
<br />
== USB ==<br />
ReactOS currently has a USB driver based on the NT4 architecture, providing very basic functionality. However, a NT5-style USB stack consisting of the usbd library, usbehci driver, and usbhub interface has been started.<br />
<br />
=== USBD ===<br />
Helper library for third party USB drivers, used for querying information about USB devices.<br />
<br />
=== USBEHCI ===<br />
Driver for the ehci USB protocol, currently able to register attachment of new devices to the system and changes in their status.<br />
<br />
=== USBHUB ===<br />
Initializes USB devices and their associated driver objects and handles passing of interrupts and other signals to the driver. Utilizes the usbd library and usbehci driver to fill in information about devices.<br />
<br />
USB Requests Implemented<br />
* USB_DEVICE_DESCRIPTOR_TYPE<br />
* USB_CONFIGURATION_DESCRIPTOR_TYPE<br />
* URB_FUNCTION_SELECT_CONFIGURATION<br />
* URB_FUNCTION_CLASS_DEVICE<br />
* USB_DEVICE_CLASS_HUB<br />
* USB_BUS_INTERFACE_USBDI_V2<br />
* USB_BUS_INTERFACE_HUB_V5<br />
* URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE<br />
* IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION<br />
* IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE<br />
* IOCTL_INTERNAL_USB_GET_HUB_COUNT<br />
* URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER_IN<br />
* USB_REQUEST_CLEAR_FEATURE<br />
* USB_REQUEST_GET_STATUS<br />
* USB_REQUEST_SET_FEATURE<br />
<br />
=== USBDriver ===<br />
The current USB driver, usbdriver provides simplistic support for USB keyboards and mice in very specific configurations.<br />
* Support for multiple EHCI controllers added, increasing compatibility with physical hardware configurations.<br />
* All PCI buses are scanned for USB controllers.<br />
* Cleanup of devices that crashed or failed to initialize properly.<br />
<br />
= Drivers =<br />
* SWENUM, MPU401, CMIDriver, SPLITTER, STREAM drivers are no longer built and included by default as they are either not used or do not work.<br />
== Miniport ==<br />
* ASCII functions are now used instead of converting arguments to Unicode and calling Unicode functions.<br />
== PCI ==<br />
A new PCI driver has been implemented, adding considerably more complete support for the interface and various other standards and protocols that build on top of it.<br />
* Interrupt Request routing implemented.<br />
* Handling of devices that incorrectly implement the PCI standard has been improved.<br />
* Querying and discovery of devices attached to PCI bus implemented.<br />
* Information about 176 different PCI devices and their associated errata have been added. These are needed to deal with any quirks a device may have.<br />
== PCMCIA ==<br />
* Driver has been stubbed so will require more work before any functionality is added.<br />
== VGA ==<br />
* Initial implementation of a driver for the VMWARE SVGA-II Video Card added.<br />
* Various x64 portability fixes to the current VGA driver.<br />
== VIDEOPRT ==<br />
* Proper error codes are now used.<br />
<br />
= Libraries =<br />
== ADVAPI32 ==<br />
* Resources for tracking services are created and destroyed as services start and stop.<br />
* Hardware profiles actually create GUIDs instead of hardcoding them to zero.<br />
* Computer name is used inside of eventlog.<br />
== KERNEL32 ==<br />
The kernel32 library underwent some major fixes that decreased its size and increased its performance. The majority of these issues were due to improper behavior on the part of RBuild, detailed in the appropriate section.<br />
* Remove all Windows 95 function exports.<br />
* Stub all functions that kernel32 is supposed to export.<br />
* Inline set/get error macros and correctly forward them to the actual functions inside ntdll. This prevents calls to these macros from taking an indirect call path due to issues in RBuild.<br />
* kernel32 now always attempts to connect to the console server in applications in order to setup handling of Ctrl+C.<br />
* Initialization of command line arguments have been moved to DLL_PROCESS_ATTACH to make it thread safe.<br />
* Switching between fibers fixed.<br />
* Various x64 portability changes.<br />
* NT-style debug channels are now enabled and used.<br />
== GDI32 ==<br />
* Leaking of regions temporarily fixed.<br />
* Batch support added for selecting regions for clipping.<br />
* Retrieving system palettes has been optimized to avoid unnecessary operations and no longer trashes the heap.<br />
== MSVCRT ==<br />
* Exports added for a variety of functions.<br />
== NTDLL ==<br />
* Various fixes to loading functions for libraries and executables.<br />
* Service status is now reported to the service manager.<br />
* Various x64 portability changes.<br />
== RTL ==<br />
* New implementation of the AVL tree, a self-balancing data structure used for tracking various resources in ReactOS.<br />
* Various fixes to functions that operate on strings.<br />
* x64 portability fixes for functions that operate on the byte level.<br />
== USER32 ==<br />
* Setting of regions now behaves correctly.<br />
* Cursor icons follow correct call chain instead of calling functions that do not exist.<br />
* Various x64 portability changes.<br />
* Scrollbar tracking now ends if mouse capture is lost.<br />
* Window management code saw refactoring and fixes.<br />
* User handle manager rewritten.<br />
<br />
= Win32&trade; Personality =<br />
== User mode subsystem server (CSRSS) ==<br />
<br />
<br />
== Kernel-mode subsystem server (Win32K) ==<br />
<br />
* Several fixes to Windows Hook Procedures that causes application lockups.<br />
* Shell can now be restarted after killing it.<br />
* Fix cases where windows can deadlock when waiting on another window to finish.<br />
* Fixes to minimizing/maximizing and setting focus of windows.<br />
* SendMessageCallback now implemented.<br />
<br />
== Regression tests ==<br />
<br />
== BASE ==<br />
<br />
=== APPLICATIONS ===<br />
<br />
==== DXDIAG ====<br />
* get next button to work ([[Christoph von Wittich]])<br />
<br />
==== SC ====<br />
* Roel Messiant: Fix a crash when running some operations in sc without providing arguments. Also, provide usage information for the control and unknown commands. ([[Aleksey Bragin]]; {{bug|5611}})<br />
* Aleksey Bragin: Take Ged Murphy's comments into account and change pointer arithmetic to a convenient style. ([[Aleksey Bragin]]; {{bug|5611}})<br />
<br />
=== SERVICES ===<br />
<br />
==== WLANSVC ====<br />
* Add required libary iphlpapi ([[Sylvain Petreolle]])<br />
* Correctly start and report status to the service manager. ([[Sylvain Petreolle]])<br />
<br />
==== LIBJPEG ====<br />
<br />
== DLL ==<br />
<br />
=== 3RDPARTY ===<br />
* Instead of disabling a warning when using "main" as something else then the main function, define it to mainptr (it's used as a pointer variable) globally, this approach is portable. ([[Timo Kreuzer]])<br />
<br />
===== SRC =====<br />
<br />
=== DIRECTX ===<br />
<br />
==== BDAPLGIN ====<br />
* Add "BDA Device Control Plug-in for MPEG2 based networks" stub ([[Johannes Anderwald]])<br />
* Sorry folks ([[Johannes Anderwald]])<br />
* Implement IBDA_Topology::GetNodeTypes, IBDA_Topology::GetNodeDescriptors, IBDA_Topology::GetNodeInterfaces, IBDA_Topology::GetPinTypes, IBDA_Topology::CreateTopology, IBDA_Topology::GetControlNode ([[Johannes Anderwald]])<br />
* Implement stub interfaces for control node, IBDA_DigitalDemodulator, IBDA_FrequencyFilter, IBDA_LNBInfo, IBDA_SignalStatistics ([[Johannes Anderwald]])<br />
* Simply construction of CBDAFrequencyFilter, CBDALNBInfo, CBDASignalStatistics ([[Johannes Anderwald]])<br />
* Find IBDA_NetworkProvider in filter graph ([[Johannes Anderwald]])<br />
* Check for IBaseFilter interface when constructing the CBDADeviceControl object ([[Johannes Anderwald]])<br />
* Add macro to enable/disable debug output ([[Johannes Anderwald]])<br />
* Query the BaseFilter for the target control pin in order to query for IKsObject interface, which is used to retrieve the real pin handle. ([[Johannes Anderwald]])<br />
* Pass the NodeId to constructors of IBDA_FrequencyFilter, IBDA_SignalStatistics, IBDA_LNBInfo, IBDA_DigitalDemodulator ([[Johannes Anderwald]])<br />
* Implement IBDA_DigitalDemodulator::put_ModulationType, IBDA_DigitalDemodulator::put_InnerFECMethod, IBDADigitalDemodulator::put_InnerFECRate, IBDADigitalDemodulator::put_OuterFECMethod, IBDADigitalDemodulator::put_OuterFECRate, IBDADigitalDemodulator::put_SymbolRate, IBDADigitalDemodulator::put_SpectralInversion ([[Johannes Anderwald]])<br />
* Implement IBDAFrequencyFilter::put_Frequency, IBDAFrequencyFilter::put_Polarity, IBDAFrequencyFilter::put_Range, IBDAFrequencyFilter::put_Bandwidth, IBDAFrequencyFilter::put_FrequencyMultiplier ([[Johannes Anderwald]])<br />
* Implement IBDALNBInfo::put_LocalOscilatorFrequencyLowBand, IBDALNBInfo::put_LocalOscilatorFrequencyHighBand, IBDALNBInfo::put_HighLowSwitchFrequency ([[Johannes Anderwald]])<br />
* Implement IBDASignalStatistics::get_SignalStrength, IBDASignalStatistics::get_SignalQuality, IBDASignalStatistics::get_SignalPresent, IBDASignalStatistics::get_SignalLocked, IBDASignalStatistics::put_SampleTime, IBDASignalStatistics::get_SampleTime ([[Johannes Anderwald]])<br />
* Implement IBDA_DeviceControl::StartChanges, IBDA_DeviceControl::CheckChanges, IBDA_DeviceControl::CommitChanges, IBDA_DeviceControl::GetChangeState ([[Johannes Anderwald]])<br />
* IBDA_DeviceControl interface now works with SageDvbRecorder(Windows XP SP3) ([[Johannes Anderwald]])<br />
* Move from using include guards to pragma once. (Amine)<br />
* Whilst this is non-standard and potentially makes the code less portable, it's supported by both gcc and msvc and should bringg increased compilation speed due to its optimized behaviour (doesn't need to invoke the preprocessor) (Amine)<br />
* Merge Wine-1.1.39 changes to shlmenu.c. ([[Aleksey Bragin]])<br />
* Maarten Kroese ([[Aleksey Bragin]])<br />
* SHELL_MergeMenus: Don't skip higher IDs if uIDAdjustMax is set to 0xFFFF (according to MSDN). ([[Aleksey Bragin]])<br />
* Implement IBDA_PinControl::GetPinID, IBDA_PinControl::GetPinType ([[Johannes Anderwald]])<br />
* Comment out enumeration of IBDA_NetworkProvider ([[Johannes Anderwald]])<br />
* Set output variable to null to fixup lazy callers ([[Johannes Anderwald]])<br />
* Implement IBDA_PinControl::RegistrationContext ([[Johannes Anderwald]])<br />
* Register filter with IBDA_NetworkProvider when it is an input pin ([[Johannes Anderwald]])<br />
* IBDA_PinControl is now working ([[Johannes Anderwald]])<br />
* Perform property request by passing the request through IKsPropertySet interface. This is necessary as the pin handle might not have been created at the time the proxy plugin has been loaded ([[Johannes Anderwald]])<br />
* Set Reserved of KSP_NODE request to zero as required by the documentation ([[Johannes Anderwald]])<br />
* Reintegrate header branch ([[Timo Kreuzer]])<br />
* DDKAPI -> NTAPI ([[Timo Kreuzer]])<br />
* delete duplicate definitions ([[Timo Kreuzer]])<br />
* move files to right locations ([[Timo Kreuzer]])<br />
* Fix Mm64BitPhysicalAddress definition ([[Timo Kreuzer]])<br />
* Add a number of missing definitions ([[Timo Kreuzer]])<br />
* add XDK ([[Timo Kreuzer]])<br />
* Enhance debug traces ([[Johannes Anderwald]])<br />
<br />
==== DEVENUM ====<br />
* Extend device enumerator to support class enumerators of device interfaces ([[Johannes Anderwald]]<br />
<br />
<br />
==== MSDVBNP ====<br />
* Start implementing Network Provider for MPEG-2 based Networks ([[Johannes Anderwald]])<br />
* Implement IEnumMediaTypes interface ([[Johannes Anderwald]])<br />
* Implement IEnumPins interface ([[Johannes Anderwald]])<br />
* Partly implement output pin (IPin interface) for the network provider ([[Johannes Anderwald]])<br />
* Implement CNetworkProvider::GetState, CNetworkProvider::SetSyncSource, CNetworkProvider::GetSyncSource, CNetworkProvider::EnumPins, CNetworkProvider::QueryFilterInfo ([[Johannes Anderwald]])<br />
* HACK: comment out deletion of object until reference counting has been fixed ([[Johannes Anderwald]])<br />
* Fix crash when instantiating the filter with graphedt ([[Johannes Anderwald]])<br />
* Fix a bug (IEnumPins::Next should increase reference count on pin) ([[Johannes Anderwald]])<br />
* Fix a bug (IPin::QueryFilterInfo should increase reference count on parent filter) ([[Johannes Anderwald]])<br />
* Reference leakage is now fixed ([[Johannes Anderwald]])<br />
* Fix some missing strings in cpu.inf ([[Cameron Gutman]])<br />
* Use FORMAT_None as format specifier ([[Johannes Anderwald]])<br />
* Implement IBaseFilter::Stop, IBaseFilter::Run, IBaseFilter::Pause ([[Johannes Anderwald]])<br />
* Fix missing AddRef in IBaseFilter::QueryFilterInfo ([[Johannes Anderwald]])<br />
* Implement IBDA_NetworkProvider::RegisterDeviceFilter, IBDA_NetworkProvider::UnRegisterDeviceFilter ([[Johannes Anderwald]])<br />
* Partly implement ITuner::put_TuneRequest ([[Johannes Anderwald]])<br />
* ReactOS DVBT Network Provider is now able to tune a channel, though sound is missing ([[Johannes Anderwald]])<br />
* fix encoding ([[Matthias Kupfer]])<br />
* change size of dialog entry for fitting text ([[Matthias Kupfer]])<br />
* two small fixes (freeing resources on error) ([[Matthias Kupfer]])<br />
* Implement IBDA_EthernetFilter, IBDA_IPV4Filter, IBDA_IPV6Filter ([[Johannes Anderwald]])<br />
* Add bda.inf, kscaptur.inf ([[Johannes Anderwald]])<br />
* Remove DebugBreak ([[Johannes Anderwald]])<br />
* Implement IPin::Connect, IPin::ReceiveConnection, IPin::Disconnect, IPin::ConnectedTo ([[Johannes Anderwald]])<br />
* Remove spaces ([[Johannes Anderwald]])<br />
* DVBT Network Provider can now connect tv tuner in ReactOS ([[Johannes Anderwald]])<br />
* Dynamically register DVB network provider categories ([[Johannes Anderwald]])<br />
* Register BDA Filter components ([[Johannes Anderwald]])<br />
* Fix category description ([[Johannes Anderwald]])<br />
<br />
==== MSVIDCTL ====<br />
* Start implementing ActiveX Control for Streaming Video ([[Johannes Anderwald]])<br />
<br />
==== WINE ====<br />
* Move and update assembler functions definition macros from port.h (added by Steven around revision 7000) to config.h as it is now in Wine. ([[Aleksey Bragin]])<br />
* Update related __ASM macros. ([[Aleksey Bragin]])<br />
* define interlocked_xchg_add to InterlockedExchangeAdd ([[Timo Kreuzer]])<br />
* partial sync of test.h ([[Christoph von Wittich]])<br />
* Cast the unused 0 in the ok macro to void to make clang happy ([[Timo Kreuzer]])<br />
<br />
===== WINED3D =====<br />
* Fix prototype of wined3d_event_query_supported (BOOL != HRESULT) ([[Timo Kreuzer]])<br />
<br />
=== KEYBOARD ===<br />
<br />
==== KBDLV ====<br />
* Latvian keyboard fixes by Arturs B., <mad_alchemist AT mail DOT ru> ([[Gregor Schneider]]; {{bug|5385}})<br />
* partly revert r47442 and apply a working fix by guarding some prototypes of functions that exist as intrinsics in #ifdefs, so we don't use them for gcc/clang ([[Timo Kreuzer]])<br />
* remove duplicated prototypes, when an inline function exists already ([[Timo Kreuzer]])<br />
<br />
==== IDNDL ====<br />
<br />
=== NLS ===<br />
* Convert to spec ([[Timo Kreuzer]])<br />
<br />
==== CSR ====<br />
* DejaVu Sans Mono seems to have a bug which makes Windows and Arwinss report double max char width as compared to a real char width. Since only a monospace font could be used, measure exact char width using GetTextExtentPoint32W and use that value. ([[Aleksey Bragin]])<br />
<br />
=== WIN32 ===<br />
<br />
==== BATT ====<br />
* Add battery class installer dll. ([[Eric Kohl]])<br />
* Add missing 4th parameter to BatteryClassCoInstaller. ([[Eric Kohl]])<br />
<br />
==== BEEPMIDI ====<br />
* Fix 64bit compilation ([[Timo Kreuzer]])<br />
<br />
==== BROWSEUI ====<br />
* Merge r44391 from amd64 branch ([[Timo Kreuzer]])<br />
* Fix 64bit build ([[Timo Kreuzer]])<br />
<br />
==== DEVMGR ====<br />
* Display Matching Device ID. ([[Eric Kohl]])<br />
* Display some more device properties. ([[Eric Kohl]])<br />
* devman.dll improvements by Viliam Lejcik: ([[Eric Kohl]])<br />
* display version info for selected driver file in 'Driver File Details' dialog ([[Eric Kohl]])<br />
* resource modification - changed some labels to read-only editboxes ([[Eric Kohl]])<br />
* Fixes bug #4875. ([[Eric Kohl]])<br />
<br />
==== LSASRV ====<br />
* Use a single table for mapping privilege names to values and values to names. ([[Eric Kohl]])<br />
* LsarLookupSids: Return ReferencedDomains information. ([[Eric Kohl]])<br />
* Replace hard-coded privilege names by privilege names from the PSDK. ([[Eric Kohl]])<br />
* Move all includes into a common header file. ([[Eric Kohl]])<br />
* Create a (still incomplete) well-known-sid lookup table and use it in LsarLookupSids. ([[Eric Kohl]])<br />
* Add missing file headers. ([[Eric Kohl]])<br />
* Add more well known sids to the lookup list. ([[Eric Kohl]])<br />
<br />
==== MSGINA ====<br />
* Use WLX_PROFILE_V2_0 instead of WLX_PROFILE_V1_0 and create an environment string that is filled with a single environment variable. WIP for bug #4102. ([[Eric Kohl]])<br />
* Fix the order of controls to match the expected tab order. This makes the focus stop jumping around like crazy when you press the Tab key. ([[Eric Kohl]])<br />
<br />
==== NETCFGX ====<br />
* Improve the DNS data exchange between the basic IP settings and the advanced DNS panel ([[Gregor Schneider]])<br />
* Simplify LaunchAdvancedTcpipSettings ([[Gregor Schneider]])<br />
* Save DHCP and DNS settings from the basic TCP/IP panel independently of each other ([[Gregor Schneider]]; {{bug|5193}})<br />
* Remove the hack that set DI_NEEDRESTART for all network adapters which prevented us from starting the miniport driver ([[Cameron Gutman]])<br />
* Part of the fix for bug 3716 ([[Cameron Gutman]])<br />
* Start the TCP/IP driver after we install a network adapter ([[Cameron Gutman]])<br />
* This fixes the major bug that blocks Live CD networking but we still have some DHCP issues (DHCP starts and fails before the NIC and TCP/IP has been installed) and some other adapter detection issues that I need to look into but this is a good first step ([[Cameron Gutman]])<br />
* Create the DhcpEnabled value in the registry ([[Cameron Gutman]])<br />
<br />
==== NETSHELL ====<br />
* Fix some German resources: ([[Gregor Schneider]])<br />
* Use BS_MULTILINE instead of embedding newline characters into text ([[Gregor Schneider]])<br />
* Make groupboxes and text fit into the window ([[Gregor Schneider]])<br />
* Load all LAN status icons with the same size ([[Gregor Schneider]]; {{bug|3813}})<br />
* Only set the status icon if the icon occurred, don't set NULL icons (properties of LAN adapter window) ([[Gregor Schneider]]; {{bug|3813}})<br />
* Fix LAN status icon resource ([[Gregor Schneider]]; {{bug|3813}})<br />
* Improve current network connection status icons. ([[Gabriel Ilardi]])<br />
* Updated French translation ([[Pierre Schweitzer]])<br />
<br />
==== NTMARTA ====<br />
* AccRewriteSetEntriesInAcl: Fix a bug that caused the for loop never to complete due to reuse of same variable. ([[Michael Martin]])<br />
<br />
==== QMGR ====<br />
* Don't bulldoze our netsvcs key to install a service that doesn't even work yet ([[Cameron Gutman]])<br />
* Add the FLG_ADDREG_APPEND flag when writing the netsvcs value because, unlike WINE, we are actually going to have values in there ([[Cameron Gutman]])<br />
* Reapply r47268 to fix DHCP ([[Cameron Gutman]])<br />
* Implement DeviceHandleToUsbDevice and remove IsHandleValid. ([[Michael Martin]])<br />
* Add call to DeviceHandleToUsbDevice for all Direct Call functions that pass DeviceHandle. ([[Michael Martin]])<br />
* Stop the processing of Asynchronous List after the Control Request has been processed by controller. ([[Michael Martin]])<br />
* Misc changes. ([[Michael Martin]])<br />
* Fix a FIXME in fastfat driver which also fixes a BSOD in kernel32 path winetest ([[Pierre Schweitzer]])<br />
* sysreg doesn't like rain of SEMI-STUB debug ([[Sylvain Petreolle]])<br />
<br />
==== SETUPAPI ====<br />
* Open Device Class with desired access ([[Johannes Anderwald]])<br />
* Implement SetupDiOpenDeviceInterfaceW ([[Johannes Anderwald]])<br />
* Store device settings in the "Device Parameters" key, as the kernel now does it too ([[Johannes Anderwald]])<br />
* Fixes display of AC97 device in audio cpl ([[Johannes Anderwald]])<br />
* Fix an incorrect length value that corrupted REG_MULTI_SZ values when they had strings appended ([[Cameron Gutman]])<br />
* I'm not sure if this is synced with WINE, but if it is, they need this patch too ([[Cameron Gutman]])<br />
<br />
==== USERENV ====<br />
* Revert r43057: setting environment variables per process is not useful here, a higher authority has to do this globally ([[Gregor Schneider]]; {{bug|4008}})<br />
* Create 'Default User' and 'All Users' directories without postfix and append a postfix only if they already exist. ([[Eric Kohl]])<br />
* Create the user account directory without a prefix and append a prefix if the directory already exists. ([[Eric Kohl]])<br />
* Acquire the restore privilege before unloading a hive and remove it after unloading the hive. ([[Eric Kohl]])<br />
* Patch is based on Gabriel Ilardi's patch. Fixes bug #2972. ([[Eric Kohl]])<br />
* Create the environment variables 'ProgramFiles' and 'CommonProgramFiles' from the registry. ([[Eric Kohl]]; {{bug|2972}})<br />
* Fixes bug #4008. ([[Eric Kohl]]; {{bug|2972}})<br />
* Disable GDI batch code for regions. "Fixes" broken drawing for AcrobatReader. Yes, it's a "band aid over a bullet wound". I hope the man with the gun is a surgeon, too. ([[Timo Kreuzer]])<br />
* CreateEnvironmentBlock: Also add the volatile environment values to the users environment block. ([[Eric Kohl]])<br />
* Fix Italian commonfiles ([[Gabriel Ilardi]])<br />
* Fix a typo and some Spanish environment variables ([[Gabriel Ilardi]])<br />
* german translation of sendto (Egon; {{bug|5411}})<br />
* Fix mistakenly translated strings "recent" and "sendto" in Italian and Spanish resources, plus another Spanish fix. ([[Gabriel Ilardi]])<br />
* Several Czech translation updates by Radek Liska #5429. ([[Gabriel Ilardi]])<br />
<br />
==== WINMM ====<br />
* Fix a number of 64bit issues, add some comments where the code is not 64 bit safe. This module should be synced with wine, but this still causes a problem with Flash videos on FF2 (likely another timer problem) ([[Timo Kreuzer]])<br />
<br />
== DRIVERS ==<br />
<br />
=== BASE ===<br />
<br />
==== BATTC ====<br />
<br />
=== BATTERY ===<br />
* Add a nearly complete battc driver (the only stuff missing is WMI) ([[Cameron Gutman]])<br />
* Tested with our stubbed cmbatt driver but testing on Windows would be nice too ([[Cameron Gutman]])<br />
* define _BATTERYCLASS_ to not get dllimport specifiers ([[Timo Kreuzer]])<br />
* Fix a warning ([[Timo Kreuzer]])<br />
<br />
==== ISAPNP ====<br />
* Fix isapnp compilation for 64-bit ([[Timo Kreuzer]])<br />
* 36961 (sginsberg) ([[Timo Kreuzer]])<br />
* Rewrite the ISAPnP driver based off EtherBoot source ([[Cameron Gutman]])<br />
* TODO: Resource stuff ([[Cameron Gutman]])<br />
* Fix a typo ([[Cameron Gutman]])<br />
* Comment it out from the bootloader. ([[Aleksey Bragin]])<br />
* Remove it from machine.inf. ([[Aleksey Bragin]])<br />
* This "driver" introduces significant delay at every boot due to i/o space scanning every time at every boot, however there is no real benefit (it always fails). Inclusion of this driver into default boot process might be reconsidered only after it starts providing some advantages. For now please test this driver in your own working copies. ([[Aleksey Bragin]])<br />
<br />
==== NPFS ====<br />
* Change the other side's to PIPE_STATUS_CLOSING_STATE in NpfsCleanup and NpfsClose so the reading/writing thread knows that the pipe is dead when we signal its event ([[Cameron Gutman]])<br />
* Fixes iphlpapi_winetest hang and possibly bug #4689 ([[Cameron Gutman]])<br />
* Partially revert r47370 and apply a better patch ([[Cameron Gutman]])<br />
* Change ReadEvent and WriteEvent to notification events because we reset those events manually when we run out of buffer space ([[Cameron Gutman]])<br />
* Fix race conditions in read IRP cancellation that resulting in random crashes and hangs ([[Cameron Gutman]])<br />
* Fixes MULTIPLE_IRP_COMPLETE_REQUESTS bug checks and failed cancellations resulting in hangs during ntdll:file test ([[Cameron Gutman]])<br />
* Acquire the cancel spin lock before calling IoSetCancelRoutine ([[Cameron Gutman]])<br />
* Remove the old cancellation code ([[Cameron Gutman]])<br />
* Don't use the CCB stored in the IRP because it could be invalid depending on the state of the IRP ([[Cameron Gutman]])<br />
* Simplify thread termination ([[Cameron Gutman]])<br />
* Fixes random crash during rpcrt4:ndr_marshall test ([[Cameron Gutman]])<br />
* Return buffer size if the buffer is too small ([[Johannes Anderwald]])<br />
* Add more buffer checks ([[Johannes Anderwald]])<br />
* Clear DO_DEVICE_INITIALIZING flag ([[Johannes Anderwald]])<br />
* Add invariant checks and fix a bug: Copy+Paste error misusing OldFlink ([[Art Yerkes]])<br />
* Check if MmGetSystemAddressForMdlSafe failed ([[Johannes Anderwald]])<br />
* Fix 2 memory leaks when creating a pipe fails ([[Johannes Anderwald]])<br />
* Fix minor style issue ([[Johannes Anderwald]])<br />
<br />
==== I8042PRT ====<br />
<br />
==== FONT ====<br />
<br />
===== BMFD =====<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
* HGLYPH is an ULONG. Use offset to glyph entry as HGLYPH instead of the pointer to fix 64bit build. ([[Timo Kreuzer]])<br />
* 41070 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
===== DRIVERS =====<br />
<br />
====== CMIDRIVER ======<br />
* Fix a number of warnings, no actual code change (Love; {{bug|5336}})<br />
<br />
===== FILTERS =====<br />
* Remove memset and memcpy implementations from pin.c ([[Amine Khaldi]])<br />
<br />
== INCLUDE ==<br />
<br />
=== CRT ===<br />
* allmul produced wrong results when the higher 32 bits of any of the 64 bit operands are not zero. As the comment correctly said the definition of param locations must change (Jose; {{bug|5121}})<br />
* since esp was altered, but the definitions were not actually changed (Jose; {{bug|5121}})<br />
* vsnprintf: added support for ll size specifier (Jose; {{bug|5122}})<br />
* Disable spooler service. ([[Sylvain Petreolle]])<br />
* This allows bootcdregtest to start here under qemu-kvm. ([[Sylvain Petreolle]])<br />
* Remove unused variables. (Amine)<br />
* add TrailBytes-info for codepage 1361 ([[Christoph von Wittich]])<br />
* david dot hedberg at gmail dot com> ([[Christoph von Wittich]])<br />
* add dsound_winetest to bootcd ([[Christoph von Wittich]])<br />
* Call acpi_bus_set_power instead of acpi_power_transition (Samuel)<br />
* Make sure the device has power management capabilities before calling acpi_bus_set_power (Samuel)<br />
* Report the new power state with PoSetPowerState (Samuel)<br />
* Initialize PDOs with the correct device power state ( (Samuel)<br />
* Initialze PDOs with the correct system power state (Samuel)<br />
* Add a stub for GetOwnerModuleFromTcpEntry (Olaf)<br />
* fix palette index for the progress bar ([[Matthias Kupfer]])<br />
* Make the shutdown with ACPI enabled actually work. (Samuel)<br />
* Stubplement WTSQueryUserToken. (Olaf)<br />
* Import x87 asm version of pow() from glibc. Replaces our broken implementation, fixing a bunch of winetests (oleaut32 vartest) ([[Timo Kreuzer]])<br />
* add _wctype table, it's not identical to _ctype as assumed before ([[Timo Kreuzer]])<br />
* point _pwctype to _wctype instead of _ctype ([[Timo Kreuzer]])<br />
* implement __pctype_func and __pwctype_func ([[Timo Kreuzer]])<br />
* 46502 (tkreuzer) ([[Timo Kreuzer]])<br />
* define _CRTBLD ([[Timo Kreuzer]])<br />
* rename float_t/double_t/long_double_t to float_s/double_s/long_double_s to avoid name conflicts ([[Timo Kreuzer]])<br />
* 46511 ([[Timo Kreuzer]])<br />
* Set crt="static" in freeldr, rtl, bmfs, ftfd, rtl, mini_hal ([[Timo Kreuzer]])<br />
* define "CRTDLL" in ntdll, crtdll, msvcrt, msvcrt20, msvcrt40 ([[Timo Kreuzer]])<br />
* 46535 ([[Timo Kreuzer]])<br />
* fix behavior of _system (fixes msvcrt environ winetest) ([[Christoph von Wittich]])<br />
* Don't define __int64 for clang ( (Amine)<br />
* Fix file and purpose in the header (Amine)<br />
* add clang compatible asm version of ldexp and make the code more readable ([[Timo Kreuzer]])<br />
* constify strndup parameter to match standard ([[Timo Kreuzer]])<br />
* fix broken pointer comparison in signal() ([[Timo Kreuzer]])<br />
* mbstowcs: Fix incorrect size passed as the second parameter for call to RtlMultiByteToUnicodeN. ([[Michael Martin]])<br />
* Fixes loading assemblies when manifest is in a manifest file due to parsing failure. ([[Michael Martin]])<br />
* CRT update part 1/x (Samuel)<br />
* add support for non-underscored symbols (Samuel)<br />
* Add missing file ([[Timo Kreuzer]])<br />
* Stubplement _controlfp_s, rand_s (Samuel)<br />
* Implement _invalid_parameter, _get_invalid_parameter_handler, _set_invalid_parameter_handler (Samuel)<br />
* Implement memmove_s, strncpy_s (Samuel)<br />
* Export memmove_s and memcpy_s ([[Sylvain Petreolle]])<br />
* Implement rnd_s ([[Sylvain Petreolle]])<br />
* Add a debug print to help bugs like 5486. ([[Gabriel Ilardi]])<br />
* Merge r44143 from amd64 branch ([[Timo Kreuzer]])<br />
* Initialize MmDebugPte from MiDebugMapping variable instead of using MiAddressToPte for a constant initializer. This way the page can be set dynamically. Use MmDebugPte to determine if ready for mapping physical pages. ([[Timo Kreuzer]])<br />
* Move #include <precomp.h> to the top, as precompiled headers must be the first thing that is included or it won't take advantage of being precompiled ([[Timo Kreuzer]])<br />
* Fix the double use of _CRTIMP. ([[Amine Khaldi]])<br />
* Add amd64 versions of setjmp / longjmp ([[Timo Kreuzer]])<br />
* Add amd64 versions of chkstk_asm.s, seh.s to libcntpr ([[Timo Kreuzer]])<br />
* Add a number of amd64 specific math functions ([[Timo Kreuzer]])<br />
* add generic c versions of cos and sin ([[Timo Kreuzer]])<br />
* Remove leading underscores from amd64 symbols ([[Timo Kreuzer]])<br />
* Improve NULL definition. ([[Amine Khaldi]])<br />
* Add __MINGW_ATTRIB_UNUSED macro. ([[Amine Khaldi]])<br />
* Convert FillBuf to static __inline. ([[Amine Khaldi]])<br />
* Add logf wrapper ([[Timo Kreuzer]])<br />
* Add amd64 inf files ([[Timo Kreuzer]])<br />
* Get back r47063 & r47960 reverted by r48273 ([[Pierre Schweitzer]])<br />
* Add diffs for msimtf and atl. ([[Sylvain Petreolle]])<br />
* Add hivecls_amd64.inf ([[Timo Kreuzer]])<br />
* Implement a proper version of _assert. It nows shows a message box with the details and let's the user choose to either abort, debug or ignore the assertion. ([[Timo Kreuzer]]; {{bug|5486}})<br />
* bug 5507, bug 5511 ([[Timo Kreuzer]]; {{bug|5486}})<br />
* Remove "implementations" of __lc_collate_cp, __lc_handle and __lc_codepage. These are not functions, but varuables, implemented as MSVCRT_* ([[Timo Kreuzer]])<br />
* add ___lc_codepage_func and ___lc_handle_func taken from wine ([[Timo Kreuzer]])<br />
* Fix msvcrt spec file ([[Timo Kreuzer]])<br />
* Fixes compilation with gcc 4.5.1 ([[Timo Kreuzer]])<br />
* Fix __MINGW_MSC_PREREQ logic. ([[Amine Khaldi]])<br />
<br />
=== REACTOS ===<br />
<br />
==== LIBS ====<br />
<br />
===== PSEH =====<br />
* Use dummy pseh for clang ([[Timo Kreuzer]])<br />
* Add (non working) 64bit code ([[Timo Kreuzer]])<br />
* Stub amd64 functions and remove leading underscores from symbols ([[Timo Kreuzer]])<br />
<br />
==== MC ====<br />
* Add pciclass.mc required for eVb's PCI driver. Matches resource data in Windows driver, minus typos. ([[sir_richard]])<br />
<br />
==== SUBSYS ====<br />
<br />
===== CSRSS =====<br />
* Fix yet another bug in the unused csrss code. ([[sir_richard]])<br />
* Bang in the new thread support in a bunch of places, including creating static server threads. It's very hacked and handle duplication doesn't work 100% reliably, but it gets the job done. ([[sir_richard]])<br />
* Add CsrGetProcessLuid, CsrImpersonateClient, CsrRevertToSelf, CsrShutdownProcesses, CsrFindProcessForShutdown required for user-mode shutdown. Right now we are able to reliably enumerate user apps (in the user LUID) and then service/system apps (in the LOCAL SYSTEM LUID). ([[sir_richard]])<br />
* Differentiate between first-try and second-try shutdown. In the first try, the console server should defer to the user/win32k server to attempt shutdown for a non-console app. However, if we end up with a second try because this did not happen, then the console server takes matters in its own hands and calls the CTRL-C handler (with some exceptions, such as system/service apps, or apps not belonging to the LUID). ([[sir_richard]])<br />
* Split off CSRSS into a more Windows-friendly model. CSRSS.EXE is simply a stub which loads CSRSRV.DLL, where all the actual code is present. ([[sir_richard]])<br />
* Don't expect ReactOS to always boot from C:\ReactOS (that's not the case for LiveCD) ([[Hervé Poussineau]])<br />
* Don't enumerate the ACPI root device ([[Cameron Gutman]])<br />
* Let the ACPI driver handle fixed feature buttons ([[Cameron Gutman]])<br />
* Don't call PrivateCsrssInitialized ([[Giannis Adamopoulos]])<br />
<br />
==== WIN32K ====<br />
* Removed NtUserGetScrollInfo and replaced it, move more type names in window object to WND. ([[James Tabor]])<br />
* When locking and unlocking regions, no need to use probe to check attribute space first before read or write access. The exception handling is a feature. ([[James Tabor]])<br />
* set fix line endings to preserve windows line endings ([[Matthias Kupfer]])<br />
* fixes issue with cancel button ([[Matthias Kupfer]])<br />
* fixes problems with unattended mode ([[Matthias Kupfer]])<br />
* temporarily enable device listing (setupapi) ([[Matthias Kupfer]])<br />
* More movement to WND with updates to related files. Added new scroll and get/post message routines. In the mix we did moved to the MONITOR structure. ([[James Tabor]])<br />
* More movement to WND with updates to related files. Removed unused code rewritten others. Review patch. ([[James Tabor]])<br />
* Patch that fixes VMWare boot (and should fix QEMu/KVM boot on the testbot): ([[sir_richard]])<br />
* Updated headers and related files. ([[James Tabor]])<br />
* Fix the window handle De/Reference throttler issue. Used mIrc. ([[James Tabor]])<br />
* System regions do not possess user attribute sections. . ([[James Tabor]]; {{bug|5124}})<br />
* Read the patch for more information. ([[James Tabor]]; {{bug|5124}})<br />
* Implement IntGdiSetBrushOwner for bug 5124. ([[James Tabor]])<br />
* Add system region support functions. ([[James Tabor]])<br />
* Merge aicom-network-branch (without NDIS changes for now) ([[Cameron Gutman]])<br />
* New noteworthy improvements include (in addition to the other improvements made in the commits that were reverted in trunk): ([[Cameron Gutman]])<br />
* Support for sending/receiving packets > 16KB in size ([[Cameron Gutman]])<br />
* Samba-tng works ([[Cameron Gutman]])<br />
* Tracert works ([[Cameron Gutman]])<br />
* Major speed and stability improvements (especially for TCP connections) ([[Cameron Gutman]])<br />
* Use ExAllocatePoolWithTag/ExFreePoolWithTag instead of memtrack ([[Cameron Gutman]])<br />
* Fixes to region support code. . ([[James Tabor]]; {{bug|5124}})<br />
* Remove CriticalRegion calls. ([[James Tabor]])<br />
* Remove CriticalRegion calls. ([[James Tabor]])<br />
* Fixed DCE masks, clipping and added support for mirror and process owned dce. ([[James Tabor]])<br />
* Reference: http://www.reactos.org/archives/public/ros-dev/2008-July/010498.html http://www.reactos.org/archives/public/ros-dev/2008-July/010499.html ([[James Tabor]])<br />
* Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. ([[James Tabor]])<br />
* Add back removed window dce support routine. Fixed list handling and implemented thread cleanup for dces. ([[James Tabor]])<br />
* Wrong commit msg, removed debug prints and fixed RedrawWindow. This fix one part of the leak. ([[James Tabor]])<br />
* Properly assign error code when a real status error occurred. ([[James Tabor]])<br />
* Free the non user event container for WaitForInputIdle. ([[James Tabor]])<br />
* Fix the new GetClipRgn clipping wine test for EqualRgn and clip region note. ([[James Tabor]])<br />
* If dc is window owned and not class owned do not set class if null pdce. Added debug prints to locate reentrancy issues due to a race condition. ([[James Tabor]])<br />
* Add more checks to find dead windows. ([[James Tabor]])<br />
* remove unused library ([[Ged Murphy]])<br />
* Fix DrawMenuBar. ([[James Tabor]])<br />
* Transition the physical device into D0 state when we receive IRP_MN_START_DEVICE ([[Cameron Gutman]])<br />
* Actually do the power state transtion when a PDO receives IRP_MN_SET_POWER for DevicePowerState ([[Cameron Gutman]])<br />
* Fill the DEVICE_CHARACTERISTICS struct based on values in the acpi_device struct ([[Cameron Gutman]])<br />
* Lots of unhacking ([[Cameron Gutman]])<br />
* Stub-plement NtUserSetInformationThread for UserInitiateShutdown and UserEndShutdown. I think we're supposed to notify Winlogon at some point, and check for races. Part of new shutdown code. ([[sir_richard]])<br />
* Stop memory corruption when InstalledDisplayDrivers has more than one driver in the list. Note that driver loading is inherently broken right now, as the list of drivers is not parsed properly (this breaks eVb's VGA/VBE driver). ([[sir_richard]])<br />
* EngCreateBitmap/IntCreateBitmap don't make much sense (code written back in 2004...). RLEs don't have scanlines by definitions, bit depth alignments and sizing is not done, newer display formats (compressed) are not supported correctly, zero-width surfaces fail because the size is ignored during scanline calculation, etc. These bugs caused eVb's test VGA display driver to fail as it needs to create a zero-depth shadow surface, which would end up with pv0Bits == NULL in the current implementation (and crash during ROPs/BitBLTs). Attempted to rewrite as much of it to 1) make Windows drivers work with it 2) continue the current hacks needed for ReactOS drawing. Note that the broken IntCreateBitmap is still used by non EngXXX interfaces to reduce the change of breakage, but keep in mind the function is entirely wrong. ([[sir_richard]])<br />
* Revert accidental changes to IntCreateBitmap. ([[sir_richard]])<br />
* Enable the alignment code and reduce the number of hacks, leaving only one for 1bpp top-down output (Freetype?) which doesn't seem to like when the lDelta is aligned to the correct bit-boundary. This should fix the crashes and graphic cltches recently introduced. ([[sir_richard]])<br />
* Prevent a possible memory leak. ([[Kamil Hornicek]])<br />
* Use SURFACE_FreeSurfaceByHandle so we don't hit the "Object must not have a handle!" assert in GDIOBJ_FreeObj. ([[Kamil Hornicek]])<br />
* Fix acpi_bus_receive_event and acpi_bus_generate_event which will be used for button events later ([[Cameron Gutman]])<br />
* Uncomment and fix the locking code that protects the event queue and driver list ([[Cameron Gutman]])<br />
* When adding new glyph cache entry convert the glyph bitmap with proper alignment to comply with the new code in EngCreateBitmap and remove the corresponding hack from SURFMEM_bCreateDib. ([[Kamil Hornicek]]; {{bug|5244}})<br />
* Remove a pedantic assert to allow compressed bitmaps. ([[Kamil Hornicek]]; {{bug|5255}})<br />
* 45127 (sserapion) ([[Timo Kreuzer]])<br />
* Kill debug warnings of dc ownership. ([[James Tabor]])<br />
* Implement MakeInfoDC and support functions. Dedicated to Timo. ([[James Tabor]])<br />
* Handle keyboard input when no windows are present (Andrey; {{bug|3560}})<br />
* Since r43772 we now normalize VK_LCONTROL/VK_RCONTROL to VK_CONTROL rather than VK_LCONTROL (and ditto for shift/alt), so update SetKeyState to handle this. Fixes bug 4945. ([[Jeffrey Morlan]])<br />
* Update text and background brush properly. Fixes wrong colors in radio buttons in Firefox. Fix by Jerome Gardou. ([[Timo Kreuzer]]; {{bug|5311}})<br />
* rename w32k.h to win32k.h and win32k.h to win32kp.h ([[Giannis Adamopoulos]])<br />
* Do not do callbacks to user mode while holding system message queue lock ([[Giannis Adamopoulos]]; {{bug|4926}})<br />
* Fix when WH_MOUSE_LL and WH_JOURNALRECORD are called ([[Giannis Adamopoulos]]; {{bug|4926}})<br />
* 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. ([[Michael Martin]])<br />
* 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. ([[Michael Martin]])<br />
* The previous commit claiming to fix bug #4461 was incorrect, it may have actually fixed bug #5320. Testers please test. ([[Michael Martin]])<br />
* Fix IntDumpHandleTable, it was very broken. ([[Timo Kreuzer]])<br />
* bug> ([[Johannes Anderwald]])<br />
* 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. ([[Johannes Anderwald]])<br />
* bug> ([[Johannes Anderwald]])<br />
* fix> ([[Johannes Anderwald]])<br />
* 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) ([[Johannes Anderwald]])<br />
* fix> ([[Johannes Anderwald]])<br />
* Add an assert to PostTimerMessages to catch null pointer windows ([[Johannes Anderwald]])<br />
* Add another assert to catch special windows (Window == 1) ([[Johannes Anderwald]])<br />
* Improve check if the window is '1' ([[Johannes Anderwald]])<br />
* Revert the hack done in 47059 to apply a better solution. ([[Michael Martin]])<br />
* co_IntCreateWindowEx: Add the WNDS2_WMCREATEMSGPROCESSED flag to state2 member of WND after sending the WM_CREATE message. ([[Michael Martin]])<br />
* By setting this flag it can be examined elsewhere to determine if the window was created successfully. ([[Michael Martin]])<br />
* co_UserDestroyWindow: Examine above mentioned flag to make sure the windows was created before calling hook procedure to inform of destroying window. ([[Michael Martin]])<br />
* Only call ExFreePool.. if Buffer is not NULL, which can occur if the Unicode String MessageNameUnsafe coming from user mode is incorrect. Fixes a bugcheck when using OllyDbg V2.0. ([[Michael Martin]])<br />
* IntMouseInput: Add the state of virtual keys to wParam before calling MsqInsertSystemMessage. Fixes bug #5066. ([[Michael Martin]])<br />
* Add and Remove MK_XBUTTON1/2 flags to CurInfo->ButtonsDown vice XBUTTON1/2. ([[Michael Martin]])<br />
* Code based on patches in bug #5066. ([[Michael Martin]])<br />
* Gabriel Ilardi: ([[Aleksey Bragin]])<br />
* Update spanish %temp% path, part of bug 2482. ([[Aleksey Bragin]])<br />
* co_UserDestroyWindow: ThreadInfo->pDeskInfo->hShell holds the hWnd of the Shells Desktop Window. Set it to NULL if that windows is being destroyed. Fixes bug #4902. ([[Michael Martin]])<br />
* Fix sending WM_KILLFOCUS when we give focus to a window of a different thread ([[Giannis Adamopoulos]] ; {{bug|1546}} ; {{bug|1603}})<br />
* Fix broken parameter passing from EngMaskBitBlt to (Alpha)BltMask. It was passing the wrong surface and the wrong point. Rename some parameters to reflect what their usage is. Add ASSERTs to make sure noone passes useless parameters. Fixes crippled text in startmenu. ([[Timo Kreuzer]]; {{bug|4379}})<br />
* The whole code is broken by design, anyway it will go away, once the new text rendering code is done. ([[Timo Kreuzer]]; {{bug|4379}})<br />
* Modify how non-queued messages are send that originate from the Win23k subsystem. ([[Michael Martin]])<br />
* Non-queued messages must go directly to the windows WNDPROC and not through the message pump (previews ROS behavior). ([[Michael Martin]])<br />
* More importantly sending these messages must not cause the sending thread to block waiting for a reply. ([[Michael Martin]])<br />
* Add a messaging handling function that always sends message from Win32k to the windows thread without waiting. ([[Michael Martin]])<br />
* This will also allow the implementation of message call back later. ([[Michael Martin]])<br />
* Modify PackParam and UnpackParam to accept a BOOL value to determine whether LParam needs to be allocated from NonPagedPool. ([[Michael Martin]])<br />
* Use with new message handling as if message sent to another thread have any pointers they must be allocated from NonPagedPool. ([[Michael Martin]])<br />
* Fixed broken logic in can_active_window function and co_WinPosShowWindow. ([[Michael Martin]])<br />
* Fixed broken logic in co_IntSendActivateMessages. ([[Michael Martin]])<br />
* The WM_ACTIVATEAPP message was being sent to every window belonging to the desktop twice. ([[Michael Martin]])<br />
* Once with flag saying window was activated and again with deactivated. ([[Michael Martin]])<br />
* These changes should fix bugs #969, #3171, #4501, #4676, #4677, #4948. ([[Michael Martin]])<br />
* Bring back support for RLE compressed bitmaps. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Merge the decompress functions for 4bb and 8bpp bitmaps to one generic function. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Simplify SURFMEM_bCreateDib a bit by not allowing PNG/JPEG compression at all. ([[Kamil Hornicek]]; {{bug|5276}})<br />
* Check the supplied scancode instead of the state buffer whether a key is up ([[Gregor Schneider]]; {{bug|3727}})<br />
* Fixes the calculator keyboard input regression introduced with r35117 ([[Gregor Schneider]]; {{bug|3727}})<br />
* Ref: http://www.osronline.com/ddkx/w98ddk/keycnt_4ilz.htm and wine implementation ([[Gregor Schneider]]; {{bug|3727}})<br />
* When message are sent without waiting a reply (non-queued messages) the message queues are referenced and dereferenced in the call. ([[Michael Martin]])<br />
* Message removal and cleanup functions for queues expected a reference on the queue. Add checks to determine if the message is a non-queued message and if so release memory for those that had pointers and more importantly skip dereferencing the queues. Possibly fixes random crashes and memory leaks. ([[Michael Martin]])<br />
* The description and changes made regarding WM_ACTIVATEAPP messages in r47126 were partially incorrect, the code was mostly correct. ([[Michael Martin]])<br />
* Change the first parameter type from HWND to PWINDOW_OBJECT for IntKillTimer as it makes more sense. ([[Michael Martin]])<br />
* Activate IntSetTimer, already done by James. ([[Michael Martin]])<br />
* Add flag TMRF_DELETEPENDING. Destroy timers when this flag is set in ProcessTimers to allow any timers that have expired to have the WM_SYSTIMER/WM_TIMER messages posted to message queue before being destroyed. ([[Michael Martin]])<br />
* Fix error in FindTimer, it was always returning a Timer and it needed to return NULL if the specified timer did not exist. ([[Michael Martin]])<br />
* Fix error in PostTimerMessages, need to handle cases where the Window object is NULL which occurs when requesting messages for any window belonging to the thread. ([[Michael Martin]])<br />
* In co_IntPeekMessage, simply call PostTimerMessages to have WM_SYSTIMER/WM_TIMER messages posted for expired timers. Remove call to old timer message handling. ([[Michael Martin]])<br />
* TODO: Code using the old timer implementation needs removed. ([[Michael Martin]])<br />
* Fixes bugs #2393, #3634, #2835. Commit dedicated to JT and Mr. Roboto. ([[Michael Martin]])<br />
* Check that the thread is not in cleanup before attempting to do anything related to it. Add a couple asserts for sanity. ([[Michael Martin]])<br />
* Rename co_InflateRect to RECTL_vInflateRect and move it to rect.c ([[Giannis Adamopoulos]])<br />
* WM_WINDOWPOSCHANGED should contain the final window position ([[Giannis Adamopoulos]])<br />
* Store the monitor work area in the monitor and not in the desktop ([[Giannis Adamopoulos]])<br />
* Correctly adjust values returned from co_WinPosGetMinMaxInfo ([[Giannis Adamopoulos]])<br />
* Set MasterTimer initial value to NULL and Initialize MasterTimer at the beginning of RawInputThreadMain before doing anything else. ([[Michael Martin]])<br />
* Add ASSERTs to catch if MasterTimer is NULL. ([[Michael Martin]])<br />
* Move the initialization of MasterTimer into InitInputImp which is called from win32k DriverEntry routine instead of initializing it in the secondary thread RawInputThreadMain. ([[Michael Martin]])<br />
* Remove WS_EX_SETANSICREATOR from Ex style in co_IntCreateWindowEx ([[Timo Kreuzer]])<br />
* For the Low Level Mouse Hook (WH_MOUSE_LL), input can come from the mouse driver or mouse_event. Both of which result in a call to UserSetCursorPos. ([[Michael Martin]])<br />
* UserMode SetCursorPos API also ends up here. Add BOOL parameter that can be used to determine if hooks are to be called. ([[Michael Martin]])<br />
* Move the code related to calling the hook procedure from MsqInsertSystemMessage into UserSetCursorPos and call the hook procedure here if needed. ([[Michael Martin]])<br />
* If hook procedure returns non 0 value. Dont insert the system message. ([[Michael Martin]])<br />
* Fixes a recursive call to the hook procedure resulting thread using to much stack exposed by user32 winetest for input. ([[Michael Martin]])<br />
* When destroying a window, generate a mouse move message, so that the underlying window is notified about the mouse position and can update the pointer if neccessary. Fixes bug #4499 and bug #3893 ([[Timo Kreuzer]]; {{bug|4499}})<br />
* Minor revert of 47281 to fix OO installer textboxes. ([[Michael Martin]])<br />
* Delete old clipregion only and set a new one, if it could be created already, to avoid setting a NULL region. ([[Timo Kreuzer]]; {{bug|4431}})<br />
* Refactor NtGdiGradientFill, use 1 SEH block instead of 2, replace IntGdiGradientFill with GreGradientFill, don't lock the DC in UserDrawCaption. ([[Timo Kreuzer]])<br />
* Implement DestroyTimersForWindow and call it instead of MsqRemoveTimersWindow when destroying a window. ([[Michael Martin]])<br />
* Fire NewMessages event when cleaning up thread so that threads dont wait for new messages that will never be received. Fixes a problem where some application that use timers dont completly exit. ([[Michael Martin]])<br />
* IntSetTimer: Dont try to raise a timer from the dead. Once the TMRF_DELETEPENDING flag is set, let it be destroyed. ([[Michael Martin]])<br />
* co_MsqWaitForNewMessages: Call the wait without a timeout value as now when the timer expires the NewMessages event will be set to exit the wait. ([[Michael Martin]])<br />
* Message Queue specific timer code and old time queuing code is now dead. It will be removed later when we are happy with new timer implementation. ([[Michael Martin]])<br />
* GreGradientFill: don't forget to unlock the DC ([[Timo Kreuzer]])<br />
* Remove use of TMRF_DELETEPENDING for deleting timers as this was a bad idea. ([[Michael Martin]])<br />
* Timers need to be deleted immediately as waiting for them to be deleted resulted in some processes running out of handles. ([[Michael Martin]])<br />
* Fixes richedit winetest for editor. ([[Michael Martin]])<br />
* Add flag TMRF_TIFROMWND for timers created from user mode so the thread stored in the timer object is from the window and not caller. ([[Michael Martin]])<br />
* Fixes an issue where FireFox would not show any of its windows and looked dead. ([[Michael Martin]])<br />
* When creating and deleting timers, If the window is non null and IDEvent is 0 then the IDEvent is changed to 1. ([[Michael Martin]])<br />
* When modifying timer list use UserEnter and Leave instead of a Critical Region only. ([[Michael Martin]])<br />
* The timer is created usingUserCreateObject. It may be a good idea to save the handle in the timer object so that it can be deleted later. ([[Michael Martin]])<br />
* Dereference the object before attempting to delete it. ([[Michael Martin]])<br />
* For types FNID_SENDMESSAGECALLBACK call co_IntSendMessageWithCallBack to put the message in the send queue. ([[Michael Martin]])<br />
* Rewrite code for when messages have a completioncallback ([[Michael Martin]])<br />
* When processing and deleting timers use a seperate timer lock instead of using the global user lock. ([[Michael Martin]])<br />
* Rename co_IntCreateWindowEx to co_UserCreateWindowEx and rewrite it ([[Giannis Adamopoulos]])<br />
* Fix the sequence of messages sent in co_UserCreateWindowEx ([[Giannis Adamopoulos]])<br />
* Allow menus to be shown over the taskbar ([[Giannis Adamopoulos]]; {{bug|5415}})<br />
* Call CsrInit in NtUserInitialize so we can remove PrivateCsrssInitialized ([[Giannis Adamopoulos]])<br />
* Romove a reactos only syscall (NtUserGetClassLong) ([[Giannis Adamopoulos]])<br />
* Remove UserGetClassLongPtr, UserGetWindow, UserGetWindowLong, IntGetOwner. Instead access objects directly ([[Giannis Adamopoulos]])<br />
* In WINDOW_OBJECT store pointer to the ownder window instead of a handle ([[Giannis Adamopoulos]])<br />
* CreateWindow: initialize window position after sending WM_GETMINMAXINFO message ([[Giannis Adamopoulos]])<br />
* assert -> ASSERT ([[Gregor Schneider]])<br />
* Free allocations with the tag that was used to allocate them ([[Gregor Schneider]])<br />
* Use TAG_GDIICM tag for ICM allocations ([[Gregor Schneider]])<br />
* Use TAG_PALETTE for palette entries ([[Gregor Schneider]])<br />
* Remove mapping codes, the functions from pre r9000 don't even exist anymore ([[Gregor Schneider]])<br />
* Use TAG_KEYBOARD for keyboard layouts ([[Gregor Schneider]])<br />
* Free TAG_ACCEL and TAG_DRIVER allocations with their tags ([[Gregor Schneider]])<br />
* Forgot to remove this ASSERT for r47636 ([[Cameron Gutman]])<br />
* Change the number of windowless timers from 1024 to 32768. ([[Michael Martin]])<br />
* When destroying windowless timers, clear the bit number (IDEvent) in the bitmap so the bit number can be reused. ([[Michael Martin]])<br />
* Only create a windowless timer if there is no windowless timer matching IDEvent. ([[Michael Martin]])<br />
* Fixes case where applications create too many windowless timers and/or run out of windowless timers. ([[Michael Martin]])<br />
* Tag more pool allocations ([[Gregor Schneider]])<br />
* Tag even more pool allocations ([[Gregor Schneider]])<br />
* Remove dead code, adjust comments ([[Gregor Schneider]])<br />
* Tag the remaining untagged pool allocations ([[Gregor Schneider]])<br />
* Use GDITAG_RBRUSH instead of hardcoding the tag ([[Gregor Schneider]])<br />
* Merge GDIOBJ related changes from yarotows ([[Jérôme Gardou]])<br />
* GDIOBJ_(Share)LockObj : return NULL on NULL input, avoiding debug spew ([[Jérôme Gardou]])<br />
* Set NULL process owner when setting READY_TO_DIE flag of a gdiobj ([[Jérôme Gardou]])<br />
* So now GDIOBJ_ShareUnlockObj can claim ownership before trying to delete the object ([[Jérôme Gardou]])<br />
* Set DC_DIBSECTION dirty flag when a DIB section is selected, not when one is created. ([[Jérôme Gardou]])<br />
* Chek if there is something to do in GDIOBJ_SetOwnership before doing it ([[Jérôme Gardou]])<br />
* get rid of ROS_DC::BitsPerPixel. ([[Jérôme Gardou]])<br />
* 1 - It was a hack. ([[Jérôme Gardou]])<br />
* 2 - Its use was inconsistent. ([[Jérôme Gardou]])<br />
* co_IntSendMessageWithCallBack is called for two reasons; for messages that originate from win32k and from user mode when using Callbacks. ([[Michael Martin]])<br />
* For both cases do not do anything with the sendqueue member of message struct and do not add the message to the senders dispatch message list. ([[Michael Martin]])<br />
* In msgqueue related functions, check if the message is a nowait messages before attempting to remove and entry from the dispatch message list as it doesnt exist. ([[Michael Martin]])<br />
* Fixes a NonPagedPool corruption that was occurring on regtest bootcd. Thanks Caemyr for testing. ([[Michael Martin]])<br />
* Add Check for spwndNext being null before accessing any of the members. Fixes bugcheck when using cubicexplorer. ([[Michael Martin]])<br />
* update olepro32 base address. ([[Sylvain Petreolle]])<br />
* The Win32ClientInfo TEB field can be bigger than the CLIENTINFO structure. ([[Timo Kreuzer]])<br />
* Only the CompletionCallback member determines if a callback is needed. Checking the SenderReturn is unwanted and this variable was never initialized which could cause bogus callback attempts. Just remove the BOOL variable SenderReturned and directly check if Message->DispatchingListEntry.Flink is NULL before attempting to remove the message from senders queue. Noticed by Timo. ([[Michael Martin]])<br />
* Fix midiOutOpen and midiInOpen prototypes. ([[Sylvain Petreolle]])<br />
* Change percision of win32k timers to 0.5 miliseconds. ([[Michael Martin]])<br />
* Remove Destroy parameter from FindTimer as it is just odd and call RemoveTimer where needed. ([[Michael Martin]])<br />
* PostTimerMessages: No need to continue looping the remainder of the timers once the target timer has been found and message posted to message queue. ([[Michael Martin]])<br />
* Set caret blink rate for global server information too. ([[James Tabor]])<br />
* Remove dead code as in the old SetTimer and KillTimer functions. ([[Michael Martin]])<br />
* Fix typo. ([[Sylvain Petreolle]])<br />
* Dedicated to Physicus ([[Sylvain Petreolle]])<br />
* move set of msg-time (for messages) back to msg queue (msg time is needed for all mouse events not only mouse move) ([[Matthias Kupfer]])<br />
* ClickLock will work again ([[Matthias Kupfer]])<br />
* Revert changes done in 47325 which partially broke mouse hooks. ([[Michael Martin]])<br />
* If the UserSetCursorPos is reached due to SetCursorPos, dont generate a mouse move message or call mouse hooks. ([[Michael Martin]])<br />
* Forgotten in r47924. Change name of BOOL parameter for UserSetCursorPos to better describe its purpose as done in c source. ([[Michael Martin]])<br />
* Remove old win32k timer code. ([[Michael Martin]])<br />
* Update libxml to 2.7.7 (Samuel)<br />
* Resync zlib to 1.2.5. (Samuel)<br />
* Get rid of rosdc::hVisRgn, as in yarotows (r46372) ([[Jérôme Gardou]])<br />
* Dereference CursorIcon Object in NtUserCallOneParam ([[Jérôme Gardou]])<br />
* Shared Icons need their bitmaps to be unowned ([[Jérôme Gardou]])<br />
* Bye bye NtUserCreateCursorHandle. ([[Jérôme Gardou]])<br />
* Thanks GedMurphy for explaining me how to suppress that. ([[Jérôme Gardou]])<br />
* Please clean win32k after this commit. ([[Jérôme Gardou]])<br />
* Properly initialize hVisRgn in CLIPPING_UpdateGCRegion ([[Jérôme Gardou]])<br />
* This fixes a whole bunch of "IntGdiCombineRgn requires hSrc2 != NULL for combine mode 1!", and probably some bugs. ([[Jérôme Gardou]])<br />
* Dedicated to encod3d. ([[Jérôme Gardou]])<br />
* rewrite UserDrawIconEx, taken from yarotows, with same small modifications. ([[Jérôme Gardou]])<br />
* Fixes a whole bunch of user32:cursoricon tests ([[Jérôme Gardou]])<br />
* Protect access to the result pointer from KeUserModeCallback with SEH. Fixes a possible kernel mode crash. ([[Timo Kreuzer]])<br />
* Copy the alpha channel as well when doing RGB<->BGR color translations. ([[Timo Kreuzer]])<br />
* Fix NtGdiMaskBlt to handle patterns correctly, use SRCAND, which is more optimized, instead of DSTERASE, and set fore and background colors correctly to not destroy alpha channel. ([[Timo Kreuzer]])<br />
* Remove IntEngExtEscape stub. This function is completely useless. If the driver doesn't provide a DrvEscape, the function should simply fail and must return 0, not -1. ([[Timo Kreuzer]]; {{bug|4563}})<br />
* If a NULL surface is passed, pass on NULL pso to the driver function ([[Timo Kreuzer]]; {{bug|4563}})<br />
* For SetTimer nIDEvent can be 0 in which case return 1. Zero still needs to be used for nIDEvent when killing the timer. Fixes bug 5553. ([[Michael Martin]])<br />
* Modify windowless timers to use IDEvent values decrementing from the max number of windowless timers vice incrementing from 1. Done to match windows behavior. ([[Michael Martin]])<br />
* co_IntTranslateMouseMessage: properly initialize *HitTest and only send WM_NCHITTEST when the message is going to be removed (Jan)<br />
* co_IntPeekMessage: Prevent possible use of uninitialized HitTest by ProcessMouseMessage() (Jan)<br />
* Fixes bug 2139 (Jan)<br />
* Allocate the DCs prgnVis in DC_AllocDC, instead of "on demand" in GdiSelectVisRgn and properly handle failure case. This fixes a possible crash, when running out of gdi handles. ([[Timo Kreuzer]])<br />
* Use the object type index, not the shifted full object type to decide what to do with an object in NtGdiDeleteObjectApp. Fixes leaking derived types such as pens. ([[Timo Kreuzer]])<br />
* When doing a cleanup for a DC, check, if the default brushes are set, before dereferencing them. Fixes a possible kernel mode crash. ([[Timo Kreuzer]])<br />
* Remove some obsolete casts ([[Timo Kreuzer]])<br />
* Move the allocation of the vis region of the DC to a later position, so that all mandatory fields are initialized before we try to delete the DC in failure case. Fixes yet another possible crash. ([[Timo Kreuzer]])<br />
* Seperate DC_vSetLayout from NtGdiSetLayout and save the old value before setting the new one. ([[Timo Kreuzer]])<br />
* Rework EngSetPointerShape, to first allocate the neccessary surfaces, before deleting the old ones. Also check in IntShowMousePointer if a saving surface is present. This way a failure to allocate a surface will not result in a crash, but keep the old mouse pointer. ([[Timo Kreuzer]]; {{bug|5402}})<br />
* Mouse messages can be sent before the desktop is initialized. Check for this and return false if its not. FIxes assert when moving mouse before desktop is up. ([[Michael Martin]])<br />
* Fix large amount of set-but-unused variables. Most of these seemed to be old/unfinished code, however in IntGdiPaintRgn an actual bug seems to have been found. ([[sir_richard]])<br />
* Make IntGdiPaintRgn return the status of the operation, not always TRUE. ([[sir_richard]])<br />
* Giannis Adamopoulos: Only dereference a class if it's valid, should fix Heroes 3 crash. ([[Aleksey Bragin]]; {{bug|5606}})<br />
* Fix a bug, where a failure to allocate the kernel mode WINDOW_OBJECT would cause a page fault, because the WND was still allocated, but never initialized, and Wnd->rpdesktop was then dereferenced to free the WND again. ([[Timo Kreuzer]])<br />
* Call HCBT_CREATEWND, WM_NCCREATE and WM_CREATE with correct style and position ([[Giannis Adamopoulos]])<br />
<br />
=== XDK ===<br />
* Deduplicate FSRTL_COMMON_FCB_HEADER_LAYOUT in ntifs.h ([[Amine Khaldi]])<br />
* Move ECP_HEADER from the ntifs template to fsrtltypes.h ([[Amine Khaldi]])<br />
* Make sure FORCEINLINE comes as first in declarations. ([[Amine Khaldi]])<br />
* Missed this one (FORCEINLINE) ([[Amine Khaldi]])<br />
* WmiTraceMessageVa is NTAPI, not __cdecl. ([[Amine Khaldi]])<br />
* Introduce some _ANONYMOUS_STRUCT and NONAMELESSUNION based definitions. ([[Amine Khaldi]])<br />
<br />
==== BZIP2 ====<br />
<br />
== LIB ==<br />
<br />
=== 3RDPARTY ===<br />
* remove hal from libs ([[Timo Kreuzer]])<br />
* convert to spec ([[Timo Kreuzer]])<br />
<br />
==== FREETYPE ====<br />
* When doing 1BPP -> 8BPP conversion set all 8 bits not only the LSB. (Freetype devs were notified of this issue) ([[Kamil Hornicek]]; {{bug|5244}})<br />
* The FT_MulFix patch is not neccessary anymore, the 1BPP -> 8BPP conversion patch will be applied again right after this. (Jerome; {{bug|4537}})<br />
* Cleanup old files ([[Timo Kreuzer]])<br />
* Remove setjmplongjmp.s ([[Timo Kreuzer]])<br />
* Correction to last commit message: the conversion patch was already applied ([[Timo Kreuzer]])<br />
* Update to 2.3.12, conversion patch already applied ([[Timo Kreuzer]])<br />
* Fix FT_Get_CID_Is_Internally_CID_Keyed export name to match source code. ([[Aleksey Bragin]])<br />
<br />
===== ICU =====<br />
<br />
====== SOURCE ======<br />
<br />
======= COMMON =======<br />
<br />
======== UNICODE ========<br />
<br />
==== ICU4ROS ====<br />
* include string.h, for memcpy ([[Timo Kreuzer]])<br />
<br />
======= TEST =======<br />
<br />
======== PERF ========<br />
* Do not declare the PCR in KeGetPcr as volatile. It is only volatile as in "if there is a context switch, the PCR is different". You are in a LOT of trouble if the thread switches while your code is running in the first place, and your code is somehow running as a different thread! ([[sir_richard]])<br />
* This change makes C code a lot neater, especially during PCR access, because it doesn't force reloading the PCR each time. For example, Read-Modify-Operations on the PCR, such as AND are 1 line of assembly instead of 3. ([[sir_richard]])<br />
* This helps and will help further with the C HAL, as well as the C trap handlers. ([[sir_richard]])<br />
* Jose Catena <jc1@diwaves.com> ([[Aleksey Bragin]]; {{bug|5139}})<br />
* Fix a typo in aulldvrm (one of the dividends was always wrong). ([[Aleksey Bragin]]; {{bug|5139}})<br />
* Replace early ZwClose system calls with ObCloseHandle(KernelMode). This avoids taking a system call for those cases and gives a slight perf boost to booting up the system. It also pushes the first system call somewhat later in the boot process, allowing for easier debugging should the interface have issues/need tracing. ([[sir_richard]])<br />
* Make all trap handlers, trap exit code, fatal exit code, and exception dispatch code "no return" since it always leads to an iret or other kind of non-directly-returning mechanism. This allows the compiler to optimize better and also remove useless code at the bottom of the functions. Since __builtin_unreachable is only for GCC 4.5, we use exit(0) for now (it will never be reached) to trick GCC. ([[sir_richard]])<br />
* Fix vmwinst.exe crash (bug #5134). ([[Dmitry Gorbachev]])<br />
* Forgot ntdef.h ([[Dmitry Gorbachev]])<br />
* Put #endif where it should be. ([[Dmitry Gorbachev]])<br />
* Trying r45222 hack again... ([[Dmitry Gorbachev]])<br />
* Use for GCC before 4.5, too... ([[Dmitry Gorbachev]])<br />
* Comment out DECLSPEC_NORETURN for now. ([[Dmitry Gorbachev]])<br />
* Make the trap entry/exit macros inlined, just as they used to be before in their pure-assembly forms. This should boost performance quite a bit by avoiding 2-3 extra calls during traps and system calls. ([[sir_richard]])<br />
* Remove ABIOS checks since ReactOS does not support this, and since it doesn't look like the target kernel actually does either, we can remove this vestigal/unsupported code, saving some extra branches and checks. ([[sir_richard]])<br />
* Use __builtin_trap for old GCC, too. ([[Dmitry Gorbachev]])<br />
* KiEoiHelper, KiDispatchExceptionFromTrapFrame: mark noreturn. ([[Dmitry Gorbachev]])<br />
* Return DECLSPEC_NORETURNs. ([[Dmitry Gorbachev]])<br />
* After spending the better part of the last two days rewriting the HAL V8086 code (used for BIOS Display Reset) in C, it dawned upon me that it shouldn't even be used during bootup in the first place! The boot loader, running in real-mode, already sets video mode 12 when starting ReactOS. We then repeat the operation, but since we're in protected mode, we have to emulate the whole sheebang with V8086 mode. We now initialize bootvid without requesting a mode switch (which was broken up until a commit ago). This gives us a dirty palette and VGA state. We then call VidResetDisplay to clean up the palette and setup the VGA registers correctly, but we only reset the screen if a custom /BOOTLOGO command is used (which isn't supported yet). We therefore don't need to enter V8086 mode at all up until the switch to graphics mode from the video card driver. Note that Windows doesn't do this (Win7 might due to the new Boot Graphics Library), so we're actually booting faster! ([[sir_richard]])<br />
* What to do when your SYSEXIT code has a bug? Set KiFastSystemCallDisable to TRUE so it never gets used. Now, for the first time in 3 years and 3 months (not giving a specific revision # to protect the 'innocent'), ReactOS actually fully uses the SYSENTER/SYSEXIT instructions isntead of IRETD, since my code doesn't exhibit the bug and SYSEXIT is safe to use. This should save a good hundred cycles or more per system call. ([[sir_richard]])<br />
* Set WP0 bit in CR0 later, thus allowing the existing runtime patches (and this new one) to function without requiring MmSetPageProtect. Saves TLB flushes and page table walking/mapping on boot. ([[sir_richard]])<br />
* Left in some debug prints to see what buildbot reports...will remove if it survives. ([[sir_richard]])<br />
* Not in any way a scientific number you should bet the farm on, but we do now count the number of cycles at the very first instruction of kernel initialization, at the moment SMSS initializes the registry (when we call kernel initialization complete), and at the moment there have been 12 processes created (10 without counting idle/system), which is a bit less than a normal GUI boot. We also display the number if interrupts, system calls, and context switches it took to get us there. A purely comparative number, perhaps worthy for inclusion in testman/regression tests? ([[sir_richard]])<br />
* Optimize nested interrupt cases (where a pending interrupt exists at the end of a software or system interrupt) just like the old HAL did, by jumping into a second-level handler and completing the outer trap frame instead of the nested trap frame. This saves a lot of cycles in those cases, and they do happen quite often (pending DPC at the end of an interrupt, for example). ([[sir_richard]])<br />
* This is too since the C interrupt handling code is a lot more efficient than the ASM one. Numbers look good here. ([[sir_richard]])<br />
* On real machines, writing the PIC mask is a relatively expensive I/O operation, and IRQL lower/raise can happen hundreds of times a second. Lazy IRQL provides an important optimization. ([[sir_richard]])<br />
* Correctly handling level interrupts as level interrupts allows for faster, and more efficient, IRQ handling. ([[sir_richard]])<br />
* add missing delimiters ([[Sylvain Petreolle]])<br />
* Omit setting certain useless trap frame fields. ([[sir_richard]])<br />
* Change instructions used to save registers on the trap frame to fix some WaW and RaW hazards. ([[sir_richard]])<br />
* Merge some small changes from aicom-network-branch to fix potential memory corruption and remove unused code in oskittcp ([[Cameron Gutman]])<br />
* Add a hack to WSHSetSocketInformation so we don't fail with options that aren't implemented yet ([[Cameron Gutman]])<br />
* Fixes bug #5131 ([[Cameron Gutman]])<br />
* Boot-time improvement since the new system driver loading code uses low-level Cm interfaces (portability side-effect: can be shared with FreeLDR) instead of the complex parse-based object-manager-based system-calls. ([[sir_richard]])<br />
<br />
==== MINGW ====<br />
* Update mingw library to mingw-w64 trunk (mingw-w64-src_20100325) ([[Timo Kreuzer]])<br />
* 46538 ([[Timo Kreuzer]])<br />
* 46539 ([[Timo Kreuzer]])<br />
* add back getopt.c (needed by rosapps) ([[Timo Kreuzer]])<br />
* add ofmt_stub.c and cx_pure_virtual.c ([[Timo Kreuzer]])<br />
* fix a typo ([[Timo Kreuzer]])<br />
* link mingw_common to oldnames and ntdll ([[Timo Kreuzer]])<br />
* Remove broken _fmode declaration ([[Timo Kreuzer]])<br />
* Remove getopt from mingw lib and put it into it's own static library ([[Timo Kreuzer]])<br />
* change crt="dll" to crt="static" for the mingw startup libs, to avoid things like importing from itself. ([[Timo Kreuzer]])<br />
* Add a temporary hack to fix amd64 compilation for some modules. ([[Timo Kreuzer]])<br />
<br />
==== ZLIB ===<br />
<br />
=== CMLIB ===<br />
* Just use UNIMPLEMENTED. ([[sir_richard]])<br />
<br />
=== DRIVERS ===<br />
<br />
===== MMEBUDDY =====<br />
<br />
===== MMENT4 =====<br />
* Remove a ";" after an if (), that makes no sense and caused GetNt4SoundDeviceCapabilities to always return without doing anything. ([[Timo Kreuzer]])<br />
* Fix warning about uninitialized variable ([[Timo Kreuzer]])<br />
<br />
=== FSLIB ===<br />
<br />
==== VFATLIB ====<br />
* Get rid of the hard-coded sector size as large sector (4KB) harddisks are already available. ([[Eric Kohl]])<br />
* When a partition is formatted, choose the FAT type according to the partition type. The size of the partition does not matter here as it is up to the caller to set the right partition type according to its size. ([[Eric Kohl]])<br />
<br />
=== SDK ===<br />
* Add missing IIDs to UUID. ([[Aleksey Bragin]])<br />
* Implement PNP_HwProfFlags. ([[Eric Kohl]])<br />
<br />
=== INF ===<br />
<br />
== MEDIA ==<br />
* Add a device description for PNP0A00 ([[Cameron Gutman]])<br />
* Fix the class GUID so devices appear in the correct category in device manager ([[Cameron Gutman]])<br />
* Remove trailing spaces on some device descriptions ([[Cameron Gutman]])<br />
* Remove the "(UniATA)" at the end of some device descriptions ([[Cameron Gutman]])<br />
* Add -fms-extensions for arm build ([[Timo Kreuzer]])<br />
* Add _NT_TIB_KPCR to compensate for a missing NT_TIB (hackfix) ([[Timo Kreuzer]])<br />
* add KERNEL_STACK_SIZE & co for arm ([[Timo Kreuzer]])<br />
* Add missing KeGetCurrentThread prototype for arm ([[Timo Kreuzer]])<br />
* define INTERLOCKED_RESULT for X86 only ([[Timo Kreuzer]])<br />
* Add _CONTEXT and _EXCEPTION_RECORD forward declarations ([[Timo Kreuzer]])<br />
* remove scsiport from arm build ([[Timo Kreuzer]])<br />
* Compile scsiport.c for freeldr only on x86 builds ([[Timo Kreuzer]])<br />
* revert r46742 ([[Timo Kreuzer]])<br />
* Reenable isapnp ([[Cameron Gutman]])<br />
* Comment out the service installation for VBE and VGA so the configuration set in first-stage won't get overwritten ([[Cameron Gutman]])<br />
* Nasty graphical glitches still remain in VGA mode ([[Cameron Gutman]])<br />
* Fixes bug 2073 and bug 4192 ([[Cameron Gutman]])<br />
* Add 'PortSubClass' values for serial and parallel ports. ([[Eric Kohl]])<br />
<br />
== NTOSKRNL ==<br />
* Implement basic Headless support in the kernel. Implement missing InbvPort routines based on WinLdrPort (using cportlib). Add header for Hdl. Terminal initializes now on COM2. Added misisng code to InbvDisplayString to also display on Headless Terminal (requires unimplemented HeadlessDispatch). Next steps are to implement the kernel log buffer, and HeadlessCmdPutString to see boot strings. (Anton)<br />
* Implement CmdPutString command, and add log message types. Kernel version/build, processor, and RAM, now appear on EMS screen (due to InbvDisplayString), as well as loaded drivers. Next steps are to support log entries and a flag to route debug output (a ReactOS-specific feature request). (Anton)<br />
* Fix support for non Headless scenarios as well. (Anton)<br />
<br />
=== KDBG ===<br />
* Fix attaching to processes (registers / backtraces) ([[Timo Kreuzer]])<br />
<br />
==== CSRSRV ====<br />
<br />
=== CSR ===<br />
<br />
== SUBSYSTEMS ==<br />
* Mostly moved all the current CSRSS code into CSRSRV, with some very minor changes to get it workking. ([[sir_richard]])<br />
* Add some more code from Alex's CSRSRV, such as thread dereferencing/deallocation, hacked to work. ([[sir_richard]])<br />
* Make CsrTerminateProcess destroy each CSR thread in that process, otherwise we were always leaking a handle, so processes never died. Because of this, primary tokens would remain "in use", and when umpnpmgr attempted to do a "Create Process as User" for the second+ time, the call would fail since the token from the first process was still around. This fixed that regression from the mailing list. ([[sir_richard]])<br />
* Move the new process/thread management functions into new, dedicated files. Export some of the functions, so that win32csr can use them by linking to csrsrv. Last change needed for barebones user-mode shutdown support. ([[sir_richard]])<br />
<br />
=== NTVDM ===<br />
* Only compile on x86 builds ([[Timo Kreuzer]])<br />
* Load resource strings in Unicode when printing them in Unicode ([[Gregor Schneider]])<br />
* Update README.WINE. ([[Aleksey Bragin]])<br />
<br />
==== CSRSS ====<br />
<br />
=== WIN32 ===<br />
<br />
===== WIN32CSR =====<br />
* Rewrite harderror handling. ([[Timo Kreuzer]])<br />
* 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. ([[Timo Kreuzer]])<br />
* Add primitive resizing support and automatic scrolling support (Adam; {{bug|2622}})<br />
* Get rid of dynamic "LineBuffer": it wasn't being resized properly in all cases, causing corruption of Win32CsrApiHeap. Replaced with fixed buffer (painting a line with multiple TextOutW calls if necessary). ([[Jeffrey Morlan]])<br />
* Fix display of harderror message box for STATUS_UNHANDLED_EXCEPTION ([[Timo Kreuzer]])<br />
* Fix a FIXME: convert ASCII char to Unicode char with input codepage ([[Gregor Schneider]])<br />
* Rename define parameters to make sense (prefix s - source, d - destination) ([[Gregor Schneider]])<br />
* Assign remaining services to the LocalSystem account. ([[Eric Kohl]])<br />
* Silence a debugprint ([[Timo Kreuzer]])<br />
* Make CsrFreeConsole close the process's console handles. ([[Jeffrey Morlan]])<br />
* Clean up the debris from r47314: Removed some redundant code, reorganized headers, fixed win32csr.rbuild indentation ([[Jeffrey Morlan]])<br />
* Protect ProcessData->Console with the HandleTableLock. ([[Jeffrey Morlan]])<br />
* Simplify locking: having a lock for each screen buffer is overkill since most programs only use one screen buffer at a time. (besides, almost all APIs were taking the console lock anyway) Reduce to just having one lock for a console. ([[Jeffrey Morlan]])<br />
* Instead of keeping track of how many references a screen buffer has, keep track of handles only. When all handles to a screen buffer are closed, it should be deleted even if it's the active buffer (not yet implemented). ([[Jeffrey Morlan]])<br />
* Delete even the active screen buffer when all handles are closed. Fixes a winetest. ([[Jeffrey Morlan]])<br />
* Implement FILE_SHARE_* flags for console handles. Fixes some more winetests. ([[Jeffrey Morlan]])<br />
* Make consistent use of RECT/SMALL_RECT structures: a RECT uses pixel coordinates relative to the window client area and is endpoint-exclusive; a SMALL_RECT uses character coordinates relative to the screen buffer and is endpoint-inclusive. ([[Jeffrey Morlan]])<br />
* Allow text selections outside of the visible window ([[Jeffrey Morlan]])<br />
* Implement GetConsoleSelectionInfo ([[Jeffrey Morlan]])<br />
* fix tuiconsole ([[Jeffrey Morlan]])<br />
* Revert 47310. Please find a way to enable kmtest only when building the testing cd image, not the installation/live one. ([[Aleksey Bragin]])<br />
* Implement console pausing. [Bug 4739] ([[Jeffrey Morlan]])<br />
* Split up excessively large and disorganized conio.c into 3 separate files: one for input-related functions, one for output-related functions, and one for general/miscellaneous functions. ([[Jeffrey Morlan]])<br />
* Consistently store console input events internally as unicode. ([[Jeffrey Morlan]])<br />
* Console input simplification: ([[Jeffrey Morlan]])<br />
* Put code for processing events for line input in one place, instead of duplicating it everywhere ([[Jeffrey Morlan]])<br />
* Remove "Fake" and "NotChar" fields from ConsoleInput struct. ConioProcessKey didn't actually add Fake events; they were used for the \n when converting \r to \r\n, but this is better done by the line input code. ([[Jeffrey Morlan]])<br />
* Build an input line completely on the server side; this will make it practical to add history and more sophisticated editing later ([[Jeffrey Morlan]])<br />
* Implement some basic line editing capability ([[Jeffrey Morlan]])<br />
* Implement basic support for history in line editing ([[Jeffrey Morlan]])<br />
* Reorganize code to reflect that line input is more coupled to history than it is to character input ([[Jeffrey Morlan]])<br />
* Fix array subscript out of bounds error ([[Timo Kreuzer]])<br />
* Fix a cast ([[Timo Kreuzer]])<br />
* Delete ppcdevtree. ([[Amine Khaldi]])<br />
<br />
== TOOLS ==<br />
<br />
=== GENINC ===<br />
* Add some more constants ([[Timo Kreuzer]])<br />
<br />
=== MKHIVE ===<br />
* Use newinflib instead of inflib. ([[Eric Kohl]])<br />
* Add RegDeleteKeyW stub. ([[Eric Kohl]])<br />
* Convert registry generation code from ANSI APIs to UNICODE APIs. ([[Eric Kohl]])<br />
* wcsicmp -> _wcsicmp, should fix buildbot build ([[Gregor Schneider]])<br />
* Fix a buggy format string (%s --> %S). ([[Eric Kohl]])<br />
* Add _wcsicmp to rtl.c. ([[Eric Kohl]])<br />
* Partial revert of r47019 because mkhive failed on Linux machines. ([[Eric Kohl]])<br />
* Comment out an ASSERT that gets trigged frequently. ([[Timo Kreuzer]]; {{bug|5320}})<br />
* Revert remaining changes of r47019. ([[Eric Kohl]])<br />
* Add RegDeleteKeyW stub. ([[Eric Kohl]])<br />
* Implement RegDeleteKeyA so that it calls RegDeleteKeyW. ([[Eric Kohl]])<br />
* Check parameters before accessing them, update usage information ([[Gregor Schneider]])<br />
* Active the planned cleanup function to motivate people to actually free resources: mkhive currently leaks ~500kb of memory after a usual run ([[Gregor Schneider]])<br />
* Improve debug print ([[Gregor Schneider]])<br />
<br />
== Uncategorized ==<br />
* rapps ([[Daniel Reimer]])<br />
** Update openoffice 2.4 Links to a new and working mirror<br />
** Add Opera 9 to rapps.<br />
** Update OOo to 3.2.1 and the last time... fix the FF2 link.<br />
** Update rapps database to most recent Versions of all apps.<br />
** Add the non yet working FF 3.6 and AbiWord 2.8.5 to rapps to simplify testing.<br />
** Updated VB6, VC2005, VC2008 links according to winetricks.<br />
** Update the rapps download list.<br />
** Fix the SeaMonkey Mirror.<br />
** Try to fix FF2 Download.<br />
** Add Visual C++ 2008 SP1 runtime to rapps and rename the others correctly.<br />
** Added Fox Audio Player to rapps and some more fixes. (Igor Paliychuk, myself)<br />
** Update the rapps Database to a valid FireFox Link once more.<br />
** Bug 5072: PATCH: Add ReMooD to ReactOS Application Downloader. (by GhostlyDeath)<br />
** Update Rapps Links and add the two RosBE Addons.<br />
** Update some more apps. (OpenOffice 3.2.0, SciTE 2.03)<br />
** DosBox to 0.74, Mirror of FireFox 2, IrfanView to 4.27, RosBE to 1.5.1, uTorrent to 2.0.2.<br />
** Update FireFox, KDE, MirandaIM, Mono, Opera, RosBE64, SeaMonkey, ThunderBird, uTorrent, VLC in rapps.<br />
** Added comctl32.ocx, KDEWin, Mono, .net, Media Player Classic, Python, Steam, Tahoma Font and Windows Media Encoder 9 to rapps.<br />
** Update VLC to 1.1.0<br />
** Add SuperFinder XT to rapps.<br />
<br />
* media/inf ([[Daniel Reimer]])<br />
** Add Cyrix, Pentium MMX, Pro, II, M, 4, Core Solo/Duo/Extreme/i*, Atom, AMD K6, K6-3, Via Nehemiah, Esther, Nano and a big bunch of Family 15 (1st gen Athlon64, Turion64, Sempron Series) AMD CPUs to cpu.inf <br />
** Generalize some lines to be used for a whole bunch of models. As long as we don't have a CPU driver I will keep it that way its now, because now it at least shows a approximate CPU Title in Devmgr.<br />
** Add more HIDs for other CPUs and Manufacturers like VIA and AMD into cpu.inf to make it show the real CPU name in the Device Manager. This does not work yet, because our ACPI always returns the Default CPU HID right now.<br />
<br />
* wine ([[Daniel Reimer]])<br />
** Sync rpcrt4 to Wine 1.2rc6<br />
** Sync winemp3.acm with Wine HEAD. This one uses libmpg123 which was added in Version 1.12.3. Thx to Timo Kreuzer for telling me the magics of the crt="dll" switch.<br />
** Update the banner.bmp in credui<br />
** Fix setupapi setupcab winetest. (Samuel Serapion)<br />
** Another updated wine header to fix some synched winetests' build process<br />
** Update WIDL to Wine 1.2 rc6 + sync/modify two idl files making problems with the new widl. (Samuel Serapion)<br />
** update wine's unicode app to 1.2rc6. (Samuel Serapion)<br />
** Update the d3dx9_XX.dll files to the recent wine release version<br />
** Sync sccbase, slbcsp, usp10, wldap32, wuapi and xinput1_3 to Wine 1.1.40<br />
** Remove Esperanto and Walon languages from comctl32, comdlg32, mpr, msi, shlwapi, wininet<br />
<br />
* piperead ([[Daniel Reimer]])<br />
** Update piperead to Version 0.3 (Jan Roeloffzen)<br />
** Updated piperead (Jan Roeloffzen) Bug 5146<br />
<br />
* Update some psdk Headers ([[Daniel Reimer]])<br />
* Sync format_msg from kernel32 (Samuel Serapion) ([[Daniel Reimer]])<br />
is already added by "mingw_common". ([[Daniel Reimer]])<br />
* Some more psdk updates needed for winetests. ([[Daniel Reimer]])<br />
* update kernel32 nls files to be able to build it with the new unicode tool. ([[Daniel Reimer]])<br />
* convert the cmd rc files to utf-8 to fix building. ([[Daniel Reimer]])<br />
* Experimental try to get Itunes Setup start. By Samuel Serapion ([[Daniel Reimer]])<br />
* XML Compliance Patch for the RBUILD Files. By Samuel Serapion ([[Daniel Reimer]])<br />
<br />
* Bug 5501: Add Wing32 support by Carlo Bramini<br />
* user32: DrawText: CJK and Thai line-wrapping (Katayama Hirofumi)<br />
* appwiz: check if path is valid (Katayama Hirofumi)<br />
<br />
* The big RosBE 1.5 compatibility patch. You will need RosBE 1.5 from this point! ([[Colin Finck]]; {{bug|4810}})<br />
** Set the minimum GCC version to 4.4.0 and minimum Binutils version to 20091016.<br />
** Remove the -fno-unit-at-a-time hacks.<br />
** Remove dgorbachev's temporary hacks for user-mode C++ applications.<br />
** Merge ntoskrnl's "precomp.h" and "ntoskrnl.h" again, the PCH issues have been fixed.<br />
** Use our "ofmt_stub.a" to be compatible with newer MinGW Runtime versions.<br />
** Use LD's new -exclude-all-symbols option to not auto-export all symbols in case no DEF file or __declspec(dllexport) was specified.<br />
** We used to patch our LD version to work around this problem.<br />
** Use LD's --start-group and --end-group parameters to allow a more flexible linking order.<br />
** Use GCC's -fno-set-stack-executable for amd64 and i386 targets to disable adding the __enable_execute_stack code.<br />
** Change the makefile's name to "makefile-$(ARCH).auto" for all architectures.<br />
** Remove some -Wno-error flags.<br />
<br />
* This ancient version didn't even receive the GCC 4.1 compatibility update from years ago, so it's safe to remove it. ([[Colin Finck]])<br />
* Put Vizzini's "csq.h" in the Public Domain with permission from the author: ([[Colin Finck]])<br />
<br />
* Make KeFlushProcessTb work. Since no MPCore support, CPU TLB is flushed instead. Maybe should use ASIDs later. ([[evb]])<br />
* Fix wrong initialization of different modes and stacks. ([[evb]])<br />
* NANDFlash tool for building OMAP3 FLASH Images for DevBoard and QEMU-Maemo. ([[evb]])<br />
* ARM LLB for OMAP3/Beagle (test with QEMU-Maemo) and Versatile (test with QEMU). ([[evb]])<br />
* Boots to blue screen with white text to indicate checkpoint. ([[evb]])<br />
* Enable serial output. ([[evb]])<br />
* Forgot to change SARCH back to Versatile. ([[evb]])<br />
* Plugin support for booting FreeLDR when used as initrd on QEMU command-line. ([[evb]])<br />
* Change ARM loading architecture to match EFI/Firmware model. LLB provides "firmware" routines, FreeLDR obtains "firmware" routines from the ARM block, and sets them as the Machine VTable. All board-specific FreeLDR code gone now. ([[evb]])<br />
* Start work on UI. Serial output is now only for debugging, not usual console. ([[evb]])<br />
* Need PL045 Keyboard code to handle KbHit/GetCh. ([[evb]])<br />
* Have PL011 code ready for MachVideo routines, coming soon... ([[evb]])<br />
* Start stub of environment functions. ([[evb]])<br />
* Add config interface start (PciReadWriteConfigSpace, PciReadSlotConfig) ([[evb]])<br />
* Add PDO_EXTENSION structure and PCI_FUNCTION_RESOURCES, now delete #if0 in old code since PDO_EXTENSION is now exist defintion ([[evb]])<br />
* Add ID Class/Subclass to description functions (PciGetDeviceDescriptionMessage, PciGetDescriptionMessage), use pciclass.mc from sir_richard ([[evb]])<br />
* New debug: PciDebugDumpCommonConfig ([[evb]])<br />
* Implement IRP_MN_QUERY_DEVICE_RELATIONS with PciFdoIrpQueryDeviceRelations and PciQueryDeviceRelations ([[evb]])<br />
* Begin PciScanBus, now just dump all found device with no more work (0 QDR return) ([[evb]])<br />
* Support PCI device resource dicsovery for limit and current now, so bridge + device BAR functionning ([[evb]])<br />
* PciScanBus second pass enabled: PciProcessBus, most stubs now until VGA/ISA system tested ([[evb]])<br />
* PciClassifyDeviceType implement as helper function ([[evb]])<br />
* PCI Enumeration 100% complete! ([[evb]])<br />
* Add new unified VGA/VBE miniport driver. Based on NT4 DDK Cirrus Miniport Driver Sample with my modifications (marked with // eVb) to change Cirrus parts to VGA parts if needed. Also add VBE suppor which is not in Cirrus driver, but exists in Windows VGA miniport. ([[evb]])<br />
* Work-in-progress, can boot to GUI with VMWare, but banked modes not yet supported, no VDM, no Mode-X, etc... ([[evb]])<br />
* Thanks to sir_richard for help with headers, comments and other English stuff. ([[evb]])<br />
* Driver is only built, not yet used. ([[evb]])<br />
* NOTE: Some parts of BootVid seem to use functions copied from this sample (VgaInterpretCmdStream) but under "GPL", and also buggy (Chain4 Mode test will not work on most cards and VgaIsPresent == FALSE). Someone should fix. ([[evb]])<br />
* New Framebuffer (Linear) Display Driver to support new unified VGA/VBE miniport. Based on NT4 DDK Sample, with modifications by me (marked with // eVb) to support new functionality needed for 2003-era driver. ([[evb]])<br />
* Also used Virtual Box Display Driver as sample, which is based on "GPL" Windows 2003 DDK sample driver. Could not use 2003 DDK sample directly because of licensing issues, and feel unsafe about VirtualBox "GPL" driver that says "PATENTED AND ONLY FOR USE IN MICROSOFT PRODUCTS". ([[evb]])<br />
* Note that old driver was based off DDK sample too, but with variables renamed (some comments identical!) and code reformatted, then marked as "GPL". This is not very good way to share/use code... one day someone can teach you lesson. ([[evb]])<br />
* Remove bits saying dithering supported, since code patented and removed (also, ReactOS win32k not support dithering calls!). ([[evb]])<br />
* Enable non-OOB mode for Versatile. ([[evb]])<br />
* Enable RAMDISK support in LLB. ([[evb]])<br />
* Build commandline for OS Loader (FreeLDR). ([[evb]])<br />
* Now ready to start loading freeldr.ini ([[evb]])<br />
* Add support for ram disk offset (.IMG file is a RAW image, partition starts later...) ([[evb]])<br />
* Fix ram disk support in FreeLDR, ARC changes had broken support for booting FreeLDR (not just the Windows) from a ram disk. ARM port now initializes ramdisk as an FS device. ([[evb]])<br />
* Fix hardcoded DISKREADBUFFER and FILESYSBUFFER values. On ARM these will be dynamically selected for each board (need to improve this through LLB). ([[evb]])<br />
* Now FreeLDR.ini is read, and crash happens because UI routines are all NULL. ([[evb]])<br />
* Add stubs for video mach functions and update minor to 1.3. ([[evb]])<br />
* Implement some simple video routines. ([[evb]])<br />
* Fix usable RAM not to include loader code and ram disk (up to 32MB). ([[evb]])<br />
* Add GetTime stub, bump version to 1.4. ([[evb]])<br />
* Implement function for drawing character on the screen when request come from firmware. ([[evb]])<br />
* Tui.c assumes all screens are x86 VGA Consoles with 8-bit character and 8-bit attribute. On ARM, call Mach function to draw character instead of drawing into ScreenMemory off-screen buffer. ([[evb]])<br />
* FreeLDR menu now appears, need GetTime for counter. ([[evb]])<br />
* Add PL031 RTC code for Versatile. ([[evb]])<br />
* Add RTC time to TimeInfo convert. ([[evb]])<br />
* Implement FirmWare GetTime function. Countdown in FreeLDR now working. ([[evb]])<br />
* Switch to bootvid 8x13 font (closer to PC/VGA experience). ([[evb]])<br />
* Fix LlbFwVideoGetDisplaySize return characters X/Y, not pixels. Now "Press F8 for advanced menu" shows". ([[evb]])<br />
* Refactor keyboard support to match serial. Now reading a key and waiting for a key are two things. ([[evb]])<br />
* Implement KbHit Firmware routine. ([[evb]])<br />
* It is now possible to interact with FreeLDR using the keyboard. ([[evb]])<br />
* Video Miniport driver not use ntddk.h, but miniport.h. But, Reactos miniport.h is empty! Add some definitions to miniport.h to get simple drivers to compile, so now can remove ntddk.h from VGA/VBE/XBOX miniports! ([[evb]])<br />
* Video Port driver should not use either, but too many changes required. So, define __BROKEN__ to allow ntddk + miniport together. ([[evb]])<br />
* Add VideoPortIsNoVesa API definition. Not implemented in ReactOS, used to disable VESA in F8 "Standard VGA Mode". Should implement for VGA-only support on broken VESA machine, and for test. ([[evb]])<br />
* Fix includes in richard's driver. ([[evb]])<br />
* Fix wrong calling to VideoPortCreateEvent. He got parameters all mixed up~ ([[evb]])<br />
* Begin implement full PCI Bus Driver. code by me comments by sir_richard to avoid Engrish ([[evb]])<br />
* DriverEntry full 100% implemented, ACPI WatchDog detect, PCI IRQ Routing detect, PCI errata/hackflag detect (PciGetDebugPorts not support, need PCI Debug Device to test) ([[evb]])<br />
* Native (S)ATA, PCI BIOS Resource Lock, System Errata/Hackflag also is detect ([[evb]])<br />
* HAL Hoooking enabled, callbacks stub ([[evb]])<br />
* Stub PnP Interfaces: PciAddDevice, PciDriverUnload, PciDispatchIrp ([[evb]])<br />
* PCI utility routines: PciUnicodeStringStrStr, PciStringToUSHORT, PciIsSuiteVersion, PciIsDatacenter, PciOpenKey, PciGetRegistryValue, PciBuildDefaultExclusionList done ([[evb]])<br />
* PCI Verifier Support for future: PciVerifierInit/PciVerifierProfileChangeCallback (stub) ([[evb]])<br />
* Thank you for much patience~ This 1200 first codes, have 12000 codes more to come!~~ ([[evb]])<br />
* More implement of PciScanBus, now read hack flags from table (PciGetHAckFlags), and check for critical device (PciIsCriticalDeviceClass) and VGA device on PCI bridge ([[evb]])<br />
* Do check for skipping some function (double decker ghost, Intel Alder SMP Pentium Pro machine, hacl flag, more), PciSkipThisfunction ([[evb]])<br />
* Do check for PDO already exist for function (PciFindPdoByFunction) ([[evb]])<br />
* Finish impement PciFindParentPciFdoExtension ([[evb]])<br />
* Implement PciPdoCreate and add all PDO IRP stub functions, set dispatch table for major/minor command, add PciIrpInvalidDeviceRequest ([[evb]])<br />
* Fix bug in PciFindPdoByFunction should check device slot info too ([[evb]])<br />
* Add more enumeration codes in PciScanBus to create PDO ([[evb]])<br />
* PCI_HACK_FAKE_CLASS_CODE support ([[evb]])<br />
* Build PDO extension, set ready for PnP manger, now 41 QDR returned ([[evb]])<br />
* Add PCI/CardBus Bridge to list ([[evb]])<br />
* Detect bridge/IDE controller with no power down support, hack for Intel 82375 PCI to EISA bridge for Alpha thanks to sir_richard ([[evb]])<br />
* QUERY_ID is sent to PDOs now! ([[evb]])<br />
* More PciScanBus codes now to check saved PCI BIOS config header saved in registry (PciGetBiosConfig, PciSaveBiosConfig) and support load save compare (PcipIsSameDevice) if change in interrupt line ([[evb]])<br />
* Also for interrupt line use HAL to get parent bus IRQ# if device connected (PciGetAdjustedInterruptLine) ([[evb]])<br />
* For PCI debug HW PciIsDeviceOnDebugPath to detect, but have not real machine with this kind of device to test ([[evb]])<br />
* Support PCI_HACK_NO_SUBSYSTEM and PCI_HACK_NO_SUBSYSTEM/REVISION_AFTER_D3 for when compareing ([[evb]])<br />
* New config function required PciWriteDeviceConfig to update IRQ line from BIOS registry data ([[evb]])<br />
* Save initial, current Command enables to PDO extension, interrupt data too ([[evb]])<br />
* Can't sleep so write more source codes! add scan bus functions to get power caps (PciGetEnhancedCapabilities) and AGP caps, use PciReadDeviceCapability util function, now can get wake levels, PCI power state plus target AGP ID. Now can find PCI Device that can't sleep neither! Ha-ha! ([[evb]])<br />
* Support PCI_HACK_NO_PM_CAPS, PCI_HACK_PRESERVE_COMMAND, PCI_HACK_DONT_DISABLE_DECOES ([[evb]])<br />
* Add scan bus function to set power for PCI, for now to power up (PciSetPowerManagedDevicePowerState), with support for device that is critical/broken (PciCanDisableDecodes) ([[evb]])<br />
* Check spec-correct with PciStallForPowerChange after define PciPowerDelayTable for D0<->D3 crossmatrix spec timings (add PciReadDeviceConfig for support) ([[evb]])<br />
* If bad spec timing use PCI verifier support (PciVerifierRetrieveFailureData) + STATUS_DEVICE_PROTOCOL_ERROR ([[evb]])<br />
* Add PciVerifierFailureTable with all failure type ([[evb]])<br />
* Almost the time for resource discovery of BARs! ([[evb]])<br />
* Added support IOCTRL_QUERY_PUBLIC_ACCESS_RANGES, IOCTRL_SET_PALETTE_REGISTERS, IOCTRL_QUERY_CURRENT_MODE, used by test Standard VGA-only display driver. ([[evb]])<br />
* Code from NT4 DDK Cirrus miniport with some mods by me. ([[evb]])<br />
* Missing PCI_BUS_DRIVER_INTERNAL added to bugcodes. Thx for sir_richard to show me how to add. ([[evb]])<br />
* Implement Root Bus FDO AddDevice codes, get boot config, connect to HAL or ACPI config handlers (PciQueryForPciBusInterface, PciGetConfigHandlers), read BUS FDO hack flag, get _HPP HotPlug PCI ACPI data and initialize arbiter support. ([[evb]])<br />
* PciGetHotPlugParameters work but no PCI HotPlug support on my machines, so cannot test ACPI data, that part stub now ([[evb]])<br />
* Add PciFdoDispatchTable, PciFdoDispatchPnpTable, PciFdoDispatchPowerTable but all stub to PciIrpNotSupported however set correct IRP Dispatch Style for the IRPS ([[evb]])<br />
* Arbiter support in PciInitializeARbiters done, but PciInterfaces array is NULL (stub) at moment ([[evb]])<br />
* Add PCI_SIGNATURE, PCI_STATE, PCI_DISAPTCH_STYLE type, add PciInitializeState to begin the state support ([[evb]])<br />
* Add structure for PCI_FDO_EXTENSION, PCI_SECONDARY_EXTENSION, PCI_INTERFACE, PCI_ARBITER_INSTANCE, PCI_DISPATCH_TABLE ([[evb]])<br />
* PCI utility functions added: PciFindParentPciFdoExtension, PciInsertEntryAtTail, PciInsertEntryAtHead, PcipLinkSecondaryExtension, PciGetDeviceProperty, PciSendIoctl ([[evb]])<br />
* Need sir_richard to add arbiter.h header to define ARBITER_INSTANCE for finish support ([[evb]])<br />
* This 1000 more codes done now~ ([[evb]])<br />
* Implemented IRP dispatch to work in new PCI driver (PciDispatchIrp), fill out FDO IRP handlers which all stubs now, make up/down-call work (PciPassIrpFromFdoToPdo, PciPassDownIrp) ([[evb]])<br />
* Added the helper debug routines ([[evb]])<br />
* PCI driver receive IRP_QUERY_INTERFACE now and hit stub ([[evb]])<br />
* Fix for code to handle IRP dispatching when unrecognized IRP (Thanks you sir_richard) ([[evb]])<br />
* Add FDO IRP_MN_QUERY_INTERFACE support (it calls PciQueryInterface) ([[evb]])<br />
* Add all PCI interface descriptor: PciLocationInterface (GUID_PNP_LOCATION_INTERFACE), PciPmeInterface (GUID_PCI_PME_INTERFACE), PciCardbusPrivateInterface (GUID_PCI_CARDBUS_INTERFACE_PRIVATE), PciLegacyDeviceDetectionInterface (GUID_LEGACY_DEVICE_DETECTION_STANDARD), AgpTargetInterface (GUID_AGP_TARGET_BUS_INTERFACE_STANDARD), PciRoutingInterface (GUID_INT_ROUTE_INTERFACE_STANDARD), BusHandlerInterface (GUID_BUS_INTERFACE_STANDARD) and stub initializer and constructor. ([[evb]])<br />
* Add missing devhere.c interface file ([[evb]])<br />
* Add all PCI arbiter descritptor: ArbiterInterfaceBusNumber, ArbiterInterfaceMemory, ArbiterInterfaceIo. Write constructor stub but not handled ArbitersInitialized == TRUE ([[evb]])<br />
* Also add last-resort PCI interface: TranslatorInterfaceInterrupt (GUID_TRANSLATOR_INTERFACE_STANDARD) and part implement tranirq_Constructor ([[evb]])<br />
* Add PciQueryInterface to find correct FDO/PDO/ROOT interface for a request and call interface constructor ([[evb]])<br />
* Fix interface signatures, fix interface constructor type and PCI_INTERFACE, add interface flags (Thanks sir_richard) ([[evb]])<br />
* Fix Aribtriter code (Thanks sir_richard) ([[evb]])<br />
* Now another 1200 codes added, soon time for enumeration code! ([[evb]])<br />
* IRP_MN_START_DEVICE implement for ROOT FDO (PciFdoStartDevice) ([[evb]])<br />
* PciInitializeArbiterRanges implement to scan arbiter not yet construct since Arb library missing ([[evb]])<br />
* Add PCI state machine (PciBeginStateTransition, PciCancelStateTransition, PciCommitStateTransition) andtransition array (PnpStateTransitionArray) to check if valid ([[evb]])<br />
* Now IRP_MN_QUERY_DEVICE_RELATIONS sent to ROOT FDO means time to enumerate bus! ([[evb]])<br />
* Add all pci bridge control function (PciBridgeIoBase, PciBridgeIoLimit, PciBridgeMemoryBase, PciBridgeMemoryLimit, PciBridgePrefetchMemoryBase, PciBridgePrefetchMemoryLimit, PciBridgeMemoryWorstCasealignment, PciBridgeIsPositiveDecode, PciBridgeIsSubtractiveDecode) ([[evb]])<br />
* More support ICH0/1/2/3/4 hub ([[evb]])<br />
* Add all PCI2PCI bridge limit/current resource codes (PPBridge_*), now is BAR setup okay, and Device_* must be implement ([[evb]])<br />
* Support ISA+VGA legacy decode, 20+64-bit decode, ROM BAR, prefetch BAR ([[evb]])<br />
* Add support for PnP IRP to PDO: IRP_MN_QUERY_BUS_INFORMATION (PciQueryBusInformation), IRP_MN_QUERY_ID (PciQueryId), IRP_MN_QUERY_DEVICE_TEXT (PciQueryDeviceText), IRP_MN_QUERY_CAPABILITIES (PciQueryCapabilities), IRP_MN_QUERY_DEVICE_RELATIONS (PciQueryTargetDeviceRelations implement, PciQueryEjectionRelations, stub) ([[evb]])<br />
* Stub support for PnP IRP to PDO: IRP_MN_QUERY_RESOURCE_REQUIREMENTS (PciQueryRequirements), IRP_MN_QUERY_RESOURCES(PciQueryResources) ([[evb]])<br />
* Add support for PnP IRP to FDO: IRP_MN_QUERY_CAPABILITIES (handle in PciFdoIrpQueryDeviceCapabilities) ([[evb]])<br />
* Build device capability UI number (PciDetermineSlotNumber), use PIR$ (seem support broken, need to check loader) or device property for bus not root ([[evb]])<br />
* Use parent attachee device and this PDO for build device/system wake states, latency, device/system power mappings ([[evb]])<br />
* PCI-ID manage support: PciInitIdBuffer, PciIdPrintf, PciIdPrintfAppend ([[evb]])<br />
* Debug helper: PciDebugDumpQueryCapabilities ([[evb]])<br />
* Thanks richard for advise + beer ([[evb]])<br />
* PCI-X driver now pass 10000 codes lines! ([[evb]])<br />
* IRP_MN_QUERY_RESOURCES support for PDO (PciQueryResources, PciAllocateCmResourceList), now remain IRP_MN_QUERY_RESOURCE_REQUIREMENTS to last device stack interogration from PNPMGR ([[evb]])<br />
* IRP_MN_QUERY_RESOURCE_REQUIREMENTS half support now, PciQueryRequirements, PciAllocateIoRequrementsList, full implement, but PciBuildRequirementsList return 0 always for now ([[evb]])<br />
* Debug helpers: PciDebugPrintIoResReqList, PciDebugPrintIoResource, PciDebugCmResourceTypeToText ([[evb]])<br />
* Now hit assert Assertion '(DeviceNode->Flags & DNF_ADDED)' failed at ntoskrnl/io/pnpmgr/pnpmgr.c line 201, too night to debug, maybe tomorow ([[evb]])<br />
* Change NANDFlash again for Versatile support. Now the LLB and OS Loader are created in one binary blob (loaded with -kernel), while the RAMDISK is loaded with -initrd. ([[evb]])<br />
* Now the only complication is that RAMDISK loaded at 0x80000 which will conflict with the 0x800000 range where kernel loads. Could move RAMDISK in code through LLB, but that would be very expensive (shift by 16MB up). Instead, NANDflash creates ramdisk image starting at offset 16MB. This way, emulator thinks it's loading at 0x80000, but actually loads at 0x1800000. Would be better if QEMU not hardcoded the INITRD_LOAD_ADDR... ([[evb]])<br />
* Define memory map structure for Versatile board/QEMU and send to OS Loader. ([[evb]])<br />
* Many hack removed. ([[evb]])<br />
* Better efficency use of memory layout. ([[evb]])<br />
* Region at 0x800000 now available for FreeLDR use to load kernel files. ([[evb]])<br />
* Implement simple ArmDiskNormalizeSystemPath so boot is allowed to happen. ([[evb]])<br />
* Use better stack address as defined in memory map. ([[evb]])<br />
* Now FreeLDR loads all files correctly from disk and is ready to jump to kernel. ARMv5 paging code must be rewritten before that can happen. ([[evb]])<br />
* Reading MBR from RAMDISK does not work since RAMDISK starts at BootSector (rdoffset) and disk sector functions are NULL. Build bogus signature/checksum for now, unless MBR really needed later. ([[evb]])<br />
* Now FreeLDR crashes no more and arrives at FrLdrStartup to boot kernel and setup paging. ([[evb]])<br />
* Make boot.s just stub to force load address, since ARM LLB already does setup. Will get rid of later. ([[evb]])<br />
* Get rid of all .pagedata stuff from boot.s. Now define simpler static page tables. Will probably get rid of later. ([[evb]])<br />
* Fix memory map to include framebuffer, had forgotten about it. Moved framebuffer to the nearest hole found. It happens to be 0xA0000, nice coincidence (matches x86!). ([[evb]])<br />
* Switch to nicer 8x16 font instead of 8x13. Now FreeLDR UI looks 99% identical to real PC. ([[evb]])<br />
* Start writing new ARMv6 Paging Code. Enable extended page tables and access bit, redefine structures, only for OS Loader for now. ([[evb]])<br />
* Identity map low-memory 1MB and MMIO 2MB space at 0x10000000 for Versatile. Need to make this board-specific later. ([[evb]])<br />
* Need to investigate sharing code with WinLDR. ([[evb]])<br />
* MMU enabled and Printf/LCD output works!. ([[evb]])<br />
* Fix text output ([[evb]])<br />
* Allow for more than just one parameter on the bootROM command line (sepearate with commas). ([[evb]])<br />
* Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets. ([[evb]])<br />
* Last code in PciScanBus: call to PciGetfunctionLimits now implement (call PcipGetfunctionLimits if PciSkipThisFunction say no) ([[evb]])<br />
* PcipGetfunctionLimits support PCI_HACK_CRITICAL_DEVICE and PCI Debug Device by use IPI code (PciExecuteCriticalSystemRoutine implement) ([[evb]])<br />
* PciConfigurators table define for Device, PCI-to-PCI (PP) Bridge plus CardBus Bridge but all configurator stub now ([[evb]])<br />
* Configurator chain: Init (Massage) -> [WRITE INIT] (PciWriteLimitsAndRestoreCurrent) -> Restore -> SaveLimit -> SaveCurrent ([[evb]])<br />
* Support ExpectedWritebackFailure ([[evb]])<br />
* Fix bug in PciApplyHacks (found by me testing sir_richard code) ([[evb]])<br />
* Now pass 7000 SLOC ^_^;~ Good night! ([[evb]])<br />
* Implement logical keyboard interface. Converts scan code to ASCII codes (just ok). ([[evb]])<br />
* Implement firmware ConsGetCh based on keyboard interface. ([[evb]])<br />
* Implement KMI (Keyboard & Mouse Interface) PL050 driver for Versatile to init PS/2 and read keyboard scancodes. Can now press ENTER/whatever when FreeLDR gives "Cannot find freeldr.ini" error. ([[evb]])<br />
* More fixes ([[evb]])<br />
* Flesh out more code. ([[evb]])<br />
* Support ATAG Linux/ARMBoot architecture defined-structures. These are used by all ARMBoot-compatible loaders (QEmu, U-boot, etc). ([[evb]])<br />
* Read RAMDisk, RAM, Command Line from ATAGs (use -append boot-device=RAMDISK). ([[evb]])<br />
* Make environment-get function read command-line. ([[evb]])<br />
* Allocate RAM memory structure portably. ([[evb]])<br />
* Validate board info on boot. ([[evb]])<br />
* shellapi.h] ([[Timo Kreuzer]])<br />
* fix inclusion of pshpack / poppack (global and not for _WIN64) ([[Timo Kreuzer]])<br />
* DHCPCSVC] ([[Cameron Gutman]])<br />
* Move code from dhcp to dhcpcsvc ([[Cameron Gutman]])<br />
* Export ServiceMain from dhcpcsvc ([[Cameron Gutman]])<br />
* Now our DHCP service is compatible with the Windows architecture ([[Cameron Gutman]])<br />
* Remove dhcp from build ([[Cameron Gutman]])<br />
* Restore SVN history ([[Cameron Gutman]])<br />
* Part 2 of x ([[Cameron Gutman]])<br />
* INFLIB] ([[Timo Kreuzer]])<br />
* Merge r36443 from amd64 branch: ([[Timo Kreuzer]])<br />
* Remove references to Infp Functions that collide with inflib names, call the actual functions instead of making small functions that shared the same parameters and just called into inflib anyway, with no changes whatsoever. ([[Timo Kreuzer]])<br />
* NTOSKRNL / RTL] ([[Eric Kohl]])<br />
* Implement BreakOnTermination case for NtQueryInformationProcess and NtSetInformationProcess. ([[Eric Kohl]])<br />
* Implement RtlSetProcessIsCritical. ([[Eric Kohl]])<br />
* rpcndr.h] ([[Timo Kreuzer]])<br />
* Add a tag to NDR_SCONTEXT struct. MS headers don't have it, but gcc 4.5.x requires it, because without the tag, the struct would be from an unnamed namespace and can't be shared by different compilation units in C++. Yeah whatever... ([[Timo Kreuzer]])<br />
* sdkddkver.h] ([[Timo Kreuzer]])<br />
* Add UL suffix to some constants. ([[Timo Kreuzer]])<br />
* wine/commctrl.h] ([[Timo Kreuzer]])<br />
* Don't use #include_next, instead imclude psdk/commctrl.h ([[Timo Kreuzer]])<br />
* _mingw.h] (Amine)<br />
* Help compilation with clang. (Amine)<br />
* ReactOS-amd64.rbuild] ([[Timo Kreuzer]])<br />
* The old explorer won't compile for amd64 without massive hacking, so remove it from the build. ([[Timo Kreuzer]])<br />
* DDK} ([[Timo Kreuzer]])<br />
* Add a number of PCI related types to ntddk.h ([[Timo Kreuzer]])<br />
* Revert r47553 because testbot doesn't like it ([[Timo Kreuzer]])<br />
* WINEMP§.ACM] ([[Timo Kreuzer]])<br />
* Define WIN32 to fix compilation for anything else than x86 ([[Timo Kreuzer]])<br />
* NDK] ([[Timo Kreuzer]])<br />
* Add missing TEB member for Vista ([[Timo Kreuzer]])<br />
* stdlib.h] ([[Timo Kreuzer]])<br />
* Improve definition of __mb_cur_max and related ([[Timo Kreuzer]])<br />
* properly handle _M_CEE_PURE ([[Timo Kreuzer]])<br />
* HHCTRL.OCX] ([[Christoph von Wittich]])<br />
<br />
* HHCTRL.OCX] ([[Sylvain Petreolle]])<br />
* Fix imm.h inclusion. ([[Amine Khaldi]])<br />
* WIN32K / USER32] ([[Timo Kreuzer]]; {{bug|2900}})<br />
* Convert the window text string from UNICODE_STRING to LARGE_STRING and fix NtUserCreateWindowEx parameters. We currently still pass UNICODE only LARGE_STRINGs, as the rest of the code in win32k expects this. ([[Timo Kreuzer]]; {{bug|2900}})<br />
* Fixes display of large text windows, like the winzip license. ([[Timo Kreuzer]]; {{bug|2900}})<br />
* WIN32CSR] Implement SetConsoleScreenBufferSize. FAR Manager now works again. ([[Jeffrey Morlan]])<br />
* commit file missing from r47165 ([[Jeffrey Morlan]])<br />
* WIN32CSR] Implement the CREATE_NO_WINDOW flag which creates a console with an invisible window. ([[Jeffrey Morlan]])<br />
* WIN32CSR] More fixes for console winetest ([[Jeffrey Morlan]])<br />
* BasepInitConsole: Initialize console input EXE name ([[Jeffrey Morlan]])<br />
* WIN32CSR] ([[Jeffrey Morlan]])<br />
* Make Get/SetConsoleTitle more compatible with windows; in particular, transfer title via capture buffer to allow for longer titles. ([[Jeffrey Morlan]])<br />
* Tighten up capture buffer validation in win32csr. ([[Jeffrey Morlan]])<br />
* WIN32CSR] ([[Jeffrey Morlan]])<br />
* Implement console history (note: not too useful yet without any way to recall it) ([[Jeffrey Morlan]])<br />
* Implement APIs GetConsoleCommandHistoryLength, GetConsoleCommandHistory, ExpungeConsoleCommandHistory, SetConsoleNumberOfCommands, GetConsoleHistoryInfo, SetConsoleHistoryInfo. ([[Jeffrey Morlan]])<br />
* Remove stub of obsolete function SetConsoleCommandHistoryMode, which no longer exists in Windows. ([[Jeffrey Morlan]])<br />
* add missing file ([[Jeffrey Morlan]])<br />
* WIN32CSR] ([[Jeffrey Morlan]])<br />
* Implement ReadConsoleW's CONSOLE_READCONSOLE_CONTROL structure. ([[Jeffrey Morlan]])<br />
* Make pressing Insert during line input work ([[Jeffrey Morlan]])<br />
* ntoskrnl\mm] ([[Michael Martin]])<br />
* Fix a continuous loop bug in MiWriteProtectSystemImage. ([[Michael Martin]])<br />
* REACTOS.DFF] ([[Cameron Gutman]])<br />
* Add kmtest.sys and kmtestassist.sys to bootcd (optional) ([[Cameron Gutman]])<br />
* BATTERY.INF] ([[Cameron Gutman]])<br />
* Added battery.inf to install battery devices ([[Cameron Gutman]])<br />
* Remove the incorrect stub from BatteryClassSystemControl ([[Cameron Gutman]])<br />
* TXTSETUP.SIF] ([[Cameron Gutman]])<br />
* Add PnP information for isapnp ([[Cameron Gutman]])<br />
* REACTOS.DFF] ([[Cameron Gutman]])<br />
* Remove isapnp ([[Cameron Gutman]])<br />
* BDAPLGIN, MSDVBNP, MSVIDCTL, BDASUP] ([[Johannes Anderwald]])<br />
* Disable building dvb stack untill ks has the required functionality ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Fix compilation when using USE_MMIXER_LIB ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Fix compilation when using USE_MMIXER_LIB #2 ([[Johannes Anderwald]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Fix initialization of mmixer library ([[Johannes Anderwald]])<br />
* ntstrsafe.h] ([[Timo Kreuzer]])<br />
* Fix a number of parameter types (LPSTR/LPCSTR instead of PCHAR, PCCHAR) This is not the same, PCCHAR is a char * not a const char * ([[Timo Kreuzer]])<br />
* CRT HEADERS] ([[Timo Kreuzer]])<br />
* add _mingw_mac.h from ming-w64 and include it into _mingw.h ([[Timo Kreuzer]])<br />
* Update _CRTIMP definition ([[Timo Kreuzer]])<br />
* Fix definition of _wctype ([[Timo Kreuzer]])<br />
* onexit is not _CRTIMP ([[Timo Kreuzer]])<br />
* 46537 ([[Timo Kreuzer]])<br />
* time.h] ([[Timo Kreuzer]])<br />
* Add missing asctime_s and localtime_s, don't include time_s.h anymore ([[Timo Kreuzer]])<br />
* setjmp.h] ([[Timo Kreuzer]])<br />
* Add mingw_getsp as inline function ([[Timo Kreuzer]])<br />
* reactos.dff] ([[Timo Kreuzer]])<br />
* make explorer.exe and ntvdm optional ([[Timo Kreuzer]])<br />
* dbghelp.h] / [imagehlp.h] ([[Timo Kreuzer]])<br />
* fix LOADED_IMAGE, UpdateDebugInfoFile, UpdateDebugInfoFileEx, ReBaseImage ([[Timo Kreuzer]])<br />
* WIN32K / WIN32CSR] ([[Timo Kreuzer]])<br />
* Get rid of FASTCALL specifier for static functions and functions with no parameters. ([[Timo Kreuzer]])<br />
* GDI32] ([[Timo Kreuzer]])<br />
* GetTextExtentExPointI and GetTextExtentPointI take an array of glyph indices, not characters. Pass a flag GTEF_INDICES (This is a reactos specific definition and not exactly like on Windows XP, but the real names/values are undocumented and this is the easiest way.) to NtGdiGetTextExtent/NtGdiGetTextExtentExW and handle this flag in TextIntGetTextExtentPoint to account for this. ([[Timo Kreuzer]])<br />
* Fixes bug 3481 ([[Timo Kreuzer]])<br />
* MSAFD, PSDK] ([[Cameron Gutman]])<br />
* Merge part of r45435 ([[Cameron Gutman]])<br />
* Merge r48011 from aicom-network-branch ([[Cameron Gutman]])<br />
* winnt.h] ([[Timo Kreuzer]])<br />
* Remove definition of UNW_FLAG* constants. They don't belong here. ([[Timo Kreuzer]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Apply changes from mmixer library ([[Johannes Anderwald]])<br />
* Tested in Vbox with Winamp / ReactOS mplay32 ([[Johannes Anderwald]])<br />
* Revert 44564 ([[Johannes Anderwald]])<br />
* MMIXER, WDMAUD_KERNEL] ([[Johannes Anderwald]])<br />
* Implement retrieving device path ([[Johannes Anderwald]])<br />
* KSPROXY, MSDVBNP, MSVIDCTL, BDAPLGIN] ([[Johannes Anderwald]])<br />
* Implement DllRegisterServer, DllUnregisterServer for those components ([[Johannes Anderwald]])<br />
* Add msdvbnp, msvidctl to build ([[Johannes Anderwald]])<br />
* Add msdvbnp, bdaplgin, msvidctl to bootcd ([[Johannes Anderwald]])<br />
* KSPROXY, MSDVBNP] ([[Johannes Anderwald]])<br />
* Remove remaining DebugBreak ([[Johannes Anderwald]])<br />
* Add debug traces ([[Johannes Anderwald]])<br />
* HIVESYS.INF] ([[Cameron Gutman]])<br />
* Enable kmtest ([[Cameron Gutman]])<br />
* shellapi.h] Fix build copy pasta spotted by encoded ([[Gabriel Ilardi]])<br />
* WINGDI.H] ([[Timo Kreuzer]])<br />
* Add missing GetCharWidthI, GetTextExtentExPointI, GetTextExtentPointI ([[Timo Kreuzer]])<br />
* WIN32CSR] ([[Jeffrey Morlan]])<br />
* Move code for managing console handles from csrsrv to win32csr, where the rest of the console code is. No changes in functionality intended. ([[Jeffrey Morlan]])<br />
* Unify the csrsrv->win32csr callbacks (now numbering 4) into one table to avoid excessive code duplication. ([[Jeffrey Morlan]])<br />
* tchar.h] ([[Timo Kreuzer]])<br />
* enable _tcsnlen definition ([[Timo Kreuzer]])<br />
* WIN32K, USER32] ([[Jerome Gardou]])<br />
* Get rid of ONEPARAM_ROUTINE_CREATECURICONHANDLE ([[Jerome Gardou]])<br />
* DESK.CPL] (Katayama; {{bug|5552}})<br />
* Fix client font in the advanced appearance dialog. (Katayama; {{bug|5552}})<br />
* winnt.h] ([[Timo Kreuzer]])<br />
* Fix definition of KNONVOLATILE_CONTEXT_POINTERS for amd64 ([[Timo Kreuzer]])<br />
* BDAPLGIN, KSPROXY, MSDVBNP, MSVIDCTL] ([[Johannes Anderwald]])<br />
* Register DLLs when ReactOS is installed ([[Johannes Anderwald]])<br />
* intrin_x86.h] ([[Timo Kreuzer]])<br />
* cast return value of __sync_val_compare_and_swap to make clang happy ([[Timo Kreuzer]])<br />
* add __cdecl to a number of intrinsics to make them (hopefully) compatible with crt header declarations. ([[Timo Kreuzer]])<br />
* WDMAUD.DRV] ([[Johannes Anderwald]])<br />
* Cleanup code ([[Johannes Anderwald]])<br />
* Fix a bug which made the caller assume that a wave handle has already been open. ([[Johannes Anderwald]])<br />
* define a macro which appends a postfix depending on wether USE_MMIXER_LIB has been defined ([[Johannes Anderwald]])<br />
* DESK.CPL] ([[Aleksey Bragin]]; {{bug|5620}})<br />
* Katayama Hirofumi <katayama.hirofumi.mz@gmail.com> ([[Aleksey Bragin]]; {{bug|5620}})<br />
* Renamed GLOBAL_DATA structures to DATA. ([[Aleksey Bragin]]; {{bug|5620}})<br />
* Added real GLOBAL_DATA in background.c, that manages the background color. ([[Aleksey Bragin]]; {{bug|5620}})<br />
* Resolved conflict of background colors in background.c and appearance.c. ([[Aleksey Bragin]]; {{bug|5620}})<br />
* Fixed drawing the menu in draw.c. ([[Aleksey Bragin]]; {{bug|5620}})<br />
<br />
<br />
=== 0 ===<br />
* Fix pointer arithmetics in the gdi batch code (&pTeb->GdiTebBatch.Buffer is a PULONG, but pTeb->GdiTebBatch.Offset is a byte offset) ([[Timo Kreuzer]])<br />
* To prevent this from happening again, refactor the code to use one common routine GdiAllocBatchCommand to do most of the stuff. ([[Timo Kreuzer]])<br />
* Reenable gdi batch for SelectObject ([[Timo Kreuzer]])<br />
* Fixes gdi handle leak, causes some drawing problems in Acrobat reader, but those are less critical and I'll investigate those. ([[Timo Kreuzer]])<br />
<br />
=== _EX ===<br />
* Implement CM_Set_HW_Prof. ([[Eric Kohl]])<br />
* Display CSConfigFlags. ([[Eric Kohl]])<br />
* Assign rpcss to its actual group. ([[Sylvain Petreolle]])<br />
* Fixes rpcss/spooler load order. ([[Sylvain Petreolle]])<br />
* silence wdmaud debug ([[Sylvain Petreolle]])<br />
<br />
=== ADVAPI32_LSASRV ===<br />
* Implement LookupPrivilegeValueW and LsaLookupPrivilegeValue. ([[Eric Kohl]])<br />
* Move lookup code from LookupPrivilegeValueW to LsarLookupPrivilegeValue. ([[Eric Kohl]])<br />
* Implement LookupPrivilegeNameW and LsaLookupPrivilegeName. ([[Eric Kohl]])<br />
* Move lookup code from LookupPrivilegeNameW and LsarLookupPrivilegeValue into a separate file. ([[Eric Kohl]])<br />
* Katayama Hirofumi MZ <katayama DOT hirofumi DOT mz AT gmail DOT com> ([[Matthias Kupfer]]; {{bug|5487}})<br />
* Preperation of quick preview für themes. ([[Matthias Kupfer]]; {{bug|5487}})<br />
* for details. ([[Matthias Kupfer]]; {{bug|5487}})<br />
* unix has no io.h. ([[Sylvain Petreolle]])<br />
* move its include to a _WIN32 block. ([[Sylvain Petreolle]])<br />
* Export LsaLookupPrivilegeName. ([[Eric Kohl]])<br />
* Move mockup code from advapi32 to lsasrv (LsaLookupSids --> LsarLookupSids). ([[Eric Kohl]])<br />
* Make LsaLookupSids call the server function LsarLookupSids. ([[Eric Kohl]])<br />
* LookupAccountNameW: Call LsaLookupNames instead of returning a dummy name. ([[Eric Kohl]])<br />
* Implement LsaLookupNames. Calls LsarLookupNames. ([[Eric Kohl]])<br />
* LsarLookupNames: return dummy names. ([[Eric Kohl]])<br />
* Merge r45430 from amd64-bringup : Add #pragma intrinsic for msvc intrinsics. ([[Amine Khaldi]])<br />
* Fix _InterlockedExchangeAdd16, _InterlockedCompareExchangePointer and _InterlockedExchangePointer intrinsics. ([[Amine Khaldi]])<br />
<br />
=== ARMDDK ===<br />
* Use the same KPCR structure on ARM as on x86. ([[sir_richard]])<br />
* Use the same addresses for KPCR and KUSER_SHARED_DATA on ARM as on x86. On ARM however, since there are no "segments", the KPCR is also mapped in user-mode, read-only, to have a static structure that can point to the current TEB. ([[sir_richard]])<br />
<br />
=== A|W ===<br />
* TODO: Add same checks to IShellLinkW interface and fix IShellLink::GetPath / SetPath / SetIdList / GetIdList logic. ([[Amine Khaldi]])<br />
<br />
=== BASE_SYSTEM_EXPAND ===<br />
* Update expand utility to Wine-1.1.37. Last update happened 7 years ago and since then it was translated into 20 languages. Sorry to all the translators but the preference is given to a working untranslated version rather than a non-working localized one. ([[Aleksey Bragin]]; {{bug|4637}})<br />
* Update README.WINE. ([[Aleksey Bragin]])<br />
<br />
=== BOOTCD_LIVECD ===<br />
* Add -$(ARCH) to non-x86 bootcd and livecd image names. ([[Timo Kreuzer]])<br />
<br />
=== BUGCODES ===<br />
* Added missing bugcheck code for PnP manager ([[Pierre Schweitzer]])<br />
<br />
=== CMLIB_NEWINFLIB_MKHIVE ===<br />
* Make cmlib, newinflib and mkhive use the Wine unicode lib instead of the host_wcsfuncs lib. ([[Eric Kohl]])<br />
* Only the header file include/host/wcsfuncs.h is still used to map str*W functions to wcs* functions in WIN32 builds. ([[Eric Kohl]])<br />
* Remove obsolete rtl functions. ([[Eric Kohl]])<br />
* Make mkhive use the newinflib instead of inflib. ([[Eric Kohl]])<br />
* Remove duplicate line. WRC complains about the control id already being in use. ([[Eric Kohl]])<br />
* Delete ANSI version. ([[Eric Kohl]])<br />
* Convert hivedef_i386.inf to Unicode. ([[Eric Kohl]])<br />
* Add Strings-Sections for several languages and add TEMP_DIR string. ([[Eric Kohl]])<br />
* Please translate the TEMP_DIR string as this is the sollution for bug #2482. ([[Eric Kohl]])<br />
<br />
<br />
=== CPORTLIB ===<br />
* Implement Windows' Cp (ComPort) library. See Notes in C file. Not yet used. Based on MS Whitepaper: Building Hardware and Firmware to Complement Microsoft Windows Headless Operation. (Anton)<br />
* Fix typos in the description of serial port defines. ([[Aleksey Bragin]])<br />
<br />
=== DDK_NDIS ===<br />
* Add missing ntstatus.h inclusion. ([[Amine Khaldi]])<br />
* Group some related definitions. ([[Amine Khaldi]])<br />
* Add several missing ones. ([[Amine Khaldi]])<br />
* update README.WINE ([[Jérôme Gardou]])<br />
* Group some related definitions. ([[Amine Khaldi]])<br />
* Remove some duplicated NDIS_MINIPORT_MAJOR_VERSION/NDIS_MINIPORT_MINOR_VERSION combinations. ([[Amine Khaldi]])<br />
* Add some missing NDIS_LEGACY_DRIVER guards. ([[Amine Khaldi]])<br />
* _ANONYMOUS_UNION -> __MINGW_EXTENSION ([[Amine Khaldi]])<br />
* Update NDIS_PROCESSOR_TYPE and NDIS_INTERFACE_TYPE. ([[Amine Khaldi]])<br />
* Guard NDIS_GENERIC_OBJECT with NDIS_SUPPORT_NDIS6. ([[Amine Khaldi]])<br />
* Add missing NDIS_WAN_GET_STATS, NdisAllocateGenericObject, NdisFreeGenericObject, fPACKET_WRAPPER_RESERVED and NDIS_FLAGS_* definitions. ([[Amine Khaldi]])<br />
* PNDIS_PACKET_POOL : HANDLE -> NDIS_HANDLE. ([[Amine Khaldi]])<br />
* Improve MEDIA_SPECIFIC_INFORMATION ([[Amine Khaldi]])<br />
* Some minor formatting. ([[Amine Khaldi]])<br />
<br />
=== DDK_XDK ===<br />
* Use PCI_COMMON_HEADER_LAYOUT for C, too, place it where it belongs ([[Timo Kreuzer]])<br />
* Don't auto define NO_LEGACY_DRIVERS on reactos x64 builds. ([[Timo Kreuzer]])<br />
<br />
=== EXPLORER_NEW ===<br />
* Display a message box if the explorer registry key cannot be loaded, (Katayama; {{bug|5407}})<br />
<br />
=== FBTUSB ===<br />
* Import the FreeBT USB generic bluetooth driver (abandoned) ([[Cameron Gutman]])<br />
* WMI is currently commented out because our WMI headers are lacking (particularly wmistr.h) ([[Cameron Gutman]])<br />
* Not building by default for now ([[Cameron Gutman]])<br />
* Fix include casing. ([[Sylvain Petreolle]])<br />
<br />
=== FTP_DHCP ===<br />
* remove the oldnames hack, as we now have a proper oldnames lib (included in mingw_common) ([[Timo Kreuzer]])<br />
* protect struct timezone from redefinition ([[Timo Kreuzer]])<br />
* Add bdasup to bootcd ([[Johannes Anderwald]])<br />
* Merge from amd64 branch: ([[Timo Kreuzer]])<br />
* 46478 ([[Timo Kreuzer]])<br />
<br />
=== HALMP ===<br />
* MP HAL should have HalpDefaultInterruptAffinity too. ([[sir_richard]])<br />
<br />
=== HEADERS ===<br />
* Fix type of PRTL_HEAP_PARAMETERS in ifssupp.h. Will be required soon ([[Hervé Poussineau]])<br />
* Reintegrate header-work branch. Thanks to hours of boring work on the ddk headers (Most of it done by Amine Khaldi), we have now a decent set, which is still incomplete but already relatively close to latest WDK. ([[Timo Kreuzer]])<br />
* Remove BOM from UTF-8 rc files. ([[Sylvain Petreolle]])<br />
* asm.h: fix definition of HEX macro ([[Giannis Adamopoulos]])<br />
<br />
=== HOSTS ===<br />
* Add a simple hosts file ([[Cameron Gutman]])<br />
* Not used yet ([[Cameron Gutman]])<br />
<br />
=== INCLUDE_WINE ===<br />
* Update Wine-specific headers to Wine-1.3. ([[Aleksey Bragin]])<br />
* Remove unneeded 16 bit header, and add a bit of stuff into another legacy header. ([[Aleksey Bragin]])<br />
* Indicate in config.h that there is a freetype library present. ([[Aleksey Bragin]])<br />
<br />
=== INFLIBNEW ===<br />
* Free allocated memory on error ([[Gregor Schneider]])<br />
<br />
=== INPUT_I8042PRT ===<br />
* Fix a check when queuing the mouse packet. Check that the buffer size (MouseInBuffer) is not greater or equal to MouseDataQueueSize. Fixes a NonPagedPool corruption that occurs when the mouse is moved before the desktop window is up and running. ([[Michael Martin]])<br />
<br />
=== INTRIN_X86 ===<br />
* define _alloca() to __builtin_alloca() on amd64 ([[Timo Kreuzer]])<br />
* 46388 ([[Timo Kreuzer]])<br />
* Add __stosq, __movsq, _bittest64 ([[Timo Kreuzer]])<br />
<br />
=== IOEVENT ===<br />
* Added a library containing GUIDs for PnP notifications ([[Pierre Schweitzer]])<br />
<br />
=== KERNEL32_CSRSS ===<br />
* Register new Win32 threads with CSRSS. Add a bunch of lookup, creation, allocation, hashing and CSR thread management routines from the unused CSRSRV in trunk. ([[sir_richard]])<br />
<br />
=== LIB_3RDPARTY ===<br />
* Disable unused value warning here, too ([[Timo Kreuzer]])<br />
<br />
=== MKHIVE_USETUP ===<br />
* Fix buffer size calculation for the parser. (me)<br />
* Do not try to execute an empty registry instruction (me)<br />
* Patches by Roel Messiant. (me)<br />
* Stop the parser at the first NULL character. (me)<br />
* Hardcode GeckoCabDir to C:\ReactOS. ([[Sylvain Petreolle]])<br />
* the mshtml installer now wants a REG_SZ string for it, which excludes using %SystemRoot%. ([[Sylvain Petreolle]])<br />
* Fixes bootcdregtest. ([[Sylvain Petreolle]])<br />
<br />
=== NETEVENT ===<br />
* Add new netevent.dll. It is a resource dll that will be used by the event log viewer. ([[Eric Kohl]])<br />
<br />
=== NEWINFLIB ===<br />
* Add a UNICODE-aware version of the inflib library. ([[Eric Kohl]])<br />
* It is not used by other components yet but usetup and mkhive will use it in the future. ([[Eric Kohl]])<br />
* Use LANGID instead of LCID. ([[Eric Kohl]])<br />
* Move LANGID and language macros into the host typedefs header. ([[Eric Kohl]])<br />
* Remove dead code. ([[Eric Kohl]])<br />
* Change Unicode string functions from wcs* to str*W because glibc (Linux build) provides the wcs* functions but they use a wchar_t size of 32 bits instead of the required 16 bits. ([[Eric Kohl]])<br />
* Add a str*W to wcs* wrapper (infrosrtl.c) in order to use the wcs* function for the WIN32 build. ([[Eric Kohl]])<br />
* Add required str*W functions to the host library. ([[Eric Kohl]])<br />
* Fix an off-by-one bug, which lead to the crash of mkhive after parsing ~3 files on Windows or ~5 files on Linux ([[Gregor Schneider]]; {{bug|5338}})<br />
* PINT -> INT* ([[Timo Kreuzer]])<br />
<br />
=== NTDDK ===<br />
* Protect IoMapTransfer from incompatible redefinition. (AmineKhaldi)<br />
<br />
=== NTDKK ===<br />
* Don't use PEB::FastPeb(Un)LockRoutine, these members are deprecated since Windows 2003, use RtlEnter/LeaveCriticalSection instead. ([[Timo Kreuzer]])<br />
* 44523 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
=== NTIFS ===<br />
* Use a preprocessor definition for FSRTL_COMMON_FCB_HEADER instead of using an ms extension, that wouldn't work for ISO C ([[Timo Kreuzer]])<br />
<br />
=== NTOS ===<br />
* Implement GUI thread promotion during the first GUI system call in C. This is tricky due to EBP, and actually requires some tiny inline ASM magic to make it work right. ([[sir_richard]])<br />
* Implement SYSENTER system calls in C as well. ([[sir_richard]])<br />
* Make KiSystemStartup the real C entrypoint of the kernel, and move the "Am I being booted by FreeLDR" logic inside it -- it will then call KiRosPrepareForSystemStartup as earlier. ([[sir_richard]])<br />
* Move the Double Fault and Boot Stack declaration in C code, with the proper alignment attribute. ([[sir_richard]])<br />
* Although the concern that KiSystemStartup cannot be 100% C since it modifies ESP is real (Thomas' original fix of Alex's code), we don't need that much of it in assembly. Instead, write a simple trampoline (KiSwitchToBootStack) inline which switches stacks and jumps to a second-stage C function. ([[sir_richard]])<br />
* Completely remove boot.S as it isn't needed anymore, ReactOS startup is back to being (nearly) 100% C. ([[sir_richard]])<br />
* Workaround for GCC 4.4.x bug reported by Dmitry. ([[sir_richard]])<br />
* Add dclevel flags. ([[James Tabor]])<br />
* Implement KiSwapProcess in C. ([[sir_richard]])<br />
* Implement KiIsNpxPresent and KiIsNpxErrataPresent in C. It's much clearer what these are doing now. ([[sir_richard]])<br />
* Implement KiFlushNPXState and fix some bugs that were present in the ASM version, such as a wrong NPX state check. ([[sir_richard]])<br />
* Implement working intrinsics for fxrstor, fxsave, fnsave and enable them for flushing. We'll update the FPU trap code to use these later. ([[sir_richard]])<br />
* KiDispatchInterrupt crushes EBX, so maybe it should preserve it first? This only worked because KiDispatchInterrupt was only called by ASM code that already was magically aware of this fact, and preserved (or didn't use) EBX before making the call. Yuck! ([[sir_richard]])<br />
* Export the C KiEoiHelper alongside the ASM Ke386EoiHelper. Yes, this is a "ReactOS-only" export, but really this interface is reserved for the HAL, and as long as we keep Ke386EoiHelper, the NT HAL should still work. ([[sir_richard]])<br />
* Need to revisit/finalize this decision and whether or not we can emulate the C-interface with Ke386EoiHelper somehow (reliably). ([[sir_richard]])<br />
* Remove duplicate definitions (now in time.c). ([[Dmitry Gorbachev]])<br />
* Do not attempt querying the Registry Primary Handle for the Backing Hive File Size in the case where there is no actual Primary! There was no error checking so nobody noticed this happens -- it also probably resets Cluster to 0 (instead of 1), which can cause corruption in some cases. ([[sir_richard]])<br />
* Implement 4 lines of support code needed to handle interrupts during V8086 mode, which were lacking since we weren't hitting this case yet. ([[sir_richard]])<br />
* Note that now the KeUpdateSystemTime interface is not "compatible" with Windows anymore. This does not matter, since the only possible caller of KeUpdateSystemTime is a very specific HAL routine that needs a very specific stack layout to actually work, so the chance of anyone calling this API is absolutely zero (no, not even some experimental driver. It's absolutely impossible). ([[sir_richard]])<br />
* Turn off debug print outs. ([[James Tabor]])<br />
* Output PCH, not dependencies. ([[Dmitry Gorbachev]])<br />
* Rework the trap macros again. This time we needed some added complexity because of the need for runtime patching at boot. We got away with it nicely and basically implement a simple "if" in ASM, which gives us a deterministic set of instructions (vs the compiler). We then patch if if needed (see next bullet). ([[sir_richard]])<br />
* Support systems without SYSENTER. Nothing was actually disabling the SYSEXIT mechanism recently enabled. Now IRET is always used unless a SYSENTER machine is discovered, in which case the jmp to the IRET code is patched with a jmp to SYSEXIT code. ([[sir_richard]])<br />
* Enable V8086 Fast-V86 Trap mode for Trap 6 (Invalid Opcode). Because we are now taking zero traps during V8086 mode, we can't do the "BOP lookahead", so the only trap we do get is when we hit the BOP/invalid opcode itself. ([[sir_richard]])<br />
* Multiple fixes to V8086 opcode emulation code that I noticed while looking through the source. Also multiple fixes to VDM code. ([[sir_richard]])<br />
* This change will only impact real hardware and VMWare, since QEMU does not support VME. On VMWare, performance increased up to 400% during bootup (80 million cycles instead of 300 million, in one test). ([[sir_richard]])<br />
* Merge aicom-network-branch (still without the NDIS stuff) ([[Cameron Gutman]])<br />
* Fixes some nasty bugs and hacks in our TCP implementation ([[Cameron Gutman]])<br />
* Remove checks for VDM alert during GPF. This is a Windows-specific hack for VDM, which isn't implemented. ([[sir_richard]])<br />
* Fix L1/L2 cache detection and write out the size and associativity. Now that KeGetCurrentProcessorNumber doesn't think your L2 cache is the number of CPUs, this can be safely done. ([[sir_richard]])<br />
* The last big step. Now that the HAL is in C, we can handle interrupts in C. Do so using the proposed model that was #if'ed out, but with some improvements. ([[sir_richard]])<br />
* Fix recursion when sweeping the DCE list. ([[James Tabor]])<br />
* Another try at the chained interrupt dispatch problem... ([[sir_richard]])<br />
* Return correct IRQ 0 vector instead of IRQL, when the timer interrupt ends. ([[sir_richard]])<br />
* Fix KiEnterInterruptFrame. In the case of a V86 trap, the segments were overriden because this wasn't a kernel trap (missing if/elseif). ([[sir_richard]])<br />
* Simplify KiTrapStub and write registers in order. ([[sir_richard]])<br />
* Always set correct segments; the if/else branch should decide which segments to save, not whether or not to set the sane ones. Fixes boot on VirtualBox and real hardware. ([[sir_richard]])<br />
* Try to fix KiEnterInterrupt once and for all. Only set segments for V8086 or user traps. ([[sir_richard]])<br />
* Rework the way traps with possibly dirty DS/ES segments are handled. The FAST V86 hack is gone. Intead, created a "safe" version of IsTrapV86 and IsTrapUser that does an SS segment dereference (known good). The condition is then based on this, and the segments are saved and loaded safely. Note that for GCC 4.5 the ASM can be improved to directly branch or not to a label, instead of returning a boolean that is then further compared before branching. ([[sir_richard]])<br />
* This will fix certain exceptions that were seen in KeUpdateSystemTime, and might fix the sneaking HalpTrap0D while not in V86 mode (no promises). ([[sir_richard]])<br />
* Yet another fix for KiEnterInterruptTrap: Set correct DS/ES before touching the TrapFrame. ([[sir_richard]])<br />
* Make this operation an inline so any possible future code will not make this mistake twice. ([[sir_richard]])<br />
* Thanks to Physicus for the bug report. ([[sir_richard]])<br />
* Combine all exit trap stubs into a single function with flags (same thing we did for the entry stub). Now there are only 15 lines of ASM instead of 60. ([[sir_richard]])<br />
* Start redefining ARMv6 paging structures. ([[sir_richard]])<br />
* Add a branch-to-self to start testing kernel code. ([[sir_richard]])<br />
* Forgot to setup an IRQ stack, the kernel was working by magic since in previous incarnations of the ARM port, 0xFFFFyyyy was mapped, so a stack of 0 worked (going downwards). ([[sir_richard]])<br />
* Now FreeLDR just calls the KiSystemStartup routine correctly, without any "magic", so fix the code to use a1 instead of a2 (argument 1/2). ([[sir_richard]])<br />
* Get rid of fixed TLB entries on ARM, I don't think that idea makes sense (unlike IA64 or MIPS where they are lot more flexible), since they only allow 1MB sections, not pages. ([[sir_richard]])<br />
* Sync up KiDispatchException with x86 code (and going back to C comment formatting). ([[sir_richard]])<br />
* ARM DDK]: Use the closest possible approximation to the x86 KPCR/KPRCB (in fact, the public KPCR is identical, just the KIPCR is different, internally), instead of a mashup of PPC and MIPS structures. ([[sir_richard]])<br />
* Update code to use new KPCR structure. ([[sir_richard]])<br />
* Make all trap code currently spin forever, because it has not been reviewed yet. ([[sir_richard]])<br />
* Make system startup match x86 code as closely as possible, instead of mixing MIPS/PPC code. Only rip out parts that are obviously x86-specific. Also fix code to use new KPCR definitions. ([[sir_richard]])<br />
* Implement a DbgPrintEarly function that directly uses KDCOM to print to the serial console, instead of going through the Debug Service Interrupt. ([[sir_richard]])<br />
* All calls to DbgPrint will go to DbgPrintEarly for now. ([[sir_richard]])<br />
* More header fixes to match new definitions. ([[sir_richard]])<br />
* Tabula rasa (clean slate) on the old-MM page routines for ARM. Get rid of all of them for now. ([[sir_richard]])<br />
* Implement MmInitGlobalKernelPageDirectory as the first ARM page function in the new file. ([[sir_richard]])<br />
* That's it for the kernel. ([[sir_richard]])<br />
* Setup the template PTE and PDE used on ARM. ([[sir_richard]])<br />
* Implement device location information override support and add the location override value for PS/2 mice. PS/2 keyboards be added next. ([[Eric Kohl]])<br />
* Please translate the location override string. ([[Eric Kohl]])<br />
* Move HYPER_SPACE to 0xC0500000 since it must be on its own PDE. We need to revisit some FreeLDR Mm decisions later. ([[sir_richard]])<br />
* Move certain arch-specific definitions from mm.h to the arch-specific mm.h ([[sir_richard]])<br />
<br />
* Allow registry configuration of large kernel stack size, with proper checks. ([[sir_richard]])<br />
* Actually use calculated kernel stack size value. ([[sir_richard]])<br />
* Found a leak fix patch from years ago ([[Ged Murphy]])<br />
* Update log2lines to ver. 2.1. Jan Roeloffzen, bug #4342. ([[Dmitry Gorbachev]])<br />
* MxGetNextPage is not platform-specific, so share it. ([[sir_richard]])<br />
* Factor out computations of NP sizes and limits into MiComputeNonPagedPoolVa. ([[sir_richard]])<br />
* Fix NP size/limit calculations to use the amount of FREE RAM, not the amount of INSTALLED RAM. ([[sir_richard]])<br />
* Use Windows 2003's algorithm for NP size on machines with more than 512MB of FREE RAM. ([[sir_richard]])<br />
* Partly handle the case of machines with NP over 128MB. ([[sir_richard]])<br />
* Factor out SecondaryColor computations into MiComputeColorInformation. ([[sir_richard]])<br />
* Fix SecondaryColor computations. If the KPCR has no deta, use the default colors of 8, not just 1. Also handle cases where there is more L2 cache than we'd like -- set the secondary colors to a maximum of 1024 in that case. Finally, if the colors are not a power of two, or there are not enough (due to a registry setting), use the default of 8. ([[sir_richard]])<br />
* Allocate and initialize color tables based on MmSecondaryColors (MiInitializeColorTables). ([[sir_richard]])<br />
* These come after the PFN database, so modify the MmPfnAllocation to account for them. ([[sir_richard]])<br />
* Add device location information override PS/2 keyboards. ([[Eric Kohl]])<br />
* Please translate the location override string. ([[Eric Kohl]])<br />
* partially revert changes from 45560 ([[Christoph von Wittich]])<br />
* Make KiFastCallEntryHandler and KiSystemServiceHandler FASTCALL and pass the systemcall number in TrapFrame->Eax ([[Timo Kreuzer]])<br />
<br />
* Refactor the mapping of the PTEs for the PFN database into MiMapPfnDatabase and move the code to portable directory. ([[sir_richard]])<br />
* Move and refactor some other definitions, and make some numbers more portable by defining arch-specific subvalues. ([[sir_richard]])<br />
<br />
* Fix floppy controller detection ([[Cameron Gutman]]; {{bug|4391}})<br />
* Simplify waiting in Get_Byte and Send_Byte ([[Cameron Gutman]]; {{bug|4391}})<br />
* for details ([[Cameron Gutman]]; {{bug|4391}})<br />
* Fix a stupid bug: x86 has 1024 PDEs, and ARM has 4096 PDEs, not the other way around. ([[sir_richard]])<br />
<br />
* Fix broken MI_PFNENTRY_TO_PFN macro. ([[sir_richard]])<br />
* Remove bogus assertion. ([[sir_richard]])<br />
* Get rid of page locking mechanism for MDL since I can't see a reason this would make sense, since these pages won't be scheduled for page out anyway, and that is the only code that looked at this value. ([[sir_richard]])<br />
* Push vector as error code on the stack in KiUnexpectedInterrupt* instead of putting it into eax, because we must not clobber it. Spotted by jcatena. ([[Timo Kreuzer]])<br />
* Allocate the trap frame on the stack by decreasing esp before modifying any members. ([[Timo Kreuzer]])<br />
* While doing it after is a tiny optimization (no need to wait for esp to be ready) and would work with all real traps (which clear cli), it doesn't work with Zw calls that directly call KiSystemService with interrupts enabled. This caused random trap frame corruption when an interrupt fired after members of the trap frame have been set but before esp was adjusted. Should hopefully fix most random failures on real hardware and qemu. ([[Timo Kreuzer]])<br />
* Fix incorrect sector size detection which caused seeking to fail when booting from a floppy ([[Cameron Gutman]])<br />
* FreeLoader can load from a floppy disk now ([[Cameron Gutman]])<br />
* Remove unused code. ([[sir_richard]])<br />
* Fix an off-by-one-error which incorrectly causes GUI promotion to fail if the first GUI call is "0", since the limit on the GUI descriptor table will also be "0". We should check if the limit is equal to or lower, not just if it's lower. ([[sir_richard]])<br />
* Make EventLog and Spooler services report their status to the SCM. ([[Eric Kohl]])<br />
* Manage the PFN lists using the correct Flink/Blink semantics of the MMPFN structure, instead of typecasting a LIST_ENTRY on top of Flink and PteAddress. This allows PteAddress to be used now, and minimizes the number of differences between MMPFN and the ReactOS PHYSICAL_PAGE. ([[sir_richard]])<br />
* Add MiInsertPageInFreeList to build the colored lists (not yet used) in the ARM3 PFN database. ([[sir_richard]])<br />
* Remove SwapEntry parameter from MmAllocPage since it was always zero. ([[sir_richard]])<br />
* Store SwapEntry as WsIndex. We can do this now since Flink is only used when the page is in a list (meaning it's not active, ie. free or zero), and non-active pages don't have a swap entry. ([[sir_richard]])<br />
* Make MM init read MmProductType to determine what SKU of ReactOS this is, instead of assuming Server. If you want to go back to the old behavior, you need to change "WinNT" to "ServerNT" in the hivesys under Product Type. ([[sir_richard]])<br />
* Initialize thresholds for low and high memory (in pages), low and high paged pool memory, and low and high nonpaged pool memory. These are described in the source. ([[sir_richard]])<br />
* Initialize events for each of those thresholds, and populate the \KernelObject\xxxCondition events that are documented in MSDN for driver and app developers. ([[sir_richard]])<br />
* Define some internal thresholds to use later, representing the minimum number of free pages under we go berserk, and the minimum number of free pages that we consider "plenty". ([[sir_richard]])<br />
* Rename MiRemoveFromList to MiUnlinkFreeOrZeroedPage (Windows name). Make the function handle MmAvailablePages decrement, instead of having the caller do it. ([[sir_richard]])<br />
* Remove run-time initialization of the PFN lists, just initialize them statically (also fixes the fact we forgot to initialize their names). ([[sir_richard]])<br />
* Read ProductType from registry into MmProductType instead of dummy value. Remove duplicate "Mirroring" variable read. ([[sir_richard]])<br />
* Don't prepend fastcall forward's target with @. Fixes binding issues in videoprt, thanks to Olaf Siejka for identifying the issue. ([[Aleksey Bragin]])<br />
* Partially revert patches 45626 and 45633. ([[Eric Kohl]])<br />
* Several services do not report their status to the service manager properly. Therefore we must not use any code that relies on service status information as part of the setup and boot processes as long as these issues have not been fixed. The service manager still needs to provide fake information about the service status. ([[Eric Kohl]])<br />
* Use system PTEs for drivers, both boot drivers and system-loaded drivers. This removes the last user of the deprecated MmAllocateSection internal API. Another side-effect is that drivers will now have much higher load addresses (in the 0xF0000000 and higher range), as you would expect on Windows, plus increasing coverage and usage of system PTEs (which can still be optimized). ([[sir_richard]])<br />
* Do not "copy" boot drivers from one set of pages to another set of pages. Instead, use system PTEs to map the boot drivers to a new VA, and set the PFNs to the original PFNs that the loader had obtained (and don't free that memory). This avoids some overhead. ([[sir_richard]])<br />
* Now the only user of MmMapMemoryArea is the caching code, which I won't touch. ([[sir_richard]])<br />
* Insert pages into zero list with specific MiInsertZeroListAtBack function instead of generic MiInsertInTailList. Allows us to handle insertion into colored page lists (not yet used) correctly, as well as update the page location to ZeroedPageList automatically (so don't let the callers do this anymore). Also handle memory threshold accounting. ([[sir_richard]])<br />
* Temporarily disable last part of MiInsertZeroListAtBack which seems to cause issues in the 1st stage. ([[Aleksey Bragin]])<br />
* Enable high/low memory events notifications. ([[Aleksey Bragin]])<br />
* Reenable critical debug messages. ([[Eric Kohl]])<br />
* Rewrite trap handler exit stubs in pure assembly, remove gcc inline assembly. ([[Timo Kreuzer]])<br />
* Replace jmp to C handler with KiCallHandler macro, that expands to jmp on release builds for speed and call on debug builds to fix backtraces. ([[Timo Kreuzer]])<br />
* Unroll the Syscall handler loop and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack to prevent the compiler from optimizing it away / moving it out of the loop. ([[Timo Kreuzer]])<br />
* Bugcheck in KiTrap0DHandler, if the fault couldn't be resolved. ([[Timo Kreuzer]])<br />
* Remove handling of V86 traps and edited traps in KiServiceExit, ASSERT to make sure they never happen. ([[Timo Kreuzer]])<br />
* Replace code patching of the syscall exit handler with a function pointer. ([[Timo Kreuzer]])<br />
* Use __debugbreak() instead of while(TRUE) in KiExitTrapDebugChecks ([[Timo Kreuzer]])<br />
* Do the "funny message" (not really funny, my apologies) shenanigans after the system components have shutdown, and reset the display and call the HAL at least at DPC level (should probably do it at HIGH IRQL, really). This way, we can avoid the context switch to another process while the HAL is executing the BIOS reset display call (done solely for the benefit of the "funny messages", as the video card driver usually resets the display) and thus avoid the "invalid V86 opcode" message sometimes appearing on shutdown. Did you know the "funny messages" take up more storage space than an average embedded micro-controller OS? ([[sir_richard]])<br />
* Add missing InbvIndicateProgress routine to update the progress bar while drivers are loading. Make boot and system driver initialization call it for each new driver. This updates the progress bar in the 25-75% range which was defined prior to IoInitSystem. ([[sir_richard]])<br />
* Fix InbvUpdateProgressBar code to correctly handle the floor and ceiling. ([[sir_richard]])<br />
* Remove shutdown "funny messages", do correct shutdown (should fix the ACPI shutdown issues) procedure. Display the shutdown screen on systems without ACPI (just like Windows does). ([[sir_richard]])<br />
* Add a resource header with IDB_ definitions for all the embedded bitmaps, instead of using magic numbers and guessing which is which. ([[sir_richard]])<br />
* Fix the boot logo initialization code as it was all wrong. 5 is the logo to be used during shutdown, for example, not the full logo background (which is supposed to be in 1, with a special palette that's faded in). Also handle server vs workstation scenarios. ([[sir_richard]])<br />
* Booting in the new WinNT mode now correctly displays the blue background screen when in debug (/SOS) mode, and the header/footer also has the correct color, as does the separator band. ([[sir_richard]])<br />
* Remove logo files that are simply not needed for ReactOS (Compute Cluster Edition, Tablet PC, etc...) ([[sir_richard]])<br />
* Fix logo files (mostly) to have correct palettes. Note that 1.bmp is still quite different from Windows (no fade). ([[sir_richard]])<br />
* Implement CmSetLazyFlushState to disable lazy writing in the Cm. ([[sir_richard]])<br />
* Implement ExSwapInWorkerThreads to in-swap any worker threads when needed. ([[sir_richard]])<br />
* Add HAL stubs for HalEndOfBoot and HalSetWakeEnable since most HALs set this to NULL. ([[sir_richard]])<br />
* Have I/O Manager Volume Device Objects register with the Power Manager so that they can receive dope. ([[sir_richard]])<br />
* Reimplement NtShutdownSystem. ([[sir_richard]])<br />
* Implement NtSetSystemPowerState for the shutdown/reboot cases. ([[sir_richard]])<br />
* Use the dope from the volume device objects to flush all writeable (non-floppy) devices. Pending hard-disk changes are now flushed to disks before shutdown. ([[sir_richard]])<br />
* Flush \\REGISTRY during shutdown. This flushes all pending changes. ([[sir_richard]])<br />
* Call into Cc to flush lazy writer during shutdown. ([[sir_richard]])<br />
* Stop killing processes on shutdown. The kernel should not be doing this. ([[sir_richard]])<br />
* Don't only shutdown disk file systems, but also cdrom and tape. ([[sir_richard]])<br />
* Don't only notify drivers of first-chance shutdown -- also parse the last-change shutdown list. ([[sir_richard]])<br />
* Reference drivers registering for shutdown notifications so that they remain loaded for them to get the notification at shutdown. ([[sir_richard]])<br />
* Notify drivers that have registered/opened the Power State callback. ([[sir_richard]])<br />
* A lot of the Po* power state code is highly simplified, but provides a good roadmap to anyone interested in this functionality long-term. ([[sir_richard]])<br />
* While attempting to ressucitate the user-mode shutdown code in CSRSS (disabled since 2006), it seemed clear that one of the main steps is to obtain the caller's LUID in order to kill the right processes. This LUID is obtained from the current thread's token, and we know it's the callers since we're supposed to impersonate the caller. Unfortunately, impersonation failed, making the whole process fail. ([[sir_richard]])<br />
* Impersonation failed because NtImpersonateThread was actually inverting the THREAD_IMPERSONATE rights, asking the client thread for the server's permissions, and vice versa. Fixing this resulted in yet another failure. ([[sir_richard]])<br />
* Analysis of this failure showed that even opening the server (ie: current) thread for THREAD_DIRECT_IMPERSONATION failed, which is unusual since the current thread should have access to all its rights. This is determined in PspCreateThread when the ETHREAD->GrantedAccess field is set. ([[sir_richard]])<br />
* Continuing onto this path, tracing revealed that GrantedAccess was merely 0x1607F and not 0x1F3FF as expected, meaning that not all rights were given, including the impersonate right (0x200), explaining the failure, but not the deeper reason behind it. ([[sir_richard]])<br />
* Attempting to identify which code path set this GrantedAccess, the SepAccessCheck routine came to light. A bug there caused MAXIMUM_ALLOWED accesses to fail in certain scenarios, such as when the object had no security descriptor, because MAXIMUM_ALLOWED would be granted as an absolute value, when instead of it is a flag that should grant GENERIC_ALL. Fixing that bug, the failure continued. ([[sir_richard]])<br />
* Further analysis identified that the Administrators SID was being found with GENERIC_READ + WRITE + EXECUTE access, and no SID was found for GENERIC_ALL access. This happened when searching the system token's default DACL, which is assigned to the kernel (but for kernel-mode callers, this check was skipped), smss, winlogon, etc. ([[sir_richard]])<br />
* The code for creating this system token was heavily hacked, so the function to create the system token, as well as NtCreateToken were refactored to use a common piece of token-creating code. Furthermode, the system token was correctly created with Local System as the user, and Administrators as one of the groups. Finally, SeDefaultDacl was used (already setup properly) instead of a badly configured Default DACL. The new shared code also correctly sets the SE_GROUP_ENABLED flag on all SE_GROUP_MANDATORY groups, and scans tokens to set the TOKEN_HAS_ADMIN_GROUP and TOKEN_HAS_TRAVERSE_PRIVILEGE flags which were not previously set. ([[sir_richard]])<br />
* With the correct system token and default DACL, the Local System SID was now found, but the failure continued. This was revealed to be due to an even deeper rooted problem, as the SepIsSidInToken routine checked for SE_GROUP_ENABLED before listing a SID as "present". Although this is correct for actual groups, the User SID will never have the SE_GROUP_ENABLED flag as it is not a group. This caused any granted access ACE belonging to a user (instead of a group) to be ignored, causing either access check failures, or limited rights returned (in the MAXIMUM_ALLOWED case). ([[sir_richard]])<br />
* Upon fixing this bug, the NtImpersonateThread call finally returned success, since the rights were now correct. Promptly upon calling NtOpenThreadToken to query the LUID however, the system ASSERTED with FALSE. ([[sir_richard]])<br />
* The code at fault was a line in NtOpenThreadTokenEx which forcefully ASSERTed if the impersonation code path was taken, presumably because this was never tested, and ReactOS would actually always fail impersonation attempts due to the bugs fixed above. This routine was thus quickly reworked to fix some mistakes (such as forgetting to actually impersonate the client, incorrect referencing/dereferencing of thread/tokens, and assumptions about DACL creation success). ([[sir_richard]])<br />
* Having fixed the NtOpenThreadTokenEx routine, the LUID query now went through for the impersonated token, but soon causing a user-mode crash, due to an incorrect parameter reference in the CsrGetProcessLuid function in the csrsrv code by Alex (which I copy/pasted to reduce code duplication). ([[sir_richard]])<br />
* Fixing this final bug finally allowed the correct LUID to be queried and I was able to continue development of not-yet-commited user-mode shutdown code. ([[sir_richard]])<br />
* Convert battery.inf to UTF-16 ([[Sylvain Petreolle]])<br />
* Add battery.inf and fdc.inf to syssetup process. ([[Sylvain Petreolle]])<br />
* Floppy disk controllers and batteries now appear correctly in device manager. ([[Sylvain Petreolle]])<br />
* Dedicated to aicom ;) ([[Sylvain Petreolle]])<br />
* No good deed goes unpunished. Continuing the novel/saga from a couple of days ago, it seems that now that impersonation works, various code paths are being tickled into existence. For example, it would seem parts of the system now attempt setting primary tokens. This would cause an assertion, since PspAssignPrimaryToken incorrectly dereferenced the token (leading to a double-dereference) due to an off-by-! mistake. ([[sir_richard]])<br />
* List still-running processes at kernel shutdown. Useful for debugging shutdown code later. ([[sir_richard]])<br />
* Quit building a useless IO_RESOURCE_REQUIREMENTS_LIST (and leaking memory) in response to IRP_MN_QUERY_RESOURCES ([[Cameron Gutman]])<br />
* Actually store the IO_RESOURCE_REQUIREMENTS_LIST in Irp->IoStatus.Information in response to IRP_MN_QUERY_RESOURCE_REQUIREMENTS so the PnP manager can use it (and fixes another memory leak) ([[Cameron Gutman]])<br />
* Rewrite Trap exits stubs in raw assembly (2nd try) and remove inline assembly. Bugcheck in KiTrap0DHandler, when the fault was not handled. Replace code patching for sysexit vs iret with a function pointer. Slightly refactor KiSystemServiceHandler/KiFastCallEntryHanlder. Unroll the loop in the systemcall handler and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack after converting to gui thread to prevent the compiler from optimizing it away (or moving it out of the loop). Add an asm macro KiCallHandler, which expands to call on debug builds to make sure backtraces work as expected and to jmp on release builds for improved performance. Modify KiExitV86Trap to always exit and add DECLSPEC_NORETURN. Use __debugbreak() instead of while(TRUE) on errors in KiExitTrapDebugChecks. ([[Timo Kreuzer]])<br />
* The old code hat 2 issues: one was restoring segments in KiExitV86Trap when they shouldn't be, leading to a bugcheck. And the other was a long hang (5 mintes or more) in 3rd stage on qemu when selecting RosDbg, caused by the KiFastCallExitHandler function pointer being initialized with a pointer to the iret handler. Initializing it in code solved the issue. To figure out why is left as an exercise to the reader. ([[Timo Kreuzer]])<br />
* I forgot to set the exit function for systems without sysenter/sysexit support. Should fix sysreg. ([[Timo Kreuzer]])<br />
* Add DPRINTs to tell if SYSENTER is detected. Requested by Christoph for testing the test machine. ([[Timo Kreuzer]])<br />
* NtOpenThreadTokenEx: Initialize NewToken with NULL, so it doesn't get wrongly dereferenced. Fixes advapi32:security winetest crash. ([[Timo Kreuzer]])<br />
* Update pspec file with amd64 exports, use -arch= where appropriate ([[Timo Kreuzer]])<br />
* Add internal amd64 headers. ([[Timo Kreuzer]])<br />
* Add support for reference strings in IoOpenDeviceInterfaceRegistryKey ([[Johannes Anderwald]])<br />
* Make sure SymbolicLink is null terminated ([[Johannes Anderwald]])<br />
* Rewrite boot driver loading code (not the driver code itself) to use the boot loader's BootDriverListHead, instead of parsing InOrderListHead and cherry-picking ".sys" files. This is the last incompatibility with Windows. ([[sir_richard]])<br />
* Use group prioritiy, tag numbers, and tag priority to determine the correct loading order for boot drivers, instead of just parsing the linked list. Dependencies work now! ([[sir_richard]])<br />
* Load any DLLs that are driver-dependent with MmCallDllInitialize. Previously, these .DLLS were ignored and drivers could lose dependencies. ([[sir_richard]])<br />
* Fix MP install. ([[Sylvain Petreolle]])<br />
* Simplifying MakeInfoDC. ([[James Tabor]])<br />
* Implement Configuration Manager routines for building a driver list, sorting it, detecting circular dependencies and ordering, combining groups, tags, group orders and tag orders, etc. Replaces the "drvrlist" I/O interface currently in ReactOS. ([[sir_richard]])<br />
* Use the new Cm interface in IopInitializeSystemDrivers to parse the ordered list of system drivers to load. Make it use ZwLoadDriver directly instead of having a hacked IopLoadDriver function. ([[sir_richard]])<br />
* Drivers should not show up loading n times a reboot now (some drivers seemed to do this in the past when they failed to load). ([[sir_richard]])<br />
* The system driver code could be further improved by checknig if the driver has already been loaded, or attempted and failed to load, but it is already much better now than in the past. ([[sir_richard]])<br />
* Device interface strings are null terminated ([[Johannes Anderwald]])<br />
* Some PnP ABI refactoring for future patches/work. ([[sir_richard]])<br />
* Switch to PnP Add Device routine, currently mostly a copy of the original ReactOS code. However, PnP now tries to open all the required registry keys before attempting to start the device. Failures are reported and load cancelled. More work TBD. ([[sir_richard]])<br />
* Rename IopBusTypeGuidList to PnpBusTypeGuidList to match Windows 2003 PnP Namespace instead of Windows 2000. ([[sir_richard]])<br />
* Use PnpBusTypeGuidList->Lock instead of PnpBusTypeGuidListLock. ([[sir_richard]])<br />
* Implement PipAllocateDeviceNode for setting up device nodes and linking them to a PDO. Only used for Root PnP now. Main ABI change is that allocate in ReactOS right now includes "insert". These will be seperate in the new PnP ABI. ([[sir_richard]])<br />
* Implement IopInitializePnpServices to replace PnpInit. Mostly the same work is done, but using new PnP ABI. ([[sir_richard]])<br />
* Implement new helper: IopCreateRegistryKeyEx. ([[sir_richard]])<br />
* Try moving towards new ABI. Lots of debug spam will be generated by various device node flags in incorrect states, and hacks that had to be made to maintain current functionality. Also document things being done at the wrong place. One small step... ([[sir_richard]])<br />
* 1MB is not 1000 * 1KB... ([[sir_richard]])<br />
* Read almost all the Memory Management variables into the system configuration vector. These includes pool limits, percentages, debugging flags, behavioral changes, and others. ([[sir_richard]])<br />
* Minimal stubbed support for some large page functionality in case it gets implemented later and these things would've been ignored. One critical change is that now the MmProcessList is initialized, and the system process is added to it. Other processes should be added later. ([[sir_richard]])<br />
* Add stubbed support for parsing the registry list of drivers that should have large pages enabled. ([[sir_richard]])<br />
* Initialize the loaded module list before working set work. ([[sir_richard]])<br />
* Start doing some minor MmResidentAvailablePages accounting during bootup. ([[sir_richard]])<br />
* Start doing the math required for computing the appropriate MmSystemCacheWsMinimum on the booting system (based on RAM). ([[sir_richard]])<br />
* Now that we use the HAL heap, add the code to scan it for I/O mappings. These are dangerous because we need to sync up caching attributes (not yet used in ReactOS, so not a problem for now). ([[sir_richard]])<br />
* Add more header definitions, and helper definitions such as PDE_MAPPED_VA instead of doing the math by hand. ([[sir_richard]])<br />
* Move MmPageEntireDriver and MmResetDriverPaging to sysldr.c since drvmgmt.c is more for Driver Verifier-style functionality. ([[sir_richard]])<br />
* Recommit rest of ntifs.h and wdm.h from header merge revert ([[Timo Kreuzer]])<br />
* Enable MmPageEntireDriver by implementing MiSetPagingOfDriver. ([[sir_richard]])<br />
* Call MiEnablePagingOfDriver from MmLoadSystemImage and implement it. All the work is done other than actually enabling paging, which requires system working set support. ([[sir_richard]])<br />
* Implement MiWriteProtectSystemImage and MiComputeDriverProtection. All the work is done other than actually setting the bits on the pages, since I wanted to avoid too many changes. ([[sir_richard]])<br />
* MmCheckSystemImage returns STATUS_INVALID_IMAGE_PROTECT, not STATUS_INVALID_IMAGE_FORMAT, so the branch in MmLoadSystemImage needs to check for the correct status code. ([[sir_richard]])<br />
* Support FLG_SHOW_LDR_SNAPS for the kernel loader. ([[sir_richard]])<br />
* Support unload of system modules by parsing the LoadedImports (implement MiDereferenceImports which was just a stub) and calling MiCallDllUnloadAndUnloadDll. ([[sir_richard]])<br />
* Fix a bug in MiClearImports. ([[sir_richard]])<br />
* remove svn:mergeinfo ([[Timo Kreuzer]])<br />
* MiFindExportedRoutineByName should validate the ordinal to make sure it's not higher than the function count. ([[sir_richard]])<br />
* Use MM_SYSLDR_ defines instead of magic pointer casts. Use appropriate pool tags. ([[sir_richard]])<br />
* Set the LoadedImport count early-on during image referencing, so that failure will correctly de-reference the imports. By setting it to zero, failures would've leaked driver-dependent DLLs already loaded but now useless. ([[sir_richard]])<br />
* Do the same checks as Windows to avoid drivers linked with user-mode DLLs. ([[sir_richard]])<br />
* Allow "coverage" and "irt" to be linked with Win32K drivers as well. ([[sir_richard]])<br />
* When the linker is fixed not to generate corrupt drivers, add the appropriate code to scan IMAGE_DIRECTORY_ENTRY_IAT for updating thunks. A hack exists in ReactOS now to permit loading these hacked drivers, but Windows is not so generous and will crash with a ReactOS driver. ([[sir_richard]])<br />
* Implement and call MiUseLargeDriverPage. ([[sir_richard]])<br />
* Implement and call MiBuildImportsForBootDrivers. We now have full dependency tracking for correct unloading. ([[sir_richard]])<br />
* Implement and call MiLocateKernelSections. Pool code and paging paths will require this information later. Loader work done for now. ([[sir_richard]])<br />
* Implement MiRemoveAnyPage and MiRemovePageByColor, but only using the list heads, and not the color list heads. Unused. ([[sir_richard]])<br />
* Fixup unused MiInsertPageInFreeList variables ot match the other functions (ColorTable vs ColorHead). ([[sir_richard]])<br />
* Acquire PFN lock before setting up hyperspace PTE/page. ([[sir_richard]])<br />
* Flush TLB after setting up hyperspace. ([[sir_richard]])<br />
* Use new MiRemoveAnyPage interface instead of MmAllocPage(MC_SYSTEM), as the first test of the new Page API/ABI. ([[sir_richard]])<br />
* Add support for creating software PTEs. ([[sir_richard]])<br />
* Restore previous correct ASM behavior of checking for success codes, not only STATUS_SUCCESS, after a page fault. For example, a demand zero fault returns STATUS_PAGE_FAULT_DEMAND_ZERO upon success, and the new C code would treat it as a failure. Fixes a bug. ([[sir_richard]])<br />
<br />
* User pages are not used until Phase 1, they should not be setup in Phase 0. Fixes premature initalization. ([[sir_richard]])<br />
* Fix 4MB assumptions and use PDE_MAPPED_VA instead, which accurately describes the address space mapped by a PDE (which is different on PAE, x64, ARM, etc). ([[sir_richard]])<br />
<br />
* Add assertions to the paged pool and demand zero page faults, to catch possible errors and corruptions. These paths are not yet taken in today's builds, so they do not affect any runtime code. ([[sir_richard]])<br />
* Add assertions regarding the portability of certain code, which will need changes on ARM/x64. These should probably be C_ASSERT's but I don't want to break Timo's build. ([[sir_richard]])<br />
* Define MM_NOIRQL (found in assertions) instead of magical -1. ([[sir_richard]])<br />
* Add MI_IS_SESSION_PTE macro. ([[sir_richard]])<br />
* Export the MiXxxPte variables. ([[sir_richard]])<br />
* Fix some typos in comments. ([[sir_richard]])<br />
* When grabbing physically contigous pages from the zero or free list, make sure to re-initialize their PFN entries correctly, since their data might be stale. Fixes potential weird memory corruption bugs. ([[sir_richard]])<br />
* Physically contiguous memory allocations are not guaranteed to be zeroed, so do not zero the pages. ([[sir_richard]])<br />
* When allocating contigous memory, mark the PFN entries appropriately after mapping the I/O ranges. ([[sir_richard]])<br />
* When freeing contiguous memory, assert that all the freed pages correspond to PFN entries that we expect to have allocated for this purpose. Detects (not neccessarily fixes) memory corruption issues in contiguous memory allocations. ([[sir_richard]])<br />
* These changes mostly affect certain network card and sound card systems/real hardware, they fix possible bugs and detect corruption that was otherwise going by unnoticed. ([[sir_richard]])<br />
* Fix definition of unused MI_MAKE_SOFTWARE_PTE macro. ([[sir_richard]])<br />
* Correctly setup the PFN entries for freshly allocated paged pool pages. Fixes a problem where the page could've still had stale/garbage data. ([[sir_richard]])<br />
* Add some extra assertions in the code to catch memory corruption and detect invalid logic. ([[sir_richard]])<br />
* Fix some typos in the code (comments/whitespace). ([[sir_richard]])<br />
* Make the dreaded page fault message that breaks paged pool on some systems more verbose for future debugging. ([[sir_richard]])<br />
* Re-implement IoGetDeviceProperty. Main changes are usage of existing (and new) helper functions for registry/IRP access, much better factored code, correct implementation of DevicePropertyPhysicalDeviceObjectName, fixed implementation of DevicePropertyBootConfigurationTranslated and DevicePropertyBootConfiguration (do not crash the system anymore), and support for more device properties. ([[sir_richard]])<br />
* Fix caller of IoGetDeviceProperty in pnpres.c to work with new function behavior (which matches WDK documentation and test cases). ([[sir_richard]])<br />
* Implement helper function PnpBusTypeGuidGet, should be used later in other PnP code, but now used only for this patch. ([[sir_richard]])<br />
* Implement helper function PnpDetermineResourceListSize, ditto. N.B. Current IopCalculateResourceListSize function is broken and callers should use this one instead. ([[sir_richard]])<br />
* Implement helper function PpIrpQueryCapabilities, should be used later in device node code, but now only used for this patch. ([[sir_richard]])<br />
* Implement helper function PnpDeviceObjectToDeviceInstance, ditto. ([[sir_richard]])<br />
* Main purpose of this patch is to unblock the new PCIx driver. ([[sir_richard]])<br />
* Root Bus PDO should not override Status with STATUS_NOT_IMPLEMENTED and instead use the current IRP status (which drivers/PnP will typically set to STATUS_NOT_SUPPORTED). Found by testing the new PCIx driver (probably fixes other bus drivers too). ([[sir_richard]])<br />
<br />
* Implement and start using the Pending-Deletion PFN flag. ([[sir_richard]])<br />
* As a result, for stack pages, the Transition page state will now be seen, and the new routine for re-inserting pages into the free list will now be used. Tracking of page table references is also done now for these pages (but we don't free the PT since this doesn't seem safe yet). ([[sir_richard]])<br />
* Fix Implementation of BreakOnTermination -- Process Flags should be accessed with interlocked bit semantics, not through C bitfield extension. ([[sir_richard]])<br />
* Revert 47425 and apply a better fix. ([[sir_richard]])<br />
* Timo/Physicus: Please validate for AMD64. ([[sir_richard]])<br />
* Write down the PTE attribute flags for X86/AMD64. Timo/Physicus: Please double-check. ([[sir_richard]])<br />
* Write down the array that converts from the MM_ protection flags arleady defined, into the appropriate PTE attribute flags that are architecture-specific. ([[sir_richard]])<br />
* This will allow constant-time conversion of NT attributes into PTE attributes. Win32 attributes to NT attributes conversion won't be needed until VAD support. ([[sir_richard]])<br />
* Implement MiAllocatePfn, it is a simpler wrapper that grabs a page, sets its protection, and initializes its PFN entry. ([[sir_richard]])<br />
* Use MiAllocatePfn in MiLoadImageSection instead of MmAllocPage. Other than doing a better job at initializing the page, it creates our first caller of this function, great for testing, since this is a rather high-demand function, especially at boot. ([[sir_richard]])<br />
* Please test. ([[sir_richard]])<br />
* Re-enable the APC debug check in the system call exit code that somehow got removed in 46247. ([[Stefan Ginsberg]])<br />
* Use an inline for emitting the iret instruction in C code for portability. ([[Stefan Ginsberg]])<br />
* Simplify the MSC assembly in KiSwitchToBootStack. ([[Stefan Ginsberg]])<br />
* Fix assertion hit during install ([[Johannes Anderwald]])<br />
* Fix identation ([[Johannes Anderwald]])<br />
* Remove superflous spaces ([[Johannes Anderwald]])<br />
* Allocate non-paged pool pages with MiRemoveAnyPage instead of MmAllocPage. ([[sir_richard]])<br />
* Implement a MI_MAKE_HARDWARE_PTE macro for the generation of valid kernel PTEs instead of always taking the ValidKernelPte and changing its flags. This macro will take into account the protection mask (up until now ignored) and use the array previously implemented to determine the correct hardware PTE settings. Assertions are also added to validate correct usage of the macro, and later revisions will fill out NT-specific fields to help deal with transition PTEs, page faults, etc. ([[sir_richard]])<br />
* Make the stack code the first user of this macro, for the stack PTEs. Good testing base as we create kernel stacks very often. ([[sir_richard]])<br />
* The NT MM ABI specifies that in between the allocation of a new PTE and its initialization as a valid PFN, the PTE entry should be an invalid PTE, and should only be marked valid after the PFN has been initialized. For stack PTEs, do this -- first allocating the page, making it invalid, then initializing the PFN, and then writing the valid page. ([[sir_richard]])<br />
* Build paged pool demand-zero PTE with MI_MAKE_SOFTWARE_PTE macro. ([[sir_richard]])<br />
* Handle paged pool demand-zero fault fulfillment with MI_MAKE_HARDWARE_PTE macro. ([[sir_richard]])<br />
* Use MiRemoveAnyPage instead of MmAllocPage, in paged pool demand-zero fault fulfillment. ([[sir_richard]])<br />
* These changes affect code paths that are not currently in-use. ([[sir_richard]])<br />
* When expanding paged pool, use MiRemoveAnyPage, not MmAllocPage. ([[sir_richard]])<br />
* When expanding paged pool, initialize the PFN entry for the allocated page. Note we might be in arbitrary process space, so the PTE is not necessary valid for the process causing the expansion. ([[sir_richard]])<br />
* Implement MiInitializePfnForOtherProcess to handle the case above. ([[sir_richard]])<br />
* Change two static ASSERTs into C_ASSERTs. Might break non-x86 builds for a bit (vs breaking them at boot, which is worse). ([[sir_richard]])<br />
* Paged pool should start working soon. ([[sir_richard]])<br />
* Implement MiDeleteSystemPageableVm. ([[sir_richard]])<br />
<br />
* In MiDeleteSystemPageableVm, should also handle the case where the PTE is demand-zero. This can happen if the caller allocated, say, 12KB (3 pages) of paged pool, only touched 4KB (1 page), and then frees the allocation -- the other 2 pages will still be demand-zero at this point. ([[sir_richard]])<br />
* In MiInitializePfnForOtherProcess, should increment the sharecount of the page table PFN entry, not the PFN entry of the PTE itself. Spotted by Stefan100. ([[sir_richard]])<br />
<br />
* Define POOL_BLOCK_SIZE definition to set the minimum pool block size. In NT, this is equal to a LIST_ENTRY structure, because the Pool Allocator must be able to store a LIST_ENTRY into a freed pool block. This also determines the alignment of pool allocations. So 8 on x86, 16 on x64. ([[sir_richard]])<br />
* Don't depend on LIST_ENTRY, but use POOL_BLOCK_SIZE instead (on IA64, if we ever want to support this, the pool block size is different from a LIST_ENTRY/POOL_HEADER). ([[sir_richard]])<br />
* The following ASSERTs must hold: the POOL_HEADER must be as big as the the smallest pool block (POOL_BLOCK_SIZE), which must be at least as big as a LIST_ENTRY structure. 8 == 8 == 8 on x86, 16 == 16 == 16 on x64. ([[sir_richard]])<br />
* Use logical math operations on the various block<->entry<->free_list_head operations in the pool code, instead of works-by-chance-and-assumption pointer math operations. This will now allow pool implementations where the pool header is not the size of a pool block (and the size of a LIST_ENTRY, by definition, although, even that, could change, if we choose to implement a cache-aligned overhead). ([[sir_richard]])<br />
* Defensive programming on the pool macros. ([[sir_richard]])<br />
* Add some paranoid-invariant list access checks to the pool code. They serve a dual purpose: catch pool corruption by broken drivers/kernel code, as well as catch malicious modification of the pool links as part of a kernel-mode exploit. ([[sir_richard]])<br />
* Not yet used, thanks to Arthur for the idea. ([[sir_richard]])<br />
* See comment for more information. ([[sir_richard]])<br />
* Fix Exp*PoolList macros. Also make then non-inlined, so we can see who called them in a stack trace. ([[sir_richard]])<br />
* Enable them. ([[sir_richard]])<br />
* This boots on my system -- if it doesn't boot on yours, someone is corrupting your nonpaged pool. Reverting this patch is NOT the solution to your woes. ([[sir_richard]])<br />
* Kill debug spew. ([[sir_richard]])<br />
* Fix up POOL_PREV_BLOCK based on suggestion by hpoussin. ([[sir_richard]])<br />
* Fix up NTAPI location in function definition. ([[sir_richard]])<br />
* Implement even more stringent header checks: ExpCheckPoolHeader and ExpCheckPoolBlocks. Normally we would only want this on a DBG build, but I am enabling them for now until I can fix paged pool. If your machine crashes, reverting this commit is NOT the solution (boots for me). ([[sir_richard]])<br />
<br />
* Fix for the the bug that broke ARM3 paged pool (and has been corrupting ReactOS paged pool behind the scenes for years): ([[sir_richard]])<br />
* When a KCB (key stuff) is allocated, the key name associated with it receives an NCB (name stuff). In case this name is already used, a cache exists, and an existing NCB is grabbed, and its reference count is increased. When the KCB goes away, its NCB loses a reference. When all references are gone, the NCB is destroyed. Simple enough. ([[sir_richard]])<br />
* It turns out that what was currently happening is that an NCB would get dereferenced to 0, deleted, but still remained attached to a valid KCB (shouldn't happen). When that KCB went away, the NCB's reference count was dropped to... -1, and then -2, -3, -4, etc. Remember this is a FREED NCB. In other words, freed pool, that might now belong to someone else, was getting "-1" operations on it. So any value stored in that freed pool would get decremented by one. In ARM3 paged pool, because the allocator keeps a linked list, what would happen is that the FLINK pointer would be 0xE0F01234 instead of 0xE1A01234. What happened is that "0xE1A0" was treated as the reference count of the freed NCB, and it kept getting dereferenced down to 0xE0F0. ([[sir_richard]])<br />
* Proving this was easy, by adding an ASSERT(Ncb->RefCount >= 1) to the routine that dereferences NCBs. Obviously, we should not try to dereference an NCB that has a reference count of 0, because that NCB is now gone. Adding this ASSERT immediately caught the error, regardless of which pool implementation was being used, so this was a problem in ReactOS today, right now. ([[sir_richard]])<br />
* My first thought was that we were taking references to NCBs without incrementing the reference count. The NCB gets referenced in two places: when it gets created, and everytime a cached NCB is re-used for a new KCB (all this in CmpGetNameControlBlock). ([[sir_richard]])<br />
* After adding some tracing code, I discovered that CmpGetNameControlBlock would sometimes return an NCB that was cached, but without referencing it. I did not understand why, since the code says "if (Found) Ncb->RefCount++". ([[sir_richard]])<br />
* Further analysis showed that what would happen, on this particular instance, is that NCB "Foo" was being Found, but NCB "Bar" was returned instead. Therefore, causing some serious issues: First, NCB Foo was receiving too many references. Secondly, NCB Bar was not being referenced. ([[sir_richard]])<br />
* Worse though, it turns out this would happen when "Foo" was the CORRECT NCB, and "Bar" was an INCORRECT NCB. What do we mean by correct and incorrect? Well, because NCBs are hashed, it's possible for two NCB hashes to be VERY SIMILAR, but only ONE OF THOSE NCBs will be the right one -- for example, HKLM\Software\Hello vs HKLM\Software\Hell. ([[sir_richard]])<br />
* In our case, when a KCB for "Hello" was searching for the "Hello" NCB, the "Hello NCB would get a reference, but the "Hell" NCB would be returned. In other words, whenever a HASH COLLISION happened, the incorrect NCB was returned, probably messing up registry code in the process. Subsequently, when the KCB was dereferneced, it was attached to this incorrect, under-referenced NCB. ([[sir_richard]])<br />
* Since in ANY hash collision with "Hell", in our example, the "Hell" NCB would come first, subsequent searches for "Hellmaster", "Hellboy", "Hello World" would all still return "Hell". Eventually when all these KCBs would go away, the "Hell" NCB would reach even -18 references. ([[sir_richard]])<br />
* The simple solution? When the CORRECT NCB is found, STOP SEARCHING! By adding a simple "break" statement. Otherwise, even after the correct NCB is found, further, incorrect, collided NCBs are found, and eventually the last one ("Hell", in our example) got returned, and under-referenced, while "Hellmaster" and "Hellboy" were not returned, but LEAKED REFERENCES. ([[sir_richard]])<br />
* There you have it folks, MEMORY CORRUPTION (USE-AFTER-FREE), INCORRECT REGISTRY NAME PARSHING, REFERENCE LEAKS and REFERENCE UNDERRUNS, all due to ONE missing "break;". ([[sir_richard]])<br />
* r ([[sir_richard]])<br />
<br />
* Fix a loop off-by-one when saving the page table index in contigious memory allocation PFNs. Spotted by Stefan100. ([[sir_richard]])<br />
* Implement MiRemoveZeroPage and MiZeroPhysicalPage. ([[sir_richard]])<br />
* Not yet used. ([[sir_richard]])<br />
* Don't use MmAllocPage for the first paged pool PDE, instead, use MiRemoveZeroPage. ([[sir_richard]])<br />
* Use MiInitializePfnForOtherProcess to setup the first paged pool PDE. ([[sir_richard]])<br />
* A PFN entry is not necessarily physical only if it is higher than MmHighestPhysicalPage. It can also be physical if it lies in a memory hole within the min-max physical page range. We can detect this by using our PFN Bitmap. So replace all "Is this an I/O mapping?" checks with a check on whether or not the PFN Database entry is NULL (which will check for us both of these statements). This ought to be a macro... ([[sir_richard]])<br />
* Another one bites the dust, another one bites the dust. And another one gone and another one gone. Another one bites the dust, yeah. Out of the doorway the bullets rip, Repeating to the sound of the beat. ([[sir_richard]])<br />
* Fix a comment and remove a superfluous extern. ([[Stefan Ginsberg]])<br />
<br />
* Get rid of MiInitializePageList, use MiGetPfnEntryOffset instead of hard-coded pointer math in freelist.c. ([[sir_richard]])<br />
<br />
* Inline writing to PTEs through MI_WRITE_VALID/INVALID_PTE. ([[Stefan Ginsberg]])<br />
* Check registry for our CardList, check if the PCI hardware matches any entry in there that specifies it has full/extended address decoding, and write the registry flag for it. ([[sir_richard]])<br />
* Warn only once about MmLockPageableImageSection being unimplemented. ([[sir_richard]])<br />
* There's no such thing as PRTL_MESSAGE_RESOURCE_ENTRY, use PMESSAGE_RESOURCE_ENTRY instead. ([[sir_richard]])<br />
* Add "vf" NTOS component, required NDK headers, and enable exports required for PCI driver to load. ([[sir_richard]])<br />
* VfFailDeviceNode is actuall __cdecl. ([[sir_richard]])<br />
* Sort, update, clean-up, and add descriptions to bugcodes.mc. ([[sir_richard]])<br />
* Warn only once in MmSecureVirtualMemory/MmUnsecureVirtualMemory, like it was done in 47864. ([[Aleksey Bragin]])<br />
* PnpBusTypeGuidGet : Really return status. ([[Amine Khaldi]])<br />
* Dedicated to Richard ;) ([[Amine Khaldi]])<br />
* Update comctl32 base address. ([[Sylvain Petreolle]])<br />
* Avoids inetcomm related comctl32 relocations. ([[Sylvain Petreolle]])<br />
* Also update comdlg32 address. ([[Sylvain Petreolle]])<br />
* Fixup some base address after mshtml growup. ([[Sylvain Petreolle]])<br />
* Revert rpcrt4 to 99% previous state : (Samuel)<br />
* keep out unix functions (Samuel)<br />
* keep checks that prevent crashes in rpc cstub and rpc winetests (Samuel)<br />
* Fix a typo. ([[Aleksey Bragin]])<br />
<br />
* Handle faults on user-mode addresses, from user-mode processes, if they are owned by ARM3, so they can be forwarded to the VAD fault handler. ([[sir_richard]])<br />
<br />
* Thanks to Timo Kreuzer for some clever definitions, Knuth for his genius, several online C implementations for ideas, the HPI kernel blog for insight on how Windows does it, and others. ([[sir_richard]])<br />
* Learn to build User PTEs as well, with MI_MAKE_HARDWARE_PTE_USER. ([[sir_richard]])<br />
* MI_MAKE_HARDWARE_PTE becomes MI_MAKE_HARDWARE_PTE_KERNEL, since it assumed this. MI_MAKE_HARDWARE_PTE is now a "generic" you can use when you don't know what the PTE should be. It uses MiDetermineUserGlobalMask to set the right bits. ([[sir_richard]])<br />
* Add two more helpers: MI_IS_PAGE_TABLE_ADDRESS and MI_IS_SYSTEM_PAGE_TABLE_ADDDRESS. One is in the symbols, the other I made up to make things clearer. ([[sir_richard]])<br />
* MiResolveDemandZeroFault now knnows how to resolve user-demand-zero-faults. ([[sir_richard]])<br />
* Implement MiZeroPfn to do the actual zeroing during user-demand-zero-faults (also later for VAD faults). ([[sir_richard]])<br />
<br />
* Initialize the system cache working set pushlock. ([[sir_richard]])<br />
* Implement Mi(Un)Lock(Process)WorkingSet inlines to handle the various scenarios. Replace broken/hacky code that was in the system loader, fault handler, and VM deletion paths with the correct macros. No locking is done yet as ReactOS' MAREA implementation overloads the Vm field in EPROCESS, but the correct APC blockings and state transitions are done. ([[sir_richard]])<br />
* Add another helper from symbols, MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS, and use it instead of the math-by-hand. ([[sir_richard]])<br />
* Add MM_IS_ANY_LOCK_HELD and MI_WS_OWNER to help out the new working let locking inlines (names taken from symbols). ([[sir_richard]])<br />
* Add _1GB helper for large-memory checks. Also define _1KB as "1024u". The "u" makes GCC not complain when sizes reach >= 2GB, because GCC will interpret the integer literals as "signed", even if the final calculated value is in an unsigned variable. ([[sir_richard]])<br />
* Allocate the PEB at a pseudo-random address just like Windows XP SP2 and later, to prevent certain kinds of exploits. ([[sir_richard]])<br />
* Allocate PEB and TEB using VADs! The user-mode fault handler seems to work fine, and I could find no regressions. This is the beginning of the end for MAREAs for VM allocations (they will remain for sections). ([[sir_richard]])<br />
* Antique leftover, initialize the shared user data page with MI_MAKE_HARDWARE_PTE_KERNEL ([[sir_richard]])<br />
* Stop handling a bunch of MEMORY_AREA_TYPEs that aren't used anymore. ([[sir_richard]])<br />
* Define the template prototype PTE. ([[sir_richard]])<br />
* Stop handling PEB/TEB MAREAs since they're not used anymore. ([[sir_richard]])<br />
* Note: this patch only implements the code paths, they are not excercised yet. ([[sir_richard]])<br />
* Implement handling a very special case of "prototype PTE", the one used to map the shared user data for user-mode applications. ([[sir_richard]])<br />
* MiCheckVirtualAddress detects this (Windows behavior) and returns a prototype PTE that's marked MM_READONLY. This is our MmSharedUserDataPte from before. This gets sent to MiDispatchFault which calls MiResolveProtoPteFault to handle it. In turn, this calls MiCompleteProtoPteFault. All these code paths have heavy ASSERTions to only allow them to be hit for the shared user data page, however, in the far distant future when prototype PTEs are used for section objects, we'll at least have the right checks and code flow (many of these ASSERTions will then have to be removed). ([[sir_richard]])<br />
* The end result is that we also now have STATUS_PAGE_FAULT_TRANSITION, not just STATUS_PAGE_FAULT_DEMAND_ZERO, and that prototype PTEs are somewhat understood and some assumptions have been removed. ([[sir_richard]])<br />
<br />
* Prepare to take over MmCreateProcessAddressSpace. ([[sir_richard]])<br />
* Reimplement MmCreateProcessAddressSpace in ARM3. Basically the same as before but using the ARM3 PFN list APIs, the ARM3 macros, etc. Once change is processes are now populating the MmProcessList, and the "MmGlobalKernelPageTable" isn't used anymore for new processes. Also the mappings come from SysPTE space, not hyperspace. ([[sir_richard]])<br />
* More work will be needed in this area, but this gets rid of another ReactOS dinosaur. ([[sir_richard]])<br />
* Implement MmCleanProcessAddressSpace in ARM3, now the PEB/TEB VADs are removed when the process exits (although the pages are still leaking, for now), and the pool allocation for the VAD is also freed. ([[sir_richard]])<br />
* Use ARM3 paged pool up until smss.exe starts. There's a last bug in the expansion code before we can get rid of the old paged pool. ([[sir_richard]])<br />
* Implement MmDeleteTeb, VADs are now deleted/freed on thread exit as well (but the underlying page is still leaked). Should fix the advapi32 security crash. ([[sir_richard]])<br />
* Sometimes it seems we hit some bad VADs due to bugs? in the AVL tree implementation. I'm going on vacation for a month and can't look at this, so I've hacked the code to ignore such VADs for now, in the interest of fixing the winetest regression. ([[sir_richard]])<br />
* Convert MmProtectToPteMask to extern. ([[Amine Khaldi]])<br />
* Convert LpcpAllocateFromPortZone to static __inline. ([[Amine Khaldi]])<br />
* Another long-lost-promised straggler for Timo. There may be more of these needed, this is what I had done on my disk. ([[sir_richard]])<br />
* Fix kernel memory corruption when dequeuing a PnP event ([[Cameron Gutman]])<br />
* Xcode.... ([[Cameron Gutman]])<br />
* Aleksey wants an easy way to see debug messages coming from one process vs. another, which is an obvious idea that should've done a long time ago. Now you can see who is generating a given debug message (including the thread). ([[sir_richard]])<br />
* Add DRIVER_CAUGHT_MODIFYING_FREED_POOL bugcheck code. ([[sir_richard]])<br />
* Add support for protected freed nonpaged pool. This is controlled through MmProtectFreedNonPagedPool, which is initialized based on a registry value (see cmdata.c). This is not "Special Pool", but a useful debugging feature Windows implements that we now have too, since I noticed a lot of mj's work was with freed pool access. ([[sir_richard]])<br />
* NB. It's 3AM and I have not tested this, it should be off in trunk by default, you'll need to try turning it on and testing it. Hope it helps. ([[sir_richard]])<br />
* This line, and those low, will be ignored-- ([[sir_richard]])<br />
* M ntoskrnl/mm/ARM3/pagfault.c ([[sir_richard]])<br />
* M ntoskrnl/mm/ARM3/pool.c ([[sir_richard]])<br />
* M include/reactos/mc/bugcodes.mc ([[sir_richard]])<br />
* Missed a bunch of codepaths, protected pool "should" work now. ([[sir_richard]])<br />
* Add an extra layer of protection for freed nonpaged pool: write a 4-byte signature on freed blocks, and assert its valid on checked builds. Use a slightly less egocentric ASCII value than on Windows (name of the developer who wrote the first memory manager). ([[sir_richard]])<br />
* Remove useless variables in kernel code that were set, but never actually used (dead code, tests, copy/pasters). If a variable was set but not used because of missing/#if'ed out code, a note was added instead. ([[sir_richard]])<br />
* In the process, fix bugs in the Event dispatcher code that used Win32 EVENT_TYPE instead of NT KOBJECTS enumeration. ([[sir_richard]])<br />
* Fix a bug in ObpInsertHandleCount, where the object access check was being done with the previous mode, instead of honoring the probe mode, which is defined by OBJ_FORCE_ACCESS_CHECK. ([[sir_richard]])<br />
* Fix a bug in a section function which was always returning STATUS_SUCCESS, now it returns the result of the previous Status = function assignment. If this isn't desired, then don't check for the Status anymore. ([[sir_richard]])<br />
* Note that MDL code does not support SkipBytes argument. If it is used, MDL could be invalid. ([[sir_richard]])<br />
* Add checks for VerifierAllocation and set it when needed (WIP). ([[sir_richard]])<br />
* Clarify what _WORKING_LINKER_ is, and the legal risks in continuing to use a linker that builds non-Microsoft drivers when used with headers whose EULA specify that they can only be used for Microsoft drivers. ([[sir_richard]])<br />
* Rename KINTERRUPT_DISPATCH_CODES to DISPATCH_LENGTH, as it is in PSDK. ([[Aleksey Bragin]])<br />
* Enhance NMI debug support. ([[Aleksey Bragin]])<br />
* Change some comments to standard ReactOS commenting style. ([[Aleksey Bragin]])<br />
* Fix a strange bug where we were only setting SharedUserData->TestRetInstruction conditionally only if lookup failed - it should be set on success. Also, bail out if the lookups failed. ([[Aleksey Bragin]])<br />
* Fix a code typo which led to a security issue when the XOR algorithm for the system cookie might actually yield zero. Now it's going to loop as long as the cookie is 0, attempting to generate a non-zero one. ([[Aleksey Bragin]])<br />
* Fix several bugs in Inbv (busted locking code, useless variables, magic initializers). ([[Aleksey Bragin]])<br />
* Daniel Zimmermann: Fix POPF bugs in VDM mode, namely truncation of the stackpointer to 16 bit and setting proper flags in the trapframe eflags register. This fixes problems with videocards calling int 0x10 VESA BIOS extension. ([[Aleksey Bragin]]; {{bug|5608}})<br />
* Add CmRegistryMachineSystemName to the internal header file, needed for Pierre's further work. ([[Aleksey Bragin]])<br />
* Move the fix for pool corruption due to dangling MmProcessLinks pointer into its correct location. Thanks again to Martin for the fix. ([[sir_richard]])<br />
* Likely fix for bug 5600: ([[sir_richard]])<br />
* Using IsBadRead/CodePtr, it's possible for user-mode code to generate cases where we *think* this is an ARM3-managed piece of VA, which will always have a VAD (Since we only manage the PEB/TEB), but actually it's a bogus VA-looking address that is actually invalid. We didn't consider this case. We now implement the same code Windows normally would also handle, when the VA is bogus, and accept that no VAD might be found, so MM_NOACCESS is returned and thus an access violation sent to the caller. In the case of the IsBad...Ptr, this function would then return TRUE, as the caller expects. ([[sir_richard]])<br />
* More fixes to VDM PUSH/POPF code: ([[Timo Kreuzer]])<br />
* When doing a 32bit push, don't store the flags 2 bytes off ([[Timo Kreuzer]])<br />
* Recalculate HardwareEsp, by substracting the segment part, instead of truncating the flat pointer to 16 bit. ([[Timo Kreuzer]])<br />
* Add support for Cyrix CPUs by checking and applying a workaround for the Cyrix 6x COMA bug (description here: http://gwyn.tux.org/~balsa/linux/cyrix/p11.html). ([[Aleksey Bragin]]; {{bug|5610}})<br />
* Add support for KeyValueFullInformationAlign64, used by some Windows drivers (as a bonus, support Win64). PartialInformationAlign64 is a different beast -- warn when a driver attempts to use it, instead of silent failure. ([[sir_richard]])<br />
* Export VfFailSystemBIOS and stub it. ([[sir_richard]])<br />
* Warn when a driver fails to load due to a missing dependency and print the name and/or missing module, instead of silently failing. ([[sir_richard]])<br />
* Due to a bug in the ReactOS PnP manager, Windows PCI Driver hits an internal pseudo-assert. Hack KeBugCheckEx to ignore this pseudo-assert and continue executing normally. ([[sir_richard]])<br />
* Update 3rd Party Files.txt To Current 3rd Party Releases. ([[Aleksey Bragin]]; {{bug|5603}})<br />
<br />
=== NTOS_HAL ===<br />
* Rework respective code to handle this by using the VDM Alert field in the KPCR. ([[sir_richard]])<br />
* this log message left intentionally non-descriptive ([[Matthias Kupfer]])<br />
* Remove VDM Alert KPCR hack (which was buggy). Now the PKTRAP_FRAME is passed as a parameter to HalpEndSoftwareInterrupt/HalEndSystemInterrupt. This also removes the HalpNestedTrap ASM hack, since the call can now be done in C. ([[sir_richard]])<br />
* Move trap entry points from C into a GAS/ML compatile assembly file (might need fine tuning for ML). The entries are generated by a shared assembly macro TRAP_ENTRY. Removed KiTrapStub, KiIsV8086TrapSafe, KiIsUserTrapSafe, KiSetSaneSegments, removed segment handling from KiEnter*Trap. ([[Timo Kreuzer]])<br />
<br />
=== NTOS_PERF ===<br />
* Enable VME support. VME stands for Virtual 8086 Mode Extensions, and it's an Intel optimization that makes changes to the IF bit in EFLAGS (CLI, STI, INT, IRETD, PUSHF, POPF) completely transprent: instead of changing the real (protected) bit, which requires the OS to trap and emulate the behavior, the CPU sets a "Fake" IF bit instead. When you're dong in V8086 mode, you simply update your real flag with whatever the fake flag says. ([[sir_richard]])<br />
<br />
=== NTOSKNL ===<br />
* undef IoAllocateAdapterChannel before implementing it ([[Timo Kreuzer]])<br />
<br />
=== NTOSKNRL ===<br />
* Add the possibility to break on all first chance exceptions, by passing /FIRSTCHANCE on the command line. Enable it temporary to get some more information from the sysreg crash. ([[Timo Kreuzer]])<br />
* Add /KDSERIAL to the command line, to make sysreg able to bt in first stage. ([[Timo Kreuzer]])<br />
<br />
=== NTOSKRL ===<br />
* Add missing MI_LOWEST_VAD_ADDRESS for amd64 ([[Timo Kreuzer]])<br />
<br />
=== NTOSKRNL_CONFIG ===<br />
* Add a macro for asserting hash lock ownership. ([[Aleksey Bragin]])<br />
* Add a macro for getting an alloc page from KCB / delay alloc item. ([[Aleksey Bragin]])<br />
* Add a newly allocated KCB to the tail of CmpFreeKCBList, not to its head. ([[Aleksey Bragin]])<br />
* Add more assert macros for registry operations: locked or loading, exclusively locked or loading, hash and KCB locks, locked for flushing. ([[Aleksey Bragin]])<br />
* Add macros for getting alloc page from KCB and delay alloc item. ([[Aleksey Bragin]])<br />
* Stub support for global quota enable. ([[Aleksey Bragin]])<br />
* Stub support for notifications. ([[Aleksey Bragin]])<br />
* Add a source file for a future HiveList implementation. ([[Aleksey Bragin]])<br />
* Implement new (correct) hive flusher lock/release routines, unused right now. ([[Aleksey Bragin]])<br />
* Flusher lock fixes: wrong kind of lock,total mess (and the wrong kind of lock). Properly fixed throughout cmapi.c, but still missing in many other places. ([[Aleksey Bragin]])<br />
* Add support for detecting loading of an already loaded hive. ([[Aleksey Bragin]])<br />
* Start adding calls to CmpReportNotify to support registry callbacks. ([[Aleksey Bragin]])<br />
* Do work needed to flush notifications for a deleted node (but CmpFlushNotify not yet implemented). ([[Aleksey Bragin]])<br />
* Add support for adding each newly loaded hive to the HiveList key in the registry (but CmpAddHiveToFileList not yet implemented). ([[Aleksey Bragin]])<br />
* Add some ViewLock acquire/releases where needed. ([[Aleksey Bragin]])<br />
* Load the key in a faster way (Ob vs Zw) ([[Aleksey Bragin]])<br />
* Add checks everywhere for HvMarkCellDirty success. In future (when log/backup file is enabled), it can return FALSE (e.g. when we are out of space). ([[Aleksey Bragin]])<br />
* Change logic in CmpDoFlushAll to only flush a hive if it won't shrink (in the future, flushing may lead to hive shrinkage for efficiency). ([[Aleksey Bragin]])<br />
* Add SEH2 protection to all CmApis that may deal with user-mode data. ([[Aleksey Bragin]])<br />
* Add HvTrackCellRef/HvReleaseCellRef for tracking cell references in scenarios where we might need many GetCell/ReleaseCell calls. For now stubbed to only work with up to 4 static references. ([[Aleksey Bragin]])<br />
* Properly unlock/free in some failure paths in some of the CM APIs. ([[Aleksey Bragin]])<br />
* Add some missing HvReleaseCell in paths where it was missing. ([[Aleksey Bragin]])<br />
* Try to fix hack in enumerate key. ([[Aleksey Bragin]])<br />
* Fix wrong usage of KeQuerySystemTime. It was called twice to save it in 2 different places. Instead, there should be only one call, and then duplicate the value across. ([[Aleksey Bragin]])<br />
* Fix logic in CmpSetValueExistingData/Key. ([[Aleksey Bragin]])<br />
* Tested with winetests and .NET framework 1.1 installation which fully completes. ([[Aleksey Bragin]])<br />
<br />
=== NTOSKRNL_FREELDR ===<br />
* Add amd64 linker scripts ([[Timo Kreuzer]])<br />
<br />
=== NTOSKRNL_IO ===<br />
* Check for null pointers before attempting to copy or free memory. ([[Michael Martin]])<br />
* Modify IopCreateDriver to accept the PLDR_DATA_TABLE_ENTRY instead of the DllBase and SizeOfImage from this structure. ([[Michael Martin]])<br />
* Set the DriverObject->DriverSection before calling the DriverEntry routine. ([[Michael Martin]])<br />
* If the DriverEntry routine fails then set the DriverObject->DriverSection back to NULL so that IopDeleteDriver doesnt attempt to unload the ModuleObject, after it was already unloaded by the caller. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_IO_PNPMGR ===<br />
* Fix incorrect POOL_TYPE allocation in IoInvalidateDeviceRelations. This function can be called at DISPATCH_LEVEL, which requires NonPagedPool POOL_TYPE. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_PO ===<br />
* When an IRP is freed in a Completion routine the return Status is STATUS_MORE_PROCESSING_REQUIRED to let IoCompleteRequest know not to do anything further with the IRP. ([[Michael Martin]])<br />
* Fix typo. ([[Michael Martin]])<br />
<br />
=== NTOSKRNL_PS ===<br />
* Acquire and Release RundownProtection on the Parent Pocess not the newly created Pcess when setting the SectionObject. ([[Michael Martin]])<br />
* When deleting a Process remove the Process from the MmProcessList. Fixes random NonPaged Pool corruptions. Thanks aicom for assistance. ([[Michael Martin]])<br />
<br />
=== NTSOKRNL ===<br />
* Fix a teb member name ([[Timo Kreuzer]])<br />
* 44506 (tkreuzer) ([[Timo Kreuzer]])<br />
<br />
=== OLDNAMES ===<br />
* Update moldname-msvcrt.def ([[Timo Kreuzer]])<br />
* Add a proper oldnames lib, instead of implicitly including it with mingw. ([[Timo Kreuzer]])<br />
* 46526 ([[Timo Kreuzer]])<br />
<br />
=== RSYM64 ===<br />
* fix linux compilation ([[Timo Kreuzer]])<br />
* Silence annoying error messages ([[Timo Kreuzer]])<br />
<br />
=== SCM ===<br />
* Fix SCM shutdown. Now all services are stopped (in my working copy with the CSRSS shutdown code). ([[sir_richard]])<br />
<br />
=== SETUPLDR ===<br />
* Do not build on ARM. On a side note, I offer a bountry for "if ARCH != ARM" support in .rbuild files, instead of only allowing * Use mini_hal only on i386 builds ([[Timo Kreuzer]])<br />
* Unify the old setupldr settings with more recent freeldr ones. Also fixes missing _udiv/mod functions on my build. ([[sir_richard]])<br />
<br />
=== STRSAFE ===<br />
* Add strsafe.h from amd64 branch. ([[Timo Kreuzer]])<br />
<br />
=== VMX-SVGA ===<br />
* Experimental driver for WMX-SVGA for testing memory manager and VideoPrt issues and acceleration on QEMU. ([[sir_richard]])<br />
<br />
=== WDMAUD_KERNEL ===<br />
* Replace mixer / wave support code by mmixer library ([[Johannes Anderwald]])<br />
* Perform all allocations / frees in dedicated alloc / free function ([[Johannes Anderwald]])<br />
* Fix possible buffer overflow ([[Johannes Anderwald]])<br />
<br />
=== WIN32K|GDI32 ===<br />
* Fix GdiBatch, the limit is for user space not system. ([[James Tabor]])<br />
* Enable font batch and fixed setting brush origion. Use the new delete object functions in win32k. ([[James Tabor]])<br />
<br />
=== WIN32K|GGI32 ===<br />
* Diagnostic commit used for troubleshooting leaking region handles. ([[James Tabor]])<br />
* Updates to headers and experimental code added for regions. ([[James Tabor]])<br />
<br />
=== XDK_DDK ===<br />
* Relax INTERLOCKED_RESULT inclusion guard. ([[Amine Khaldi]])<br />
<br />
=== SYSGEN ===<br />
* Implement a rewrite of rbuild written in c# ([[Marc Piulachs]])<br />
<br />
{{Navigation Changelog}}</div>
CycleGeek