2 * Win32 kernel functions
4 * Copyright 1995 Martin von Loewis and Cameron Heide
5 * Copyright 1997 Karl Garrison
17 static CONSOLE_SCREEN_BUFFER_INFO dummyinfo
=
26 /***********************************************************************
27 * SetConsoleCtrlHandler (KERNEL32.459)
29 BOOL32 WINAPI
SetConsoleCtrlHandler(HANDLER_ROUTINE
* func
, BOOL32 a
)
34 /***********************************************************************
35 * CreateConsoleScreenBuffer (KERNEL32.151)
37 HANDLE32 WINAPI
CreateConsoleScreenBuffer( DWORD dwDesiredAccess
,
39 LPSECURITY_ATTRIBUTES lpSecurityAttributes
,
41 LPVOID lpScreenBufferData
)
43 fprintf(stderr
, "CreateConsoleScreenBuffer(): stub !\n");
44 return INVALID_HANDLE_VALUE32
;
47 /***********************************************************************
48 * GetConsoleScreenBufferInfo (KERNEL32.190)
50 BOOL32 WINAPI
GetConsoleScreenBufferInfo( HANDLE32 hConsoleOutput
,
51 LPCONSOLE_SCREEN_BUFFER_INFO csbi
)
55 csbi
->dwCursorPosition
.x
= 0;
56 csbi
->dwCursorPosition
.y
= 0;
57 csbi
->wAttributes
= 0;
58 csbi
->srWindow
.Left
= 0;
59 csbi
->srWindow
.Right
= 79;
60 csbi
->srWindow
.Top
= 0;
61 csbi
->srWindow
.Bottom
= 23;
62 csbi
->dwMaximumWindowSize
.x
= 80;
63 csbi
->dwMaximumWindowSize
.y
= 24;
67 /***********************************************************************
68 * SetConsoleActiveScreenBuffer (KERNEL32.623)
70 BOOL32 WINAPI
SetConsoleActiveScreenBuffer(HANDLE32 hConsoleOutput
)
72 fprintf(stderr
, "SetConsoleActiveScreenBuffer(): stub !\n");
76 /***********************************************************************
77 * GetLargestConsoleWindowSize (KERNEL32.226)
79 DWORD WINAPI
GetLargestConsoleWindowSize( HANDLE32 hConsoleOutput
)
81 return (DWORD
)MAKELONG(dummyinfo
.dwMaximumWindowSize
.x
,dummyinfo
.dwMaximumWindowSize
.y
);
84 /***********************************************************************
85 * GetConsoleCP (KERNEL32.226)
87 UINT32 WINAPI
GetConsoleCP(VOID
)
92 /***********************************************************************
93 * GetConsoleOutputCP (KERNEL32.189)
95 UINT32 WINAPI
GetConsoleOutputCP(VOID
)
97 return GetConsoleCP();
100 /***********************************************************************
101 * GetConsoleMode (KERNEL32.188)
103 BOOL32 WINAPI
GetConsoleMode(HANDLE32 hcon
,LPDWORD mode
)
105 *mode
= ENABLE_PROCESSED_INPUT
|
111 /***********************************************************************
112 * SetConsoleMode (KERNEL32.188)
114 BOOL32 WINAPI
SetConsoleMode(HANDLE32 hcon
,DWORD mode
)
116 fprintf(stdnimp
,"SetConsoleMode(%08x,%08lx)\n",hcon
,mode
);
120 /***********************************************************************
121 * GetConsoleTitleA (KERNEL32.191)
123 DWORD WINAPI
GetConsoleTitle32A(LPSTR title
,DWORD size
)
125 lstrcpyn32A(title
,"Console",size
);
126 return strlen("Console");
129 /***********************************************************************
130 * GetConsoleTitleW (KERNEL32.192)
132 DWORD WINAPI
GetConsoleTitle32W(LPWSTR title
,DWORD size
)
134 lstrcpynAtoW(title
,"Console",size
);
135 return strlen("Console");
138 /***********************************************************************
139 * WriteConsoleA (KERNEL32.729)
141 BOOL32 WINAPI
WriteConsole32A( HANDLE32 hConsoleOutput
,
143 DWORD nNumberOfCharsToWrite
,
144 LPDWORD lpNumberOfCharsWritten
,
147 *lpNumberOfCharsWritten
= fprintf( stderr
, "%.*s",
148 (int)nNumberOfCharsToWrite
,
153 /***********************************************************************
154 * WriteConsoleOutputA (KERNEL32.732)
156 BOOL32 WINAPI
WriteConsoleOutput32A( HANDLE32 hConsoleOutput
,
157 LPCHAR_INFO lpBuffer
,
160 LPSMALL_RECT lpWriteRegion
)
165 /***********************************************************************
166 * WriteConsoleW (KERNEL32.577)
168 BOOL32 WINAPI
WriteConsole32W( HANDLE32 hConsoleOutput
,
170 DWORD nNumberOfCharsToWrite
,
171 LPDWORD lpNumberOfCharsWritten
,
174 LPSTR buf
= HEAP_strdupWtoA( GetProcessHeap(), 0, lpBuffer
);
175 *lpNumberOfCharsWritten
= fprintf( stderr
, "%.*s",
176 (int)nNumberOfCharsToWrite
, buf
);
177 HeapFree( GetProcessHeap(), 0, buf
);
181 /***********************************************************************
182 * ReadConsoleA (KERNEL32.419)
184 BOOL32 WINAPI
ReadConsole32A( HANDLE32 hConsoleInput
,
186 DWORD nNumberOfCharsToRead
,
187 LPDWORD lpNumberOfCharsRead
,
190 fgets(lpBuffer
,nNumberOfCharsToRead
,stdin
);
191 *lpNumberOfCharsRead
= strlen(lpBuffer
);
195 /***********************************************************************
196 * ReadConsoleW (KERNEL32.427)
198 BOOL32 WINAPI
ReadConsole32W( HANDLE32 hConsoleInput
,
200 DWORD nNumberOfCharsToRead
,
201 LPDWORD lpNumberOfCharsRead
,
204 LPSTR buf
= (LPSTR
)HEAP_xalloc( GetProcessHeap(), 0, nNumberOfCharsToRead
);
205 fgets(buf
,nNumberOfCharsToRead
,stdin
);
206 lstrcpynAtoW(lpBuffer
,buf
,nNumberOfCharsToRead
);
207 *lpNumberOfCharsRead
= strlen(buf
);
208 HeapFree( GetProcessHeap(), 0, buf
);
212 /***********************************************************************
213 * SetConsoleTitle32A (KERNEL32.476)
215 BOOL32 WINAPI
SetConsoleTitle32A(LPCSTR title
)
217 fprintf(stderr
,"SetConsoleTitle(%s)\n",title
);
221 /***********************************************************************
222 * SetConsoleTitle32W (KERNEL32.477)
224 BOOL32 WINAPI
SetConsoleTitle32W( LPCWSTR title
)
226 LPSTR titleA
= HEAP_strdupWtoA( GetProcessHeap(), 0, title
);
227 fprintf(stderr
,"SetConsoleTitle(%s)\n",titleA
);
228 HeapFree( GetProcessHeap(), 0, titleA
);
232 /***********************************************************************
233 * FlushConsoleInputBuffer (KERNEL32.132)
235 BOOL32 WINAPI
FlushConsoleInputBuffer(HANDLE32 hConsoleInput
)
237 fprintf(stderr
,"FlushConsoleInputBuffer(%d)\n",hConsoleInput
);
241 BOOL32 WINAPI
SetConsoleCursorPosition(HANDLE32 hcons
,COORD c
)
243 /* x are columns, y rows */
245 fprintf(stderr
,"\r");
247 fprintf(stderr
,"\e[%dC",c
.x
);
250 /* handle rest of the cases */
254 /***********************************************************************
255 * GetNumberOfConsoleInputEvents (KERNEL32.246)
257 BOOL32 WINAPI
GetNumberOfConsoleInputEvents(HANDLE32 hcon
,LPDWORD nrofevents
)
263 /***********************************************************************
264 * GetNumberOfConsoleMouseButtons (KERNEL32.358)
266 BOOL32 WINAPI
GetNumberOfConsoleMouseButtons(LPDWORD nrofbuttons
)
269 fprintf(stderr
,"GetNumberOfConsoleMouseButtons: STUB returning 2\n");
273 /***********************************************************************
274 * PeekConsoleInputA (KERNEL32.550)
276 BOOL32 WINAPI
PeekConsoleInput32A(HANDLE32 hConsoleInput
,
277 LPINPUT_RECORD pirBuffer
,
284 fprintf(stderr
,"PeekConsoleInput32A: STUB returning TRUE\n");
288 /***********************************************************************
289 * PeekConsoleInputW (KERNEL32.551)
291 BOOL32 WINAPI
PeekConsoleInput32W(HANDLE32 hConsoleInput
,
292 LPINPUT_RECORD pirBuffer
,
299 fprintf(stderr
,"PeekConsoleInput32W: STUB returning TRUE\n");
303 /***********************************************************************
304 * GetConsoleCursorInfo32 (KERNEL32.296)
306 BOOL32 WINAPI
GetConsoleCursorInfo32(HANDLE32 hcon
, LPDWORD cinfo
)
308 cinfo
[0] = 10; /* 10% of character box is cursor. */
309 cinfo
[1] = TRUE
; /* Cursor is visible. */
310 fprintf (stdnimp
, "GetConsoleCursorInfo32 -- STUB!\n");
314 /***********************************************************************
315 * SetConsoleCursorInfo32 (KERNEL32.626)
317 BOOL32 WINAPI
SetConsoleCursorInfo32(HANDLE32 hcon
, LPDWORD cinfo
)
319 fprintf (stdnimp
, "SetConsoleCursorInfo32 -- STUB!\n");