Uploaded image for project: 'Core ReactOS'
  1. Core ReactOS
  2. CORE-9496

CONSRV: Finally fix CONSOLE vs. CONSRV_CONSOLE/WINSRV_CONSOLE stuff

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: In Progress
    • Priority: Major
    • Resolution: Unresolved
    • Fix Version/s: None
    • Component/s: Win32SS
    • Labels:
      None

      Description

      Long time ago in winsrv.dll, I started to differentiate between CONSOLE and CONSRV/WINSRV_CONSOLE structures. The former is meant to have only the bare functionalities for describing a "console" (and should ultimately go into a driver – condrv – in order to introduce in ReactOS a real console driver model), whereas the latter is something for winsrv.dll only. It should contain everything that is added on top of the bare CONSOLE, such as console titles, palettes, input thread stuff, the "frontend" functionality (i.e. the different look&feel a ReactOS console can have), etc...
      Currently in the code this separation is not finished and because of that we end up in mixed parts of code that sometimes suppose we manipulate CONSOLEs, and just after CONSRV_CONSOLEs (and there are ugly casts done too).

      The aim of this ticket is to clean that up so that we end up with the following:

      - NT console driver: ConDrv:
      CONSOLE = {bare functionality: one input buffer and many output buffers; terminal_interface};
      Should be data-format-agnostic. Suitable for text- and graphics-mode consoles as well as anything else.
       
      - NT console library: ConLib: this is some kind of NCURSES for NT, usable by both Win32 and NT (native) apps.
      It should implement quite generic APIs to use text- and graphics-mode consoles on top of ConDrv.
      Here we should put the old code that is currently found in the consrv\condrv directory.
       
      - Win32 console aka ConSrv (server, part of winsrv) & "Console" (client, part of kernel32):
      CONSRV_CONSOLE = {pointer/handle to CONSOLE; frontend_interface; all the rest};
      Uses ConLib to implement the Win32 console APIs and as such, uses the console driver.

      NOTE: All this work is done in the condrv_restructure branch.
      NOTE2: It appears that http://homepage.ntlworld.com/jonathan.deboynepollard/Proposals/linux-console-daemon.html proposes a similar design (but for Linux).

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                hbelusca hbelusca
                Reporter:
                hbelusca hbelusca
              • Votes:
                1 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated: