Commit graph

83 commits

Author SHA1 Message Date
Hermès Bélusca-Maïto 1e1a59fb22 Synchronize with trunk r58606.
svn path=/branches/ros-csrss/; revision=58607
2013-03-24 19:05:43 +00:00
Hermès Bélusca-Maïto 53eba1ba5f [CONSOLE.DLL-CONSRV]
- Further separate properties of the GUI terminal front-end and those independent of the UI.
- Fix some console initialization steps.

svn path=/branches/ros-csrss/; revision=58605
2013-03-24 17:08:10 +00:00
Hermès Bélusca-Maïto c70f992aa1 Synchronize with trunk r58528.
svn path=/branches/ros-csrss/; revision=58529
2013-03-16 22:10:42 +00:00
Hermès Bélusca-Maïto 471be3e868 [SHELL32]
Implement the usage of the STARTF_TITLEISLINKNAME flag (in a STARTUPINFO structure, it signals that the program was started from a shell link, and therefore its lpTitle member holds the path of the link).
What I do is that, in CShellLink::InvokeCommand (called when a shortcut is being executed), I initialize the SHELLEXECUTEINFO structure such that we know that we are starting from a shortcut (use the
SEE_MASK_HASLINKNAME flag), and to hold the path to the flag I use its lpClass member (which is not used for other things in this code path). Then the whole thing is passed to ShellExecuteExW which, in turn,
calls the SHELL_ExecuteW function. This function reads the SHELLEXECUTEINFO structure and, if it has the flag SEE_MASK_HASLINKNAME (or SEE_MASK_HASTITLE too, if somebody also uses lpClass to pass a particular
title for the startup), we use the forementioned lpClass member, holding the link path, as the title (lpTitle member) of a new STARTUPINFO object used when calling CreateProcess (and thus, launching the
new application). So that this application will be aware that she was launched via a link (therefore we become compliant with the STARTF_TITLEISLINKNAME documentation).

svn path=/branches/ros-csrss/; revision=58480
2013-03-13 01:35:46 +00:00
Hermès Bélusca-Maïto 17c9d97fe7 [CONSRV]
- Fix console initialization / uninitialization and resources release when initialization fails.
- Remove unneeded DPRINTs.

svn path=/branches/ros-csrss/; revision=58462
2013-03-10 15:37:22 +00:00
Hermès Bélusca-Maïto 4ec191c413 [CONSOLE.DLL-CONSRV]
Fix cursor size.

svn path=/branches/ros-csrss/; revision=58459
2013-03-10 02:23:46 +00:00
Hermès Bélusca-Maïto 840ea98cba Synchronize with trunk r58457.
svn path=/branches/ros-csrss/; revision=58458
2013-03-10 01:01:36 +00:00
Hermès Bélusca-Maïto b4413b4ef8 [KERNEL32-USER32]
No need to check ApiMessage.Status if you also check the returned value of CsrClientCallServer because, according to dll/ntdll/csr/connect.c:CsrClientCallServer, the (only) return value of CsrClientCallServer _is_ equal to ApiMessage.Status (vide line 169).

svn path=/branches/ros-csrss/; revision=58456
2013-03-09 22:16:26 +00:00
Hermès Bélusca-Maïto 62f4efcc97 [KERNEL32-CONSRV]
Remove the old implementation of GetConsoleInputWaitHandle which was commented-out for some time.

[BASESRV]
Correct few names.

svn path=/branches/ros-csrss/; revision=58454
2013-03-09 21:21:37 +00:00
Hermès Bélusca-Maïto c708f46621 [NTDLL]
Fix CsrCaptureTimeout (verified against Windows Server 2003).

[KERNEL32-CSRSRV-BASESRV-CONSRV-WINSRV]
Clean the code: remove unuseful comments and dprints, reorganize a little bit few source files.

svn path=/branches/ros-csrss/; revision=58453
2013-03-09 21:08:23 +00:00
Hermès Bélusca-Maïto fa34f9c8ee [KERNEL32]
Further correct 4 console winetests.

svn path=/branches/ros-csrss/; revision=58449
2013-03-09 14:18:10 +00:00
Hermès Bélusca-Maïto 7268b8776a [CONSRV]
Fix the initialization of screen buffers (concerning the cursor size).

[KERNEL32]
Fix almost all of the console winetests. Only 26 tests remain to be fixed, concerning principally WriteConsoleInputA/W and GetNumberOfConsoleInputEvents.

