ReactOS 0.4.15-dev-7660-g0086d05
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
17extern "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
26IN = CONIN$ = stdin
27OUT = CONOUT$ = stdout
28ERR = 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
110L"\Connect"
111L"\Reference"
112L"\Server"
113L"\Broker"
114
115L"\Console"
116L"\Display"
117
118L"\Input"
119L"\Output"
120L"\CurrentIn"
121L"\CurrentOut"
122L"\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 */