ReactOS  0.4.14-dev-815-ge410a12
ntddcon.h
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: ReactOS Console Driver
4  * FILE: include/reactos/drivers/condrv/ntddcon.h
5  * PURPOSE: Console Driver IOCTL Interface
6  * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
7  */
8 
9 #if (_MSC_VER >= 1020)
10 #pragma once
11 #endif
12 
13 #ifndef _NTDDCON_H_
14 #define _NTDDCON_H_
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 // FIXME: Redo all the drawing since this one is quite old...
21 
22 /************************************************************************************************
23  * Architecture of the Generic Terminal Driver
24  ************************************************************************************************
25 
26 IN = CONIN$ = stdin
27 OUT = CONOUT$ = stdout
28 ERR = stderr
29 
30  +------------------------------+
31  +-------------+ | +-----------------+ |
32  | |----- ERR ---->| |------+ |
33  | Console App |----- OUT ---->| Virtual Console |----+ | |
34  | 1 |<---- IN -----| 1-1 |--+ | | |
35  +-------------+ | +-----------------+ | | | |
36  | | | \ |
37  +-------------+ | +-----------------+ | | >--X----- ERR ---->
38  | |----- ERR ---->| |--|-|-/ |
39  | Console App |----- OUT ---->| Virtual Console |--|-+-----X----- OUT ---->
40  | 2 |<---- IN -----| 1-2 |--+---\ |
41  +-------------+ ^ | +-----------------+ \--X<---- IN -----
42  | | | ^
43  --+ | | . . . | |
44 \Console +-- \CurrentIn | | | | |
45  +-- \CurrentOut +----+ | | |
46  \CurrentErr | | Terminal 1 | |
47  --+ | | |
48  +------------------------------+ |
49  |
50  +----+----+
51  . . . | \Input |
52  \Output
53  \Error
54 
55 */
56 
57 /*
58  * Remarks on the symbolic links :
59  *
60  * - \DosDevices\ is an alias to \??\
61  *
62  * - Using "\DosDevices\Global<name>" allows the driver to ALWAYS
63  * create the symbolic link in the global object namespace. Indeed,
64  * under Windows NT-2000, the \DosDevices\ directory was always
65  * global, but starting with Windows XP, it became local to a session.
66  * One would then use \GLOBAL??\ to access to the global directory.
67  * However, this name doesn't exist under Windows NT-2000.
68  * Therefore, we use the trick to use the 'Global' symbolic link
69  * defined both under Windows NT-2000 and Windows XP and later,
70  * which exists in \DosDevices\, to access to \??\ (global) under
71  * Windows NT-2000, and to \GLOBAL??\ under Windows XP and later.
72  */
73 
74 //
75 // Controller device
76 //
77 #define DD_CONDRV_CTRL_DEVICE_NAME "\\Device\\ConDrv"
78 #define DD_CONDRV_CTRL_DEVICE_NAME_U L"\\Device\\ConDrv"
79 #define DD_CONDRV_CTRL_SYMLNK_NAME "\\DosDevices\\Global\\ConDrv"
80 #define DD_CONDRV_CTRL_SYMLNK_NAME_U L"\\DosDevices\\Global\\ConDrv"
81 
82 
83 //
84 // Console
85 //
86 #define DD_CONDRV_CONSOLE_DEVICE_NAME "\\Device\\Console"
87 #define DD_CONDRV_CONSOLE_DEVICE_NAME_U L"\\Device\\Console"
88 #define DD_CONDRV_CONSOLE_SYMLNK_NAME "\\DosDevices\\Global\\Console"
89 #define DD_CONDRV_CONSOLE_SYMLNK_NAME_U L"\\DosDevices\\Global\\Console"
90 
91 
92 #ifdef TELETYPE
93 //
94 // Virtual files associated with a given console
95 //
96 #define CONDRV_CONSOLE_FILE_CURRIN "\\CurrentIn"
97 #define CONDRV_CONSOLE_FILE_CURRIN_U L"\\CurrentIn"
98 
99 #define CONDRV_CONSOLE_FILE_CURROUT "\\CurrentOut"
100 #define CONDRV_CONSOLE_FILE_CURROUT_U L"\\CurrentOut"
101 
102 //#define CONDRV_CONSOLE_FILE_CURRERR "\\CurrentErr"
103 //#define CONDRV_CONSOLE_FILE_CURRERR_U L"\\CurrentErr"
104 
105 #define CONDRV_VC_FILE_SCRBUF "\\ScreenBuffer"
106 #define CONDRV_VC_FILE_SCRBUF_U L"\\ScreenBuffer"
107 
108 /*** Original names from Windows-8 condrv.sys ***
109 
110 L"\Connect"
111 L"\Reference"
112 L"\Server"
113 L"\Broker"
114 
115 L"\Console"
116 L"\Display"
117 
118 L"\Input"
119 L"\Output"
120 L"\CurrentIn"
121 L"\CurrentOut"
122 L"\ScreenBuffer"
123 
124 ***/
125 
126 #endif
127 
128 
129 //
130 // IO codes
131 //
132 #ifndef CTL_CODE
133  #error "CTL_CODE undefined. Include winioctl.h or wdm.h"
134 #endif
135 
136 #define IOCTL_CONDRV_CREATE_CONSOLE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_BUFFERED, FILE_ALL_ACCESS)
137 #define IOCTL_CONDRV_DELETE_CONSOLE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x802, METHOD_BUFFERED, FILE_WRITE_ACCESS)
138 
139 #ifdef __cplusplus
140 }
141 #endif
142 
143 #endif // _NTDDCON_H_
144 
145 /* EOF */