- Implement OEM bitmaps sizes for server information. If more is need, it will be added. This will be plugged in later.
svn path=/trunk/; revision=68603
- Add ntwin32.h, move declaration of PTHREADINFO, PPROCESSINFO and W32CLIENTINFO there
- Avoid language extensions that are not C++ compatible
- Avoid dependenence to PTHREADINFO/PPROCESSINFO in ntuser.h and use incomplete types instead
- Move duplicate definition of PATRECT from ntusrtyp.h to user32.h private header
svn path=/trunk/; revision=66888
- Implement NtUserResolveDesktop, which opens a desktop and a window station based on a desktop path string (format: "WinSta\Desktop").
- Move NtUserConsoleControl to a more suitable file, and implement the control code that allows CSRSS to assign console input threads to given desktops.
- Simplify a bit the code in NtUserSetInformationThread.
[CONSRV]
Turn the console input thread to a real one. There should be one such thread per desktop. When a console process is started, we open the desktop on which the process is going to start, we create a new input thread (attach it to the desktop) if needed, or reuse the existing one, and then we open the terminal on the correct desktop.
CORE-9346 #resolve #comment Fixed in revision 66662.
svn path=/trunk/; revision=66662
Rewrite NtUserSetCursorIconData
Fixes:
- Memory leaks
- Cursors left in an unpredictable / unhealthy state, including pointers to freed memory, when an operation failed
- Decision whether a cursor uses an ACON or CURSOR as the underlying structure based on user provided flags, instead of cursor flags, which were not even set in the first place.
- Allowing a usermode caller to corrupt the cusor structure, by converting an ACON with a smaller allocation size into a CURSOR
CORE-9301 #resolve
svn path=/trunk/; revision=66528
Get rid of our old cursoricon implementation. Rename cursoricon_new.c to cursoricon.c and remove all traces of NEW_CURSORICON
svn path=/trunk/; revision=66526
- Fix wine msg:test_winevents.
- Fix global hooks while sending to same process different thread. Yes, interesting.
- Fix event hooks, use posting (faster) instead of sending. This fixed a problem while sending to the same thread.
svn path=/trunk/; revision=66310
Move the shutdown privilege check from winlogon to win32k (function "UserInitiateShutdown") as it should be done.
[WIN32K]
- Introduce the pair of UserInitiateShutdown/UserEndShutdown calls that should be called when WINSRV starts a shutdown (and when it finishes it). In particular it is in UserInitiateShutdown that we need to check whether the caller has the rights to perform a shutdown (it should also have a valid window station).
- Remove the ROS-specific TWOPARAM_ROUTINE_EXITREACTOS call that is traded for Win2k3-compatible call to UserInitiateShutdown.
[WINSRV]
Hackfix our current ExitWindowsEx functionality (based on a patch by Alex made against r46050 for win32csr) to make it "compatible" with the improvements in win32k: impersonate the caller and call the UserInitiateShutdown win32k system call (instead of the TWOPARAM_ROUTINE_EXITREACTOS). More will come later on.
[USER32]
Win32k can require performing shutdown in an asynchronous way (needed also on WINSRV side) so we need to put all the code in a worker thread.
Part 8/X (part 6 was r65693 and part 7 was r66186).
CORE-8322 #comment Start to add Alex' win32csr shutdown patch in WINSRV; fixes for winlogon and additions to win32k.
svn path=/trunk/; revision=66192
- Setup system cursors and icons. Could help with Themes.
- Set default cursor to the message queue structure.
- Fix wine cursor icon tests. Fix ATI cursor passing issue.
- Fix that sticky mouse cursor while the screen saver is on.
- Move cursor code from User32 and shake that pop up window too.
- Setup for window station security checking.
- Dedicated to the great work by Jérôme Gardou. Doing ones best to preserve his original code!
svn path=/trunk/; revision=66166
- Fix remaining DDE issues, re-sync DDE code from wine. Add QOS startup. Moved error debug prints to traces. Over all improvement with test results.
svn path=/trunk/; revision=66011
- Implement DDE from wine. Leaving debug errors on the run and later move to trace. See CORE-7447.
- Use callbacks to User32 to convert the data and track it in Win32k.
- Add a new Quality of Service atom.
- Add things to class.c.
- Shell32 tests run now too, or only 4 run. This might be fixed too, since locating a lParam write back issue.
svn path=/trunk/; revision=66000
- Implement Ime (only) class support. This is for the new synced class tests. Recommending Developers choice for testing real Imm32.dll support. Should include registry Loading of IMM via Win32k.
- Based on patch by Piotr Caban : Move IME window procedure to user32.
svn path=/trunk/; revision=65977
Import metafile code from wine. The wine code is unmodified (please keep it that way) and used through a wrapper function dispatcher and some helpers. Fixes 1931 wine tests.
svn path=/trunk/; revision=65893
- Add header for Ime information. Setup support for Ime types and hot keys.
- Finish keyboard processing changes and call Imm process key for callback to user mode.
svn path=/trunk/; revision=65845
- Move IME from stubs into its own file. Add flags and types to main header.
- Later, how to add Ime.h from mingw (tested it and works) and not effect VC++ ? VC SDK has Ime.h.
- Getting ready for Window Class update based on current wine tests.
svn path=/trunk/; revision=65842
Fix NtUserProcessConnect to use the process handle we give to it, instead of the "current process"... This should fix the user32 CSR connection that I was failing to fix in previous revisions...
CORE-8949
svn path=/trunk/; revision=65820
- Crash is due to receiving an APC for the current sending thread. Prematurely freeing the data block and while the receiving thread did not have a chance to process it. Interception and calling back to user mode will allow thread to go away. What about the memory block, is it still allocated? A cleaver Hack can fix this, but still the application crashed leaving issues and trash laying about. See CORE-8779.
Reference:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff565592(v=vs.85).aspx
"Yes, for thread termination. No, for user APCs."
svn path=/trunk/; revision=65744
More improvements to region.c:
- PROSRGNDATA -> REGION, void -> VOID, int -> INT, uppercase struct names
- do not put assignments into if statements
- !x -> x == NULL for pointers
- Add additional parentheses / curly braces
- rename RGN_ATTR::Flags to iComplexity
svn path=/trunk/; revision=65720
- Code formatting for NtUserProcessConnect.
[USER32]
- Hack a call to GetConnected in ClientThreadSetup in an attempt to temporarily "fix" a bug that makes the bots fail. Now we really need to fix user32 init!
svn path=/trunk/; revision=65714
- Play around and declare USERSRV_API_CONNECTINFO (CSR-style-name connect info structure type) as an alias to USERCONNECT (win32k-style-name) structure that is used to perform... "connections" between user32 and winsrv/win32k subsystem.
[WIN32K]
- Make UserThreadCsrApiPort case of NtUserSetInformationThread return success to make usersrv happy (while saving CSR port handle in win32k is still not implemented).
[USER32]
- Clean up "a bit" DllMain, call CsrClientConnectToServer to connect to usersrv (copy-paste of what we do in kernel32 for base and console connection) and now determine properly whether we are doing server-to-server calls (i.e. properly set gfServerProcess).
- Reorganize GdiDllInitialize calls and put them all to the end of DllMain instead.
- No need to support DLL_THREAD_ATTACH/DETACH so call the magic DisableThreadLibraryCalls function.
[USERSRV]
- Implement UserClientConnect with the patch of Timo CORE-7505: it gives a CSR port handle to win32k (if not already done), then do process connection.
CORE-7505
svn path=/trunk/; revision=65710
- Simplify NtUserInitialize: we can check whether gpepCSRSS is != NULL to see if we are initialized or not (instead of using gbInitialized).
- The UserInitialize helper doesn't need to take parameters. The two event handles (power and media, used when we receive a power event -- for sleep, etc... -- and a media event -- like USB key insertion and such --) just need to be used in the not-yet-implemented "Initialize Power Request List" and "Initialize Media Change" steps.
- Something that should be done is to bugcheck if the USER version reported is != 5.0 (as windows does).
[WINSRV]
- Collapse common inclusions from usersrv and consrv into the common header winsrv.h.
[USERSRV]
- _UserSoundSentry is NTAPI
- Stub UserClientConnect (Timo's patch contains more involved code. I will commit it later).
- Our NtUserInitialize(0, NULL, NULL); call (that made Windows BSOD) is wrong. It should be done with its first parameter correctly set to the USER version (5.0) and the two other parameters are handles to power and media events (see above). We should create them before.
This is part of patch by Timo Kreuzer.
CORE-7505 #comment UserClientConnect stubbed (it should be better implemented, I will commit the code from the patch later on); power&media events initialized; NtUserInitialize corrected.
svn path=/trunk/; revision=65696
* Stop using ONEPARAM_ROUTINE_CSRSS_GUICHECK
[WIN32K]
* Move the manual gui check for console windows entirely in win32k
* This shouldn't cause any regressions to the ancient gui-on-demand feature
svn path=/trunk/; revision=65538
So...
... first of all NtUserQueryInformationThread takes only 4 parameters in Win2k3 so do it as well...
... and since we claim at being compatible with Win2k3 (and not XP), one **MUST** review **ALL** our win32k exports, in win32ss/w32ksvc.db database first, and then in our w32kdll apitests !!!!!
But I won't do it !
svn path=/trunk/; revision=65519
- "Convert" new cursor & icons implementation to the new user object handle manager.
- Fix a few idiosyncracies in the way cursor handles are used (only with USE_NEW_CURSORICON_ENABLED)
[WIN32SS]
- Storm out the flowers out of how classes use icon and cursor objects, with proper refcounting and all those joyous things.
Handles are for the powerless, kernel mode use pointers.
Only with USE_NEW_CURSORICON enabled (soon!)
CORE-7575
svn path=/trunk/; revision=64877
- Introduce the base of what should become a proper user object manager, with proper refcounting, handle management, cleanup callbacks and inter-object referencing.
Approved by Jim and Giannis.
CORE-8539 #resolve
svn path=/trunk/; revision=64219
- Fix load menu callback. Use it for loading system menus.
- Sync in more wine code, fix sub-menu arrow drawing. See WinMerge.
- Miscellaneous code changes.
svn path=/trunk/; revision=63380
- Utilize the new menu structures and use item array instead of the list method. Make sure your applications Appends are in order (reference Mdi.c). Sync ported more wine code too.
- See CORE-5605, CORE-7447, CORE-7967 (Main Bug), CORE-8098 and CORE-8107
svn path=/trunk/; revision=63179
- Moved to new menu structures, synced in wine code and started first phase to server side. Resulting that more tests are running and failing less. Unplugged ntuser bad functions.
- See CORE-5605, CORE-7447, CORE-7967, CORE-8098 and CORE-8107
svn path=/trunk/; revision=63027
- Improvements to the message system. Fix hook write backs. Reduced memory when calling back from server side. Disabled post or send, leaving it in place just for a while, to test. See CORE-7447.
svn path=/trunk/; revision=61251
- Commit everything I got on new cursor/icon implementation
- Implement loading animated cursors (no display yet)
- Get rid of this m:n relation between cursors and processes. (ie. proper implementation of LR_SHARED)
- Get rid of the global linked list of cursors (ditto)
- Use atoms instead of copying the module name into the object. (aka stop using non paged pool for nothing)
- Misc fixes
svn path=/trunk/; revision=60978
- Fix console palette setting; introduce the ConsoleMakePalettePublic control code for NtUserConsoleControl API which
is called by the SetConsolePalette to make the given palette handle public (indeed, the caller to SetConsoleHandle
gives to this API a GDI palette handle which is aimed at being used by another process, i.e. by CSRSS.EXE; in normal
operation this is impossible unless saying to GDI that the handle is meant to be public; that's what it's done there).
Thanks to Aleksander and David (who provided tests) and Timo (see revision 60725) for having helped me in understanding
what happened exactly there.
- Remove now-unneeded DPRINT1s and the hacked palette that was introduced in revision 60629/60641.
Part 1/2
svn path=/trunk/; revision=60726