4 HANDLE StdInput
= NULL
;
5 HANDLE StdOutput
= NULL
;
6 HANDLE StdError
= NULL
;
11 #define FSCTL_GET_CONSOLE_SCREEN_BUFFER_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 254, DO_DIRECT_IO, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
12 #define FSCTL_SET_CONSOLE_SCREEN_BUFFER_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 255, DO_DIRECT_IO, FILE_READ_ACCESS|FILE_WRITE_ACCESS)
20 if ( nStdHandle
== STD_INPUT_HANDLE
)
22 if ( nStdHandle
== STD_OUTPUT_HANDLE
)
24 if ( nStdHandle
== STD_ERROR_HANDLE
)
27 if ( nStdHandle == STD_AUX_HANDLE )
29 if ( nStdHandle == STD_PRINT_HANDLE )
39 HANDLE hConsoleOutput
,
41 DWORD nNumberOfCharsToWrite
,
42 LPDWORD lpNumberOfCharsWritten
,
46 return WriteFile(hConsoleOutput
, lpBuffer
, nNumberOfCharsToWrite
,lpNumberOfCharsWritten
, lpReserved
);
55 DWORD nNumberOfCharsToRead
,
56 LPDWORD lpNumberOfCharsRead
,
60 return ReadFile(hConsoleInput
,lpBuffer
,nNumberOfCharsToRead
,lpNumberOfCharsRead
,lpReserved
);
67 StdInput
= CreateFile("\\Keyboard",
75 StdOutput
= CreateFile("\\BlueScreen",
76 FILE_GENERIC_WRITE
|FILE_GENERIC_READ
,
99 GetConsoleScreenBufferInfo(
100 HANDLE hConsoleOutput
,
101 PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
104 DWORD dwBytesReturned
;
105 if( !DeviceIoControl(hConsoleOutput
,
106 FSCTL_GET_CONSOLE_SCREEN_BUFFER_INFO
,
108 lpConsoleScreenBufferInfo
,sizeof(CONSOLE_SCREEN_BUFFER_INFO
),&dwBytesReturned
,NULL
))
116 SetConsoleCursorPosition(
117 HANDLE hConsoleOutput
,
118 COORD dwCursorPosition
121 DWORD dwBytesReturned
;
122 CONSOLE_SCREEN_BUFFER_INFO ConsoleScreenBufferInfo
;
124 if( !GetConsoleScreenBufferInfo(hConsoleOutput
,&ConsoleScreenBufferInfo
) )
126 // ConsoleScreenBufferInfo.dwCursorPosition.X = dwCursorPosition.X;
127 // ConsoleScreenBufferInfo.dwCursorPosition.Y = dwCursorPosition.Y;
129 if( !DeviceIoControl(
131 FSCTL_SET_CONSOLE_SCREEN_BUFFER_INFO
,
132 &ConsoleScreenBufferInfo
,
133 sizeof(CONSOLE_SCREEN_BUFFER_INFO
),
145 FillConsoleOutputCharacterA(
146 HANDLE hConsoleOutput
,
150 LPDWORD lpNumberOfCharsWritten
153 return FillConsoleOutputCharacterW(hConsoleOutput
,
154 (WCHAR
) cCharacter
,nLength
, dwWriteCoord
,lpNumberOfCharsWritten
);
159 FillConsoleOutputCharacterW(
160 HANDLE hConsoleOutput
,
164 LPDWORD lpNumberOfCharsWritten