svn path=/branches/ros-csrss/; revision=58448
2013-03-09 01:39:49 +00:00
Hermès Bélusca-Maïto beff3acbf2 [CONSOLE.DLL]
Use a new unique sample text for fonts and colors overview.

[CONSRV]
Remove few DPRINTs.

svn path=/branches/ros-csrss/; revision=58419
2013-03-03 17:39:44 +00:00
Hermès Bélusca-Maïto cfb68e9fdd [CONSOLE.DLL]
Code formatting only (tab --> space indentation)

svn path=/branches/ros-csrss/; revision=58416
2013-03-03 15:47:52 +00:00
Hermès Bélusca-Maïto 28842d99ad [CONSOLE.DLL-KERNEL32-CONSRV]
Fix the console properties dialog, when launching and transmitting console properties. Before, the properties dialog was directly launched by the console server (consrv), running with CSRSS (System) privileges, what constituted a security hole. Now, I create a remote thread in the running process owning the console for launching the properties dialog (thus it has only user privileges, and not System ones anymore). For that purpose, I basically took the technique described in the following paper (Cesar Cerrudo, "Story of a dumb patch", http://www.argeniss.com/research/MSBugPaper.pdf or http://www.scn.rain.com/~neighorn/PDF/MSBugPaper.pdf), where basically the console server shares the console properties via a shared memory section with the console properties dialog dll. The address of the thread which launches the dialog in the context of the console app is given to the console server the same way as we do for the control handler (called e.g. when you press Ctrl-C, etc...)
Of course this is quite hackish, because you have the GUI interface split between the console server and the console properties dialog dll. Something far more elegant would be to put all the GUI thingie into a dedicated dll or exe, running with the same privileges as the console program itself (a kind of console -- or terminal -- emulator).

[CONSOLE.DLL]
Fix retriving / setting colors.c and other things.

[CONSRV.DLL]
- Fix retrieving / setting console properties from the registry (via the HKCU\Console\* keys), via the shell shortcuts (not totally done at the moment, because somebody has to implement properly that thing : http://msdn.microsoft.com/en-us/library/windows/desktop/bb773359(v=vs.85).aspx (NT_CONSOLE_PROPS structure stored as a shortcut data block) (at application launching time), and via the console properties dialog.
- Few DPRINTs removed.

svn path=/branches/ros-csrss/; revision=58415
2013-03-03 15:35:12 +00:00
Hermès Bélusca-Maïto bdd2cf15af [CONSOLE.DLL]
- Add an icon.
- Fix some labels in the property box and the disposition of controls in english and french resources (not in all because positions change between languages and I've no time synchronizing by hand all the resource files, removing the differences).

svn path=/branches/ros-csrss/; revision=58343
2013-02-19 00:18:37 +00:00
Hermès Bélusca-Maïto a7bd922efb [CONSOLE.DLL]
- Fix edit controls flag style
- Remove that ugly WS_BORDER style to the spin controls.

svn path=/branches/ros-csrss/; revision=58325
2013-02-16 21:39:57 +00:00
Hermès Bélusca-Maïto 4738893a1d [KERNEL32]
Code reorganization only : move the console-related initialization functions into a dedicated file, and create a specific header to hold console function definitions.

svn path=/branches/ros-csrss/; revision=58306
2013-02-10 13:59:09 +00:00
Hermès Bélusca-Maïto f4d53fbd91 [KERNEL32-CONSRV]
- Introduce a CONSOLE_PROPS structure to hold console properties such as its title or startup attributes it should have. Initialized at console application launch time. I have to see how could it be possible to merge this structure with some parts of the GUI_CONSOLE_DATA structure and of the ConsoleInfo structure from console.dll (in /dll/cpl).
- Use a helper function to initialize the CONSOLE_PROPS structure in kernel32, at console app start or when calling AllocConsole.
- In BasepInitConsole, do initialization of CONSOLE_PROPS and related only if we are about to launch a console app.

[CONSRV]
- Adapt CONSOLE_CONNECTION_INFO and CONSOLE_ALLOCCONSOLE structures to take into account CONSOLE_PROPS.
- Fix the way we are setting console titles.
- Add experimental support for loading console properties and title and icon from shell links, thanks to the helper LoadShellLinkInfo. However I'm using there Shell COM facility to extract link properties (I could do it "the RAW way", however I would then know the format of link files, that I don't know and that I don't want to mix up with the console code). Therefore I must add dependencies to uuid and ole32 libraries. Note that icons are used in GUI consoles only (use the PrivateExtractIconExW function to retrieve both handles to the big and small icons at the same time).

Part 1/2

[CONSRV]
- Remove an unuseful xxxInitScreenBuffer function in the virtual functions console table.
- In GUI_CONSOLE_DATA structure and related functions, temporarily explicitely mark which members may be used for both GUI and TUI consoles (for a future simplification).
- Add temporary debug prints when we are setting console icon, to see the flow of calls (will be removed just before merging back to trunk).
- Add temporary debug prints in ConSrvInitConsoleScreenBuffer and ConioDeleteScreenBuffer, to figure out how SBs are initialized.

svn path=/branches/ros-csrss/; revision=58305
2013-02-10 12:36:57 +00:00
Hermès Bélusca-Maïto 00fb4825ec [CONSOLE.CPL]
Convert language resource files to UTF-8

svn path=/branches/ros-csrss/; revision=58275
2013-02-02 22:31:27 +00:00
Hermès Bélusca-Maïto bb519801e2 - Sync with trunk r58248 to bring the latest changes from Amine (headers) and others (hebrew translation, etc...)
- Include only the necessary headers in csrss/csrsrv/basesrv/consrv/winsrv.

svn path=/branches/ros-csrss/; revision=58249
2013-01-28 22:45:53 +00:00
Hermès Bélusca-Maïto 7846f054ff [KERNEL32]
Clean-up IntReadConsoleOutputCode a little bit.

[CONSRV]
Fix a buffer overflow in SrvReadConsoleOutputString, which was translated sometimes into heap corruption and assert, triggered when freeing a remote captured buffer in csrsrv, when executing kernel32_winetest console, just during a call to ReadConsoleOutputCharacterA.
Nevertheless I still keep the culprit code (commented-out now) because it might be useful in the future.

svn path=/branches/ros-csrss/; revision=58229
2013-01-26 19:07:59 +00:00
Hermès Bélusca-Maïto 44782833a8 [CONSRV]
Introduce new helper functions Win32CsrInitHandlesTable and Win32CsrAllocateConsole and use them in many places (in ConsoleConnect, SrvAllocConsole and SrvAttachConsole).

svn path=/branches/ros-csrss/; revision=58184
2013-01-16 22:25:12 +00:00
Hermès Bélusca-Maïto 573e7edb6f [KERNEL32]
Fix support for CONIN$ and CONOUT$, and add support for CON special file
(now, writing to C:\CON or C:\somepath\CONIN$ or C:\anotherpath\CONOUT$ works).

svn path=/branches/ros-csrss/; revision=58182
2013-01-16 00:16:06 +00:00
Hermès Bélusca-Maïto df7477717c [KERNEL32]
- Correct a error return code (in AllocConsole).
- Implement AttachConsole (inspired by AllocConsole).

[CONSRV]
- Correct a error return code (in AllocConsole).
- Introduce helper functions to simplify console-initialization code.
- Implement server-side of AttachConsole (I used pieces of code from ConsoleNewProcess, ConsoleConnect and SrvAllocConsole).

Some debug prints were introduced (for debug-purposes :P), will be removed when all things work.

TODO: have a look on the handles code.

svn path=/branches/ros-csrss/; revision=58166
2013-01-13 17:07:25 +00:00
Hermès Bélusca-Maïto 122303c4ea Sync with trunk r58151 to bring the latest changes from Amine and Timo.
svn path=/branches/ros-csrss/; revision=58152
2013-01-09 20:12:23 +00:00
Hermès Bélusca-Maïto 86fa2ba4e0 [KERNEL32-CONSRV]
Rename some structures (CSRSS_... ---> CONSOLE_...) and clarify what the ConsoleHandle members are for (--> OutputHandle or InputHandle).
No code changes otherwise.

svn path=/branches/ros-csrss/; revision=58119
2013-01-05 23:10:12 +00:00
Hermès Bélusca-Maïto 51aa122e2d Sync with trunk r58113.
svn path=/branches/ros-csrss/; revision=58114
2013-01-04 13:36:15 +00:00
Hermès Bélusca-Maïto e4d97e422f [KERNEL32]
Silent more debug prints and remove an unused DPRINT1 I've introduced in r57666.

svn path=/branches/ros-csrss/; revision=58104
2013-01-03 17:42:27 +00:00
Hermès Bélusca-Maïto e635242284 [KERNEL32/BASESRV]
Remove now unneeded bInheritHandles member / parameter.

svn path=/branches/ros-csrss/; revision=58097
2013-01-01 23:41:42 +00:00
Hermès Bélusca-Maïto d820098fa6 [KERNEL32/BASESRV/CONSRV]
- Fix console apps initialization.
- Introduce a helper function InitConsoleCtrlHandling for initializing console control handling.
- We now initialize the new created console when connecting the client (kernel32) to the server (consrv) by calling CsrClientConnectToServer with real parameters (not dummy ones).
- Add/activate some debug prints (will be removed when all things work).

Part 1/2

svn path=/branches/ros-csrss/; revision=58096
2013-01-01 23:36:19 +00:00
Hermès Bélusca-Maïto c0399e88a6 [KERNEL32/CONSRV]
- Code reorganization.
- In particular, move IsConsoleHandle macro to a place which it can be used by both kernel32 and consrv.

svn path=/branches/ros-csrss/; revision=58063
2012-12-30 21:02:12 +00:00
Hermès Bélusca-Maïto d6769b4364 [KERNEL32-CONSRV]
* HANDLE_TYPE --> CONSOLE_HANDLE_TYPE because it hits "previous" definition of this enumeration (a totally different one from win32ss/include/ntuser.h)
* Temporarily add a dummy member to the CONSOLE_CONNECTION_INFO structure, to make MSVC happy.

svn path=/branches/ros-csrss/; revision=58055
2012-12-30 13:25:50 +00:00
Hermès Bélusca-Maïto dba80b614b Sync with trunk revision r58045 to bring the corrections on configure.cmd and on widl/wpp.
svn path=/branches/ros-csrss/; revision=58046
2012-12-29 20:57:10 +00:00
Hermès Bélusca-Maïto f44e914e80 Sync with trunk r58033.
svn path=/branches/ros-csrss/; revision=58034
2012-12-28 23:37:33 +00:00
Hermès Bélusca-Maïto 3d2c0a805b - Synchronize up to trunk's revision r57864.
- [CONSRV/WINSRV] Add langage definition support.

svn path=/branches/ros-csrss/; revision=57865
2012-12-10 23:01:20 +00:00
Hermès Bélusca-Maïto 0d59b8df65 [KERNEL32]
- Simplify IntGetConsoleInput and IntReadConsole.

[CONSRV]
- Implement event waiting for reading console input buffer with CSR wait blocks. This replaces the event-based waiting which, after being moved from client-side (kernel32) to server-side (see r57721), made all consoles hang when one of them was waiting for new input.

TODO: Dereference all the waits in Console->ReadWaitQueue.

svn path=/branches/ros-csrss/; revision=57817
2012-12-08 00:39:24 +00:00
Hermès Bélusca-Maïto 5127a493a3 [NTDLL/CSRSRV]
Re-fix part of the capture-buffer offset setting, based on what I understood from all my previous investigations. It reverts a little part of r57673 but fixing some existing bugs there.

svn path=/branches/ros-csrss/; revision=57809
2012-12-06 22:24:27 +00:00
Hermès Bélusca-Maïto 190ce5ba55 [NTDLL]
Correct some comments.

svn path=/branches/ros-csrss/; revision=57808
2012-12-06 21:52:09 +00:00
Hermès Bélusca-Maïto 24087a3b01 Synchronize up to trunk's revision r57784.
svn path=/branches/ros-csrss/; revision=57785
2012-11-30 21:32:42 +00:00
Hermès Bélusca-Maïto 2d18c1a929 Synchronize up to trunk's revision r57756.
svn path=/branches/ros-csrss/; revision=57757
2012-11-24 13:02:15 +00:00
Hermès Bélusca-Maïto 60e03ccee8 [KERNEL32]
Deactivate the code of GetConsoleInputWaitHandle, because it calls a function that doesn't seem to appear in the console server apis listed in http://j00ru.vexillium.org/csrss_list/api_list.html (and that I haven't included in the console server apis list), until I find a better solution. It fixes compilation.

[CONSRV]
- Code reorganization
- Introduce the CONSOLE_CONNECTION_INFO structure needed for initializing consoles when launching a program (see http://svn.reactos.org/svn/reactos/trunk/reactos/lib/kernel32/misc/dllmain.c?r1=16826&r2=16825&pathrev=16826), instead of calling AllocConsole. Not used at this time.

Now the branch compiles.

svn path=/branches/ros-csrss/; revision=57749
2012-11-23 19:37:20 +00:00
Hermès Bélusca-Maïto d7bac86452 [NTDLL]
When calling CsrClientConnectToServer with a valid connection info user buffer, after capturing the buffer and calling CsrClientCallServer, do not forget to copy back to the user buffer the updated connection info and to free the capture buffer !

svn path=/branches/ros-csrss/; revision=57743
2012-11-20 22:48:11 +00:00
Hermès Bélusca-Maïto 90229a39a0 [KERNEL32/CONSRV]
- Merge IntWriteConsoleOutputCharacter and WriteConsoleOutputAttribute functions into IntWriteConsoleOutputCode helper functions, which is used inside WriteConsoleOutputAttribute and WriteConsoleOutputCharacterW/A.
- In server-side, merge CsrWriteConsoleOutputChar and CsrWriteConsoleOutputAttrib into the server API SrvWriteConsoleOutputString.
- The structures CSRSS_WRITE_CONSOLE_OUTPUT_CHAR and CSRSS_WRITE_CONSOLE_OUTPUT_ATTRIB are merged into CSRSS_WRITE_CONSOLE_OUTPUT_CODE.

[CONSRV]
- Add a CsrValidateMessageBuffer usage.

svn path=/branches/ros-csrss/; revision=57740
2012-11-19 23:26:36 +00:00
Hermès Bélusca-Maïto ef1e1fc82b [KERNEL32/CONSRV]
- Modify the helper function IntWriteConsole to make it use of capture buffers for passing things to write.
- Now, the loop disappears.
- I moved the pause-event wait (introduced in revision r47359) inside consrv, and (concerning the server-api-part SrvWriteConsole), especially in the ConioWriteConsole function, to be sure that all functions calling ConioWriteConsole become sensible to pause event. This REALLY NEEDS testing (and of course the code needs cleaning of the introduced comments, when I'm sure it works).

svn path=/branches/ros-csrss/; revision=57738
2012-11-19 21:48:22 +00:00
Hermès Bélusca-Maïto e71f1dd200 [KERNEL32/CONSRV]
- Merge IntFillConsoleOutputCharacter and FillConsoleOutputAttribute functions into IntFillConsoleOutputCode helper and make it used by FillConsoleOutputAttribute/CharacterW/A.
- In server-side, CsrFillOutputChar and CsrFillOutputAttrib are merged into SrvFillConsoleOutput.
- Merge CSRSS_FILL_OUTPUT and CSRSS_FILL_OUTPUT_ATTRIB structures into CSRSS_FILL_OUTPUT.

svn path=/branches/ros-csrss/; revision=57734
2012-11-18 17:06:48 +00:00
Hermès Bélusca-Maïto 4b04f7d488 [KERNEL32]
Use new structures and api indices namings.

[CONSRV]
Use CsrValidateMessageBuffer instead of Win32CsrValidateBuffer.

svn path=/branches/ros-csrss/; revision=57729
2012-11-18 13:54:32 +00:00
Hermès Bélusca-Maïto de31fffea8 [KERNEL32/CONSRV]
- Use new structures and api indices namings (as usual).

[CONSRV]
- Merge CSRSS_SET_TITLE and CSRSS_GET_TITLE into CSRSS_CONSOLE_TITLE.
- Merge CSRSS_GET_CONSOLE_(OUTPUT_)CP and CSRSS_SET_CONSOLE_(OUTPUT_)CP into CSRSS_CONSOLE_CP.
- NtDuplicateObject(GetCurrentProcess(), ... ---> NtDuplicateObject(NtCurrentProcess(), ...
- Use CsrValidateMessageBuffer instead of Win32CsrValidateBuffer.
- Use CONSOLE_PROCESS_DATA structure.

TODO: Remove a DPRINT1 checkpoint in SrvAllocConsole after future tests are OK.

svn path=/branches/ros-csrss/; revision=57727
2012-11-18 13:10:03 +00:00
Hermès Bélusca-Maïto 3a0d4c3269 [KERNEL32]
- Add some NULL checks.
- Use new structures and api indices namings.

svn path=/branches/ros-csrss/; revision=57726
2012-11-17 23:45:14 +00:00
Hermès Bélusca-Maïto 1568822b7c [KERNEL32]
- Use new structures and api indices namings.

[CONSRV]
- CSRSS_SET_CURSOR ==> CSRSS_SET_CURSOR_POSITION for SrvSetConsoleCursorPosition.
- Merge CSRSS_GET_CURSOR_INFO and CSRSS_SET_CURSOR_INFO into CSRSS_CURSOR_INFO.

svn path=/branches/ros-csrss/; revision=57725
2012-11-17 23:29:53 +00:00