00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#if DBG && defined(DEBUG_PRINT)
00023
#define _DBGFONTS 0x00000001
00024
#define _DBGFONTS2 0x00000002
00025
#define _DBGCHARS 0x00000004
00026
#define _DBGOUTPUT 0x00000008
00027
#define _DBGFULLSCR 0x00000008
00028
#define _DBGALL 0xFFFFFFFF
00029
extern ULONG gDebugFlag;
00030
00031
#define DBGFONTS(_params_) {if (gDebugFlag & _DBGFONTS) DbgPrint _params_ ; }
00032
#define DBGFONTS2(_params_) {if (gDebugFlag & _DBGFONTS2) DbgPrint _params_ ; }
00033
#define DBGCHARS(_params_) {if (gDebugFlag & _DBGCHARS) DbgPrint _params_ ; }
00034
#define DBGOUTPUT(_params_) {if (gDebugFlag & _DBGOUTPUT) DbgPrint _params_ ; }
00035
#define DBGFULLSCR(_params_) {if (gDebugFlag & _DBGFULLSCR)DbgPrint _params_ ; }
00036
#define DBGPRINT(_params_) DbgPrint _params_
00037
#else
00038 #define DBGFONTS(_params_)
00039 #define DBGFONTS2(_params_)
00040 #define DBGCHARS(_params_)
00041 #define DBGOUTPUT(_params_)
00042 #define DBGFULLSCR(_params_)
00043 #define DBGPRINT(_params_)
00044
#endif
00045
00046
#ifdef LATER
00047
#if DBG
00048
#undef RIP_COMPONENT
00049
#define RIP_COMPONENT RIP_CONSRV
00050
#undef ASSERT
00051
#define ASSERT(exp) UserAssert(exp)
00052
#endif
00053
#endif
00054
00055 #define CONSOLE_MAX_FONT_NAME_LENGTH 256
00056
00057 #define DATA_CHUNK_SIZE 8192
00058
00059
00060 #define MAKE_TAG( t ) (RTL_HEAP_MAKE_TAG( dwConBaseTag, t ))
00061
00062 #define TMP_TAG 0
00063 #define BMP_TAG 1
00064 #define ALIAS_TAG 2
00065 #define HISTORY_TAG 3
00066 #define TITLE_TAG 4
00067 #define HANDLE_TAG 5
00068 #define CONSOLE_TAG 6
00069 #define ICON_TAG 7
00070 #define BUFFER_TAG 8
00071 #define WAIT_TAG 9
00072 #define FONT_TAG 10
00073 #define SCREEN_TAG 11
00074
#if defined(FE_SB)
00075
#define TMP_DBCS_TAG 12
00076
#define SCREEN_DBCS_TAG 13
00077
#define EUDC_TAG 14
00078
#define CONVAREA_TAG 15
00079
#define IME_TAG 16
00080
#endif
00081
00082
00083 #define GetWindowConsole(hWnd) (PCONSOLE_INFORMATION)GetWindowLongPtr((hWnd), GWLP_USERDATA)
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 #define SetConsoleBkColor(hw,clr) SetWindowLong(hw, GWL_CONSOLE_BKCOLOR, clr)
00094 #define SetConsolePid(hw,pid) SetWindowLong(hw, GWL_CONSOLE_PID, pid)
00095 #define SetConsoleTid(hw,tid) SetWindowLong(hw, GWL_CONSOLE_TID, tid)
00096
00097
00098
00099
00100
00101 #define NELEM(array) (sizeof(array)/sizeof(array[0]))
00102
00103
00104 __inline
BYTE SCR_FAMILY(
PSCREEN_INFORMATION pScreen) {
00105
return pScreen->
BufferInfo.TextInfo.CurrentTextBufferFont.Family;
00106 }
00107
00108 __inline
DWORD SCR_FONTNUMBER(
PSCREEN_INFORMATION pScreen) {
00109
return pScreen->
BufferInfo.TextInfo.CurrentTextBufferFont.FontNumber;
00110 }
00111
00112 __inline LPWSTR
SCR_FACENAME(
PSCREEN_INFORMATION pScreen) {
00113
return pScreen->
BufferInfo.TextInfo.CurrentTextBufferFont.FaceName;
00114 }
00115
00116 __inline COORD
SCR_FONTSIZE(
PSCREEN_INFORMATION pScreen) {
00117
return pScreen->
BufferInfo.TextInfo.CurrentTextBufferFont.FontSize;
00118 }
00119
00120 __inline LONG
SCR_FONTWEIGHT(
PSCREEN_INFORMATION pScreen) {
00121
return pScreen->
BufferInfo.TextInfo.CurrentTextBufferFont.Weight;
00122 }
00123
00124 __inline
UINT SCR_FONTCODEPAGE(
PSCREEN_INFORMATION pScreen) {
00125
return pScreen->
BufferInfo.TextInfo.CurrentTextBufferFont.FontCodePage;
00126 }
00127
00128
00129
00130 #define CON_FAMILY(pCon) SCR_FAMILY((pCon)->CurrentScreenBuffer)
00131 #define CON_FONTNUMBER(pCon) SCR_FONTNUMBER((pCon)->CurrentScreenBuffer)
00132 #define CON_FACENAME(pCon) SCR_FACENAME((pCon)->CurrentScreenBuffer)
00133 #define CON_FONTSIZE(pCon) SCR_FONTSIZE((pCon)->CurrentScreenBuffer)
00134 #define CON_FONTWEIGHT(pCon) SCR_FONTWEIGHT((pCon)->CurrentScreenBuffer)
00135 #define CON_FONTCODEPAGE(pCon) SCR_FONTCODEPAGE((pCon)->CurrentScreenBuffer)
00136
00137
#if defined(FE_SB)
00138
00139
extern BOOLEAN gfIsDBCSACP;
00140
00141
#define CONSOLE_IS_DBCS_ENABLED() (gfIsDBCSACP)
00142
#define CONSOLE_IS_IME_ENABLED() (gfIsDBCSACP)
00143
00144
#define CONSOLE_IS_DBCS_OUTPUTCP(Console) ((Console)->fIsDBCSOutputCP)
00145
#define CONSOLE_IS_DBCS_CP(Console) ((Console)->fIsDBCSCP)
00146
00147
#else // FE_SB
00148
00149 #define CONSOLE_IS_DBCS_ENABLED() (FALSE)
00150 #define CONSOLE_IS_IME_ENABLED() (FALSE)
00151
00152
#endif // FE_SB
00153
00154
#ifdef UNICODE
00155
#define LoadStringEx LoadStringExW
00156
#else
00157 #define LoadStringEx LoadStringExA
00158
#endif
00159
00160
00161
00162
00163
00164 extern PWIN32HEAP
pConHeap;
00165 extern DWORD dwConBaseTag;
00166
00167
00168
00169
00170
00171 #define ValidateConsoleHeap() \
00172
if (NtCurrentPeb()->BeingDebugged) { \
00173
RtlValidateHeap(Win32HeapGetHandle(pConHeap), 0, NULL); \
00174
}
00175
00176
00177
00178
00179
00180 #define ConsoleHeapAlloc(Flags, Size) \
00181
Win32HeapAlloc(pConHeap, Size, Flags, Flags)
00182
00183 #define ConsoleHeapReAlloc(Flags, Address, Size) \
00184
Win32HeapReAlloc(pConHeap, Address, Size, Flags)
00185
00186
#if DBG
00187
#define ConsoleHeapFree(Address) \
00188
{ \
00189
Win32HeapFree(pConHeap, Address); \
00190
Address = (PVOID)0xBAADF00D; \
00191
}
00192
#else
00193 #define ConsoleHeapFree(Address) \
00194
{ \
00195
Win32HeapFree(pConHeap, Address); \
00196
}
00197
#endif
00198
00199 #define ConsoleHeapSize(Address) \
00200
Win32HeapSize(pConHeap, Address)
00201
00202
00203
00204
00205
00206
NTSTATUS
00207
ConsoleAddProcessRoutine(
00208 IN PCSR_PROCESS ParentProcess,
00209 IN PCSR_PROCESS Process
00210 );
00211
00212
NTSTATUS
00213
DereferenceConsoleHandle(
00214 IN HANDLE ConsoleHandle,
00215 OUT
PCONSOLE_INFORMATION *Console
00216 );
00217
00218
NTSTATUS
00219
AllocateConsoleHandle(
00220 OUT PHANDLE Handle
00221 );
00222
00223
NTSTATUS
00224
FreeConsoleHandle(
00225 IN HANDLE Handle
00226 );
00227
00228
NTSTATUS
00229
ValidateConsole(
00230 IN
PCONSOLE_INFORMATION Console
00231 );
00232
00233
NTSTATUS
00234
ApiPreamble(
00235 IN HANDLE ConsoleHandle,
00236 OUT
PCONSOLE_INFORMATION *Console
00237 );
00238
00239
NTSTATUS
00240
RevalidateConsole(
00241 IN HANDLE ConsoleHandle,
00242 OUT
PCONSOLE_INFORMATION *Console
00243 );
00244
00245
NTSTATUS
00246
InitializeConsoleHandleTable( VOID );
00247
00248
#ifdef DEBUG
00249
00250
VOID LockConsoleHandleTable(VOID);
00251
VOID UnlockConsoleHandleTable(VOID);
00252
VOID LockConsole(
00253 IN
PCONSOLE_INFORMATION Console
00254 );
00255
00256
#else
00257
00258 #define LockConsoleHandleTable() RtlEnterCriticalSection(&ConsoleHandleLock)
00259 #define UnlockConsoleHandleTable() RtlLeaveCriticalSection(&ConsoleHandleLock)
00260 #define LockConsole(Con) RtlEnterCriticalSection(&(Con)->ConsoleLock)
00261
00262
#endif
00263
00264 #define ConvertAttrToRGB(Con, Attr) ((Con)->ColorTable[(Attr) & 0x0F])
00265
00266
00267 BOOLEAN
00268
UnProtectHandle(
00269 HANDLE hObject
00270 );
00271
00272
NTSTATUS
00273
AllocateConsole(
00274 IN HANDLE ConsoleHandle,
00275 IN LPWSTR Title,
00276 IN USHORT TitleLength,
00277 IN HANDLE ClientProcessHandle,
00278 OUT PHANDLE StdIn,
00279 OUT PHANDLE StdOut,
00280 OUT PHANDLE StdErr,
00281 OUT
PCONSOLE_PER_PROCESS_DATA ProcessData,
00282 IN OUT
PCONSOLE_INFO ConsoleInfo,
00283 IN BOOLEAN WindowVisible,
00284 IN DWORD ConsoleThreadId
00285 );
00286
00287
VOID
00288
DestroyConsole(
00289 IN
PCONSOLE_INFORMATION Console
00290 );
00291
00292
VOID
00293
FreeCon(
00294 IN
PCONSOLE_INFORMATION Console
00295 );
00296
00297
VOID
00298
InsertScreenBuffer(
00299 IN
PCONSOLE_INFORMATION Console,
00300 IN
PSCREEN_INFORMATION ScreenInfo
00301 );
00302
00303
VOID
00304
RemoveScreenBuffer(
00305 IN
PCONSOLE_INFORMATION Console,
00306 IN
PSCREEN_INFORMATION ScreenInfo
00307 );
00308
00309
VOID
00310
FreeProcessData(
00311 IN
PCONSOLE_PER_PROCESS_DATA ProcessData
00312 );
00313
00314
NTSTATUS
00315
AllocateIoHandle(
00316 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
00317 IN ULONG HandleType,
00318 OUT PHANDLE Handle
00319 );
00320
00321
NTSTATUS
00322
GrowIoHandleTable(
00323 IN
PCONSOLE_PER_PROCESS_DATA ProcessData
00324 );
00325
00326
NTSTATUS
00327
FreeIoHandle(
00328 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
00329 IN HANDLE Handle
00330 );
00331
00332
NTSTATUS
00333
DereferenceIoHandleNoCheck(
00334 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
00335 IN HANDLE Handle,
00336 OUT
PHANDLE_DATA *HandleData
00337 );
00338
00339
NTSTATUS
00340
DereferenceIoHandle(
00341 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
00342 IN HANDLE Handle,
00343 IN ULONG HandleType,
00344 IN ACCESS_MASK Access,
00345 OUT
PHANDLE_DATA *HandleData
00346 );
00347
00348 BOOLEAN
00349
InitializeInputHandle(
00350
PHANDLE_DATA HandleData,
00351
PINPUT_INFORMATION InputBuffer
00352 );
00353
00354
VOID
00355
InitializeOutputHandle(
00356
PHANDLE_DATA HandleData,
00357
PSCREEN_INFORMATION ScreenBuffer
00358 );
00359
00360 ULONG
00361
SrvVerifyConsoleIoHandle(
00362 IN OUT PCSR_API_MSG m,
00363 IN OUT PCSR_REPLY_STATUS ReplyStatus
00364 );
00365
00366
00367
00368
00369
00370
NTSTATUS
00371
ConsoleAddShare(
00372 IN ACCESS_MASK DesiredAccess,
00373 IN ULONG DesiredShareAccess,
00374 IN OUT
PCONSOLE_SHARE_ACCESS ShareAccess,
00375 IN OUT
PHANDLE_DATA HandleData
00376 );
00377
00378
00379
NTSTATUS
00380
ConsoleDupShare(
00381 IN ACCESS_MASK DesiredAccess,
00382 IN ULONG DesiredShareAccess,
00383 IN OUT
PCONSOLE_SHARE_ACCESS ShareAccess,
00384 IN OUT
PHANDLE_DATA TargetHandleData
00385 );
00386
00387
00388
NTSTATUS
00389
ConsoleRemoveShare(
00390 IN ULONG DesiredAccess,
00391 IN ULONG DesiredShareAccess,
00392 IN OUT
PCONSOLE_SHARE_ACCESS ShareAccess
00393 );
00394
00395
00396
00397
00398
00399
VOID
00400
DoFind(
00401 IN
PCONSOLE_INFORMATION Console
00402 );
00403
00404
00405
00406
00407
00408
VOID
00409
ScrollScreen(
00410 IN
PSCREEN_INFORMATION ScreenInfo,
00411 IN PSMALL_RECT ScrollRect,
00412 IN PSMALL_RECT MergeRect,
00413 IN COORD TargetPoint
00414 );
00415
00416
VOID
00417
SetProcessForegroundRights(
00418 IN PCSR_PROCESS Process,
00419 IN BOOL Foreground
00420 );
00421
00422
VOID
00423
SetProcessFocus(
00424 IN PCSR_PROCESS Process,
00425 IN BOOL Foreground
00426 );
00427
00428
VOID
00429
ModifyConsoleProcessFocus(
00430 IN
PCONSOLE_INFORMATION Console,
00431 IN BOOL Foreground
00432 );
00433
00434
VOID
00435
InitializeSystemMetrics( VOID );
00436
00437
VOID
00438
InitializeScreenInfo( VOID );
00439
00440
NTSTATUS
00441
ReadScreenBuffer(
00442 IN
PSCREEN_INFORMATION ScreenInformation,
00443 OUT PCHAR_INFO Buffer,
00444 IN OUT PSMALL_RECT ReadRegion
00445 );
00446
00447
NTSTATUS
00448
WriteScreenBuffer(
00449 IN
PSCREEN_INFORMATION ScreenInformation,
00450 OUT PCHAR_INFO Buffer,
00451 IN OUT PSMALL_RECT WriteRegion
00452 );
00453
00454
NTSTATUS
00455
DoCreateScreenBuffer(
00456 IN
PCONSOLE_INFORMATION Console,
00457 IN
PCONSOLE_INFO ConsoleInfo
00458 );
00459
00460
NTSTATUS
00461
CreateScreenBuffer(
00462 OUT
PSCREEN_INFORMATION *ScreenInformation,
00463 IN COORD dwWindowSize OPTIONAL,
00464 IN DWORD nFont OPTIONAL,
00465 IN COORD dwScreenBufferSize OPTIONAL,
00466 IN CHAR_INFO Fill,
00467 IN CHAR_INFO PopupFill,
00468 IN
PCONSOLE_INFORMATION Console,
00469 IN DWORD Flags,
00470 IN PCONSOLE_GRAPHICS_BUFFER_INFO GraphicsBufferInfo OPTIONAL,
00471 OUT PVOID *lpBitmap,
00472 OUT HANDLE *hMutex,
00473 IN UINT CursorSize,
00474 IN LPWSTR FaceName
00475 );
00476
00477
VOID
00478
AbortCreateConsole(
00479 IN
PCONSOLE_INFORMATION Console
00480 );
00481
00482
NTSTATUS
00483
CreateWindowsWindow(
00484 IN
PCONSOLE_INFORMATION Console
00485 );
00486
00487
VOID
00488
DestroyWindowsWindow(
00489 IN
PCONSOLE_INFORMATION Console
00490 );
00491
00492
NTSTATUS
00493
FreeScreenBuffer(
00494 IN
PSCREEN_INFORMATION ScreenInformation
00495 );
00496
00497
NTSTATUS
00498
ReadOutputString(
00499 IN
PSCREEN_INFORMATION ScreenInfo,
00500 OUT PVOID Buffer,
00501 IN COORD ReadCoord,
00502 IN ULONG StringType,
00503 IN OUT PULONG NumRecords
00504 );
00505
00506
NTSTATUS
00507
InitializeScrollBuffer( VOID );
00508
00509
NTSTATUS
00510
GetScreenBufferInformation(
00511 IN
PSCREEN_INFORMATION ScreenInfo,
00512 OUT PCOORD Size,
00513 OUT PCOORD CursorPosition,
00514 OUT PCOORD ScrollPosition,
00515 OUT PWORD Attributes,
00516 OUT PCOORD CurrentWindowSize,
00517 OUT PCOORD MaximumWindowSize
00518 );
00519
00520
VOID
00521
GetWindowLimits(
00522 IN
PSCREEN_INFORMATION ScreenInfo,
00523 OUT
PWINDOW_LIMITS WindowLimits
00524 );
00525
00526
NTSTATUS
00527
ResizeWindow(
00528 IN
PSCREEN_INFORMATION ScreenInfo,
00529 IN PSMALL_RECT WindowDimensions,
00530 IN BOOL DoScrollBarUpdate
00531 );
00532
00533
NTSTATUS
00534
ResizeScreenBuffer(
00535 IN
PSCREEN_INFORMATION ScreenInfo,
00536 IN COORD NewScreenSize,
00537 IN BOOL DoScrollBarUpdate
00538 );
00539
00540
NTSTATUS
00541
ScrollRegion(
00542 IN
PSCREEN_INFORMATION ScreenInfo,
00543 IN PSMALL_RECT ScrollRectangle,
00544 IN PSMALL_RECT ClipRectangle OPTIONAL,
00545 IN COORD DestinationOrigin,
00546 IN CHAR_INFO Fill
00547 );
00548
00549
NTSTATUS
00550
SetWindowOrigin(
00551 IN
PSCREEN_INFORMATION ScreenInfo,
00552 IN BOOLEAN Absolute,
00553 IN OUT COORD WindowOrigin
00554 );
00555
00556
VOID
00557
SetWindowSize(
00558 IN
PSCREEN_INFORMATION ScreenInfo
00559 );
00560
00561
NTSTATUS
00562
SetActiveScreenBuffer(
00563 IN
PSCREEN_INFORMATION ScreenInfo
00564 );
00565
00566
NTSTATUS
00567
QueueConsoleMessage(
00568
PCONSOLE_INFORMATION Console,
00569 UINT Message,
00570 WPARAM wParam,
00571 LPARAM lParam
00572 );
00573
00574 LRESULT
APIENTRY
00575
ConsoleWindowProc(
00576 HWND hWnd,
00577 UINT Message,
00578 WPARAM wParam,
00579 LPARAM lParam
00580 );
00581
00582
VOID
00583
VerticalScroll(
00584 IN
PCONSOLE_INFORMATION Console,
00585 IN
PSCREEN_INFORMATION ScreenInfo,
00586 IN WORD ScrollCommand,
00587 IN WORD AbsoluteChange
00588 );
00589
00590
VOID
00591
HorizontalScroll(
00592 IN
PSCREEN_INFORMATION ScreenInfo,
00593 IN WORD ScrollCommand,
00594 IN WORD AbsoluteChange
00595 );
00596
00597
VOID
00598
StreamScrollRegion(
00599 IN
PSCREEN_INFORMATION ScreenInfo
00600 );
00601
00602
#if defined(FE_SB)
00603
VOID
00604
FindAttrIndex(
00605 IN
PATTR_PAIR String,
00606 IN SHORT Index,
00607 OUT
PATTR_PAIR *IndexedAttr,
00608 OUT PSHORT CountOfAttr
00609 );
00610
00611
VOID
00612
UpdateComplexRegion(
00613 IN
PSCREEN_INFORMATION ScreenInfo,
00614 IN COORD FontSize
00615 );
00616
00617
SHORT
00618
ScrollEntireScreen(
00619 IN
PSCREEN_INFORMATION ScreenInfo,
00620 IN SHORT ScrollValue,
00621 IN BOOL UpdateRowIndex
00622 );
00623
00624
VOID
00625
UpdateScrollBars(
00626 IN
PSCREEN_INFORMATION ScreenInfo
00627 );
00628
#endif
00629
00630
VOID
00631
ReadRectFromScreenBuffer(
00632 IN
PSCREEN_INFORMATION ScreenInfo,
00633 IN COORD SourcePoint,
00634 IN PCHAR_INFO Target,
00635 IN COORD TargetSize,
00636 IN PSMALL_RECT TargetRect
00637 );
00638
00639
00640
VOID
00641
InitializeThreadMessages(VOID);
00642
00643
NTSTATUS
00644
QueueThreadMessage(
00645 DWORD dwThreadId,
00646 UINT Message,
00647 WPARAM wParam,
00648 LPARAM lParam
00649 );
00650
00651
BOOL
00652
UnqueueThreadMessage(
00653 DWORD dwThreadId,
00654 UINT* pMessage,
00655 WPARAM* pwParam,
00656 LPARAM* plParam
00657 );
00658
00659
00660
00661
00662
00663
00664
UINT ConsoleDragQueryFile(
00665 IN HANDLE hDrop,
00666 IN PVOID lpFile,
00667 IN UINT cb
00668 );
00669
00670
00671
VOID
00672
DoDrop (
00673 IN WPARAM wParam,
00674 IN
PCONSOLE_INFORMATION Console
00675 );
00676
00677
00678
00679
00680
00681
00682
NTSTATUS
00683
ReadBuffer(
00684 IN
PINPUT_INFORMATION InputInformation,
00685 OUT PVOID Buffer,
00686 IN ULONG Length,
00687 OUT PULONG EventsRead,
00688 IN BOOL Peek,
00689 IN BOOL StreamRead,
00690 OUT PBOOL ResetWaitEvent,
00691 IN BOOLEAN Unicode
00692 );
00693
00694
VOID
00695
ConsoleInputThread(
00696 IN
PINPUT_THREAD_INIT_INFO pInputThreadInitInfo
00697 );
00698
00699
VOID
00700
StoreKeyInfo(
00701 IN PMSG msg
00702 );
00703
00704
VOID
00705
RetrieveKeyInfo(
00706 IN HWND hWnd,
00707 OUT PWORD pwVirtualKeyCode,
00708 OUT PWORD pwVirtualScanCode,
00709 IN BOOL FreeKeyInfo
00710 );
00711
00712
VOID
00713
ClearKeyInfo(
00714 IN HWND hWnd
00715 );
00716
00717
NTSTATUS
00718
ReadInputBuffer(
00719 IN
PINPUT_INFORMATION InputInformation,
00720 OUT PINPUT_RECORD lpBuffer,
00721 IN OUT PDWORD nLength,
00722 IN BOOL Peek,
00723 IN BOOL WaitForData,
00724 IN BOOL StreamRead,
00725 IN
PCONSOLE_INFORMATION Console,
00726 IN
PHANDLE_DATA HandleData OPTIONAL,
00727 IN PCSR_API_MSG Message OPTIONAL,
00728 IN CSR_WAIT_ROUTINE WaitRoutine OPTIONAL,
00729 IN PVOID WaitParameter OPTIONAL,
00730 IN ULONG WaitParameterLength OPTIONAL,
00731 IN BOOLEAN WaitBlockExists OPTIONAL
00732 #
if defined(FE_SB)
00733 ,
00734 IN BOOLEAN Unicode
00735 #endif
00736 );
00737
00738
DWORD
00739
WriteInputBuffer(
00740
PCONSOLE_INFORMATION Console,
00741
PINPUT_INFORMATION InputBufferInformation,
00742 PINPUT_RECORD lpBuffer,
00743 DWORD nLength
00744 );
00745
00746
DWORD
00747
PrependInputBuffer(
00748
PCONSOLE_INFORMATION Console,
00749
PINPUT_INFORMATION InputBufferInformation,
00750 PINPUT_RECORD lpBuffer,
00751 DWORD nLength
00752 );
00753
00754
NTSTATUS
00755
CreateInputBuffer(
00756 IN ULONG NumberOfEvents OPTIONAL,
00757 IN
PINPUT_INFORMATION InputBufferInformation
00758 #
if defined(FE_SB)
00759 ,
00760 IN
PCONSOLE_INFORMATION Console
00761 #endif
00762 );
00763
00764
NTSTATUS
00765
ReinitializeInputBuffer(
00766 OUT
PINPUT_INFORMATION InputBufferInformation
00767 );
00768
00769
VOID
00770
FreeInputBuffer(
00771 IN
PINPUT_INFORMATION InputBufferInformation
00772 );
00773
00774
#if defined(FE_SB)
00775
VOID
00776
ProcessCreateConsoleWindow(
00777 IN LPMSG lpMsg
00778 );
00779
00780
NTSTATUS
00781
WaitForMoreToRead(
00782 IN
PINPUT_INFORMATION InputInformation,
00783 IN PCSR_API_MSG Message OPTIONAL,
00784 IN CSR_WAIT_ROUTINE WaitRoutine OPTIONAL,
00785 IN PVOID WaitParameter OPTIONAL,
00786 IN ULONG WaitParameterLength OPTIONAL,
00787 IN BOOLEAN WaitBlockExists OPTIONAL
00788 );
00789
00790 ULONG
00791
GetControlKeyState(
00792 LPARAM lParam
00793 );
00794
00795
VOID
00796
TerminateRead(
00797 IN
PCONSOLE_INFORMATION Console,
00798 IN
PINPUT_INFORMATION InputInfo,
00799 IN DWORD Flag
00800 );
00801
#endif
00802
00803
NTSTATUS
00804
GetNumberOfReadyEvents(
00805 IN
PINPUT_INFORMATION InputInformation,
00806 OUT PULONG NumberOfEvents
00807 );
00808
00809
NTSTATUS
00810
FlushInputBuffer(
00811 IN
PINPUT_INFORMATION InputInformation
00812 );
00813
00814
NTSTATUS
00815
FlushAllButKeys(
00816
PINPUT_INFORMATION InputInformation
00817 );
00818
00819
NTSTATUS
00820
SetInputBufferSize(
00821 IN
PINPUT_INFORMATION InputInformation,
00822 IN ULONG Size
00823 );
00824
00825
BOOL
00826
HandleSysKeyEvent(
00827 IN
PCONSOLE_INFORMATION Console,
00828 IN HWND hWnd,
00829 IN UINT Message,
00830 IN WPARAM wParam,
00831 IN LPARAM lParam
00832 );
00833
00834
VOID
00835
HandleKeyEvent(
00836 IN
PCONSOLE_INFORMATION Console,
00837 IN HWND hWnd,
00838 IN UINT Message,
00839 IN WPARAM wParam,
00840 IN LPARAM lParam
00841 );
00842
00843
BOOL
00844
HandleMouseEvent(
00845 IN
PCONSOLE_INFORMATION Console,
00846 IN
PSCREEN_INFORMATION ScreenInfo,
00847 IN UINT Message,
00848 IN WPARAM wParam,
00849 IN LPARAM lParam
00850 );
00851
00852
VOID
00853
HandleMenuEvent(
00854 IN
PCONSOLE_INFORMATION Console,
00855 IN DWORD wParam
00856 );
00857
00858
VOID
00859
HandleFocusEvent(
00860 IN
PCONSOLE_INFORMATION Console,
00861 IN BOOL bSetFocus
00862 );
00863
00864
VOID
00865
HandleCtrlEvent(
00866 IN
PCONSOLE_INFORMATION Console,
00867 IN DWORD EventType
00868 );
00869
00870 #define CONSOLE_SHUTDOWN_FAILED 0
00871 #define CONSOLE_SHUTDOWN_SUCCEEDED 1
00872 #define CONSOLE_SHUTDOWN_SYSTEM 2
00873
00874
int
00875
CreateCtrlThread(
00876 IN
PCONSOLE_PROCESS_TERMINATION_RECORD ProcessHandleList,
00877 IN ULONG ProcessHandleListLength,
00878 IN PWCHAR Title,
00879 IN DWORD EventType,
00880 IN BOOL fForce
00881 );
00882
00883
VOID
00884
UnlockConsole(
00885 IN
PCONSOLE_INFORMATION Console
00886 );
00887
00888 ULONG
00889
ShutdownConsole(
00890 IN HANDLE ConsoleHandle,
00891 IN DWORD dwFlags
00892 );
00893
00894
00895
00896
00897
00898 #define LINK_NOINFO 0
00899 #define LINK_SIMPLEINFO 1
00900 #define LINK_FULLINFO 2
00901
00902
DWORD
00903
GetLinkProperties(
00904 LPWSTR pszLinkName,
00905 LPVOID lpvBuffer,
00906 UINT cb
00907 );
00908
00909
DWORD
00910
GetTitleFromLinkName(
00911 IN LPWSTR szLinkName,
00912 OUT LPWSTR szTitle
00913 );
00914
00915
00916
00917
00918
00919
VOID
00920
InitializeFonts( VOID );
00921
00922
BOOL
00923
InitializeCustomCP( VOID );
00924
00925 #define EF_NEW 0x0001 // a newly available face
00926 #define EF_OLD 0x0002 // a previously available face
00927 #define EF_ENUMERATED 0x0004 // all sizes have been enumerated
00928 #define EF_OEMFONT 0x0008 // an OEM face
00929 #define EF_TTFONT 0x0010 // a TT face
00930 #define EF_DEFFACE 0x0020 // the default face
00931
00932
NTSTATUS
00933
EnumerateFonts( DWORD Flags );
00934
00935
VOID
00936
InitializeMouseButtons( VOID );
00937
00938
NTSTATUS
00939
GetMouseButtons(
00940 PULONG NumButtons
00941 );
00942
00943
NTSTATUS
00944
FindTextBufferFontInfo(
00945 IN
PSCREEN_INFORMATION ScreenInfo,
00946 IN UINT CodePage,
00947 OUT
PTEXT_BUFFER_FONT_INFO TextFontInfo
00948 );
00949
00950
NTSTATUS
00951
StoreTextBufferFontInfo(
00952 IN
PSCREEN_INFORMATION ScreenInfo,
00953 IN ULONG FontIndex,
00954 IN COORD FontSize,
00955 IN BYTE FontFamily,
00956 IN LONG FontWeight,
00957 IN LPWSTR FaceName,
00958 IN UINT CodePage
00959 );
00960
00961
NTSTATUS
00962
RemoveTextBufferFontInfo(
00963 IN
PSCREEN_INFORMATION ScreenInfo
00964 );
00965
00966
NTSTATUS
00967
GetNumFonts(
00968 OUT PULONG NumberOfFonts
00969 );
00970
00971
NTSTATUS
00972
GetAvailableFonts(
00973 IN
PSCREEN_INFORMATION ScreenInfo,
00974 IN BOOLEAN MaximumWindow,
00975 OUT PVOID Buffer,
00976 IN OUT PULONG NumFonts
00977 );
00978
00979
NTSTATUS
00980
GetFontSize(
00981 IN DWORD FontIndex,
00982 OUT PCOORD FontSize
00983 );
00984
00985
NTSTATUS
00986
GetCurrentFont(
00987 IN
PSCREEN_INFORMATION ScreenInfo,
00988 IN BOOLEAN MaximumWindow,
00989 OUT PULONG FontIndex,
00990 OUT PCOORD FontSize
00991 );
00992
00993
NTSTATUS
00994
SetFont(
00995 IN
PSCREEN_INFORMATION ScreenInfo
00996 );
00997
00998
NTSTATUS
00999
SetScreenBufferFont(
01000 IN
PSCREEN_INFORMATION ScreenInfo,
01001 IN ULONG FontIndex
01002 #
if defined(FE_SB)
01003 ,
01004 IN UINT CodePage
01005 #endif
01006 );
01007
01008
int
01009
ConvertToOem(
01010 IN UINT Codepage,
01011 IN LPWSTR Source,
01012 IN
int SourceLength,
01013 OUT LPSTR Target,
01014 IN
int TargetLength
01015 );
01016
01017
int
01018
ConvertInputToUnicode(
01019 IN UINT Codepage,
01020 IN LPSTR Source,
01021 IN
int SourceLength,
01022 OUT LPWSTR Target,
01023 IN
int TargetLength
01024 );
01025
01026
#if defined(FE_SB)
01027
WCHAR
01028 SB_CharToWcharGlyph(
01029 IN UINT Codepage,
01030 IN
char Ch
01031 );
01032
01033 WCHAR
01034 SB_CharToWchar(
01035 IN UINT Codepage,
01036 IN
char Ch
01037 );
01038
01039
#else
01040
WCHAR
01041
CharToWcharGlyph(
01042 IN UINT Codepage,
01043 IN
char Ch
01044 );
01045
01046 WCHAR
01047
CharToWchar(
01048 IN UINT Codepage,
01049 IN
char Ch
01050 );
01051
#endif
01052
01053
char
01054
WcharToChar(
01055 IN UINT Codepage,
01056 IN WCHAR Wchar
01057 );
01058
01059
int
01060
ConvertOutputToUnicode(
01061 IN UINT Codepage,
01062 IN LPSTR Source,
01063 IN
int SourceLength,
01064 OUT LPWSTR Target,
01065 IN
int TargetLength
01066 );
01067
01068
int
01069
ConvertOutputToOem(
01070 IN UINT Codepage,
01071 IN LPWSTR Source,
01072 IN
int SourceLength,
01073 OUT LPSTR Target,
01074 IN
int TargetLength
01075 );
01076
01077
NTSTATUS
01078
RealUnicodeToFalseUnicode(
01079 IN OUT LPWSTR Source,
01080 IN
int SourceLength,
01081 IN UINT Codepage
01082 );
01083
01084
NTSTATUS
01085
FalseUnicodeToRealUnicode(
01086 IN OUT LPWSTR Source,
01087 IN
int SourceLength,
01088 IN UINT Codepage
01089 );
01090
01091
VOID
01092
InitializeSubst( VOID );
01093
01094
VOID
01095
ShutdownSubst( VOID );
01096
01097 ULONG
01098
SrvConsoleSubst(
01099 IN OUT PCSR_API_MSG m,
01100 IN OUT PCSR_REPLY_STATUS ReplyStatus
01101 );
01102
01103 typedef struct tagFACENODE {
01104 struct tagFACENODE *
pNext;
01105 DWORD dwFlag;
01106 WCHAR
awch[];
01107 }
FACENODE, *
PFACENODE;
01108
01109
BOOL DoFontEnum(
01110 IN HDC hDC OPTIONAL,
01111 IN LPWSTR pwszFace OPTIONAL,
01112 IN SHORT TTPointSize);
01113
01114
#if defined(FE_SB)
01115
VOID
01116 SetConsoleCPInfo(
01117 IN
PCONSOLE_INFORMATION Console,
01118 IN BOOL Output
01119 );
01120
01121
BOOL
01122 CheckBisectStringW(
01123 IN
PSCREEN_INFORMATION ScreenInfo,
01124 IN DWORD CodePage,
01125 IN PWCHAR Buffer,
01126 IN DWORD NumWords,
01127 IN DWORD NumBytes
01128 );
01129
01130
BOOL
01131 CheckBisectProcessW(
01132 IN
PSCREEN_INFORMATION ScreenInfo,
01133 IN DWORD CodePage,
01134 IN PWCHAR Buffer,
01135 IN DWORD NumWords,
01136 IN DWORD NumBytes,
01137 IN SHORT OriginalXPosition,
01138 IN BOOL Echo
01139 );
01140
#endif // FE_SB
01141
01142
01143
01144
01145
01146
01147 ULONG
01148
SrvGetConsoleInput(
01149 IN OUT PCSR_API_MSG m,
01150 IN OUT PCSR_REPLY_STATUS ReplyStatus
01151 );
01152
01153 ULONG
01154
SrvWriteConsoleInput(
01155 IN OUT PCSR_API_MSG m,
01156 IN OUT PCSR_REPLY_STATUS ReplyStatus
01157 );
01158
01159 ULONG
01160
SrvReadConsoleOutput(
01161 IN OUT PCSR_API_MSG m,
01162 IN OUT PCSR_REPLY_STATUS ReplyStatus
01163 );
01164
01165 ULONG
01166
SrvWriteConsoleOutput(
01167 IN OUT PCSR_API_MSG m,
01168 IN OUT PCSR_REPLY_STATUS ReplyStatus
01169 );
01170
01171 ULONG
01172
SrvReadConsoleOutputString(
01173 IN OUT PCSR_API_MSG m,
01174 IN OUT PCSR_REPLY_STATUS ReplyStatus
01175 );
01176
01177 ULONG
01178
SrvWriteConsoleOutputString(
01179 IN OUT PCSR_API_MSG m,
01180 IN OUT PCSR_REPLY_STATUS ReplyStatus
01181 );
01182
01183 ULONG
01184
SrvFillConsoleOutput(
01185 IN OUT PCSR_API_MSG m,
01186 IN OUT PCSR_REPLY_STATUS ReplyStatus
01187 );
01188
01189 ULONG
01190
SrvCreateConsoleScreenBuffer(
01191 IN OUT PCSR_API_MSG m,
01192 IN OUT PCSR_REPLY_STATUS ReplyStatus
01193 );
01194
01195
NTSTATUS
01196
TranslateOutputToPaddingUnicode(
01197 IN
PCONSOLE_INFORMATION Console,
01198 IN OUT PCHAR_INFO OutputBuffer,
01199 IN COORD Size,
01200 IN OUT PCHAR_INFO OutputBufferR
01201 );
01202
01203
01204
01205
01206
01207 ULONG
01208
SrvGetConsoleMode(
01209 IN OUT PCSR_API_MSG m,
01210 IN OUT PCSR_REPLY_STATUS ReplyStatus
01211 );
01212
01213 ULONG
01214
SrvGetConsoleNumberOfFonts(
01215 IN OUT PCSR_API_MSG m,
01216 IN OUT PCSR_REPLY_STATUS ReplyStatus
01217 );
01218
01219 ULONG
01220
SrvGetConsoleNumberOfInputEvents(
01221 IN OUT PCSR_API_MSG m,
01222 IN OUT PCSR_REPLY_STATUS ReplyStatus
01223 );
01224
01225 ULONG
01226
SrvGetLargestConsoleWindowSize(
01227 IN OUT PCSR_API_MSG m,
01228 IN OUT PCSR_REPLY_STATUS ReplyStatus
01229 );
01230
01231 ULONG
01232
SrvGetConsoleScreenBufferInfo(
01233 IN OUT PCSR_API_MSG m,
01234 IN OUT PCSR_REPLY_STATUS ReplyStatus
01235 );
01236
01237 ULONG
01238
SrvGetConsoleCursorInfo(
01239 IN OUT PCSR_API_MSG m,
01240 IN OUT PCSR_REPLY_STATUS ReplyStatus
01241 );
01242
01243 ULONG
01244
SrvGetConsoleMouseInfo(
01245 IN OUT PCSR_API_MSG m,
01246 IN OUT PCSR_REPLY_STATUS ReplyStatus
01247 );
01248
01249 ULONG
01250
SrvGetConsoleFontInfo(
01251 IN OUT PCSR_API_MSG m,
01252 IN OUT PCSR_REPLY_STATUS ReplyStatus
01253 );
01254
01255 ULONG
01256
SrvGetConsoleFontSize(
01257 IN OUT PCSR_API_MSG m,
01258 IN OUT PCSR_REPLY_STATUS ReplyStatus
01259 );
01260
01261 ULONG
01262
SrvGetConsoleCurrentFont(
01263 IN OUT PCSR_API_MSG m,
01264 IN OUT PCSR_REPLY_STATUS ReplyStatus
01265 );
01266
01267 ULONG
01268
SrvSetConsoleMode(
01269 IN OUT PCSR_API_MSG m,
01270 IN OUT PCSR_REPLY_STATUS ReplyStatus
01271 );
01272
01273 ULONG
01274
SrvGenerateConsoleCtrlEvent(
01275 IN OUT PCSR_API_MSG m,
01276 IN OUT PCSR_REPLY_STATUS ReplyStatus
01277 );
01278
01279 ULONG
01280
SrvSetConsoleActiveScreenBuffer(
01281 IN OUT PCSR_API_MSG m,
01282 IN OUT PCSR_REPLY_STATUS ReplyStatus
01283 );
01284
01285 ULONG
01286
SrvFlushConsoleInputBuffer(
01287 IN OUT PCSR_API_MSG m,
01288 IN OUT PCSR_REPLY_STATUS ReplyStatus
01289 );
01290
01291 ULONG
01292
SrvSetConsoleScreenBufferSize(
01293 IN OUT PCSR_API_MSG m,
01294 IN OUT PCSR_REPLY_STATUS ReplyStatus
01295 );
01296
01297 ULONG
01298
SrvSetConsoleCursorPosition(
01299 IN OUT PCSR_API_MSG m,
01300 IN OUT PCSR_REPLY_STATUS ReplyStatus
01301 );
01302
01303 ULONG
01304
SrvSetConsoleCursorInfo(
01305 IN OUT PCSR_API_MSG m,
01306 IN OUT PCSR_REPLY_STATUS ReplyStatus
01307 );
01308
01309 ULONG
01310
SrvSetConsoleWindowInfo(
01311 IN OUT PCSR_API_MSG m,
01312 IN OUT PCSR_REPLY_STATUS ReplyStatus
01313 );
01314
01315 ULONG
01316
SrvScrollConsoleScreenBuffer(
01317 IN OUT PCSR_API_MSG m,
01318 IN OUT PCSR_REPLY_STATUS ReplyStatus
01319 );
01320
01321 ULONG
01322
SrvSetConsoleTextAttribute(
01323 IN OUT PCSR_API_MSG m,
01324 IN OUT PCSR_REPLY_STATUS ReplyStatus
01325 );
01326
01327 ULONG
01328
SrvSetConsoleFont(
01329 IN OUT PCSR_API_MSG m,
01330 IN OUT PCSR_REPLY_STATUS ReplyStatus
01331 );
01332
01333 ULONG
01334
SrvSetConsoleIcon(
01335 IN OUT PCSR_API_MSG m,
01336 IN OUT PCSR_REPLY_STATUS ReplyStatus
01337 );
01338
01339
NTSTATUS
01340
SetScreenColors(
01341 IN
PSCREEN_INFORMATION ScreenInfo,
01342 IN WORD Attributes,
01343 IN WORD PopupAttributes,
01344 IN BOOL UpdateWholeScreen
01345 );
01346
01347 ULONG
01348
SrvSetConsoleCP(
01349 IN OUT PCSR_API_MSG m,
01350 IN OUT PCSR_REPLY_STATUS ReplyStatus
01351 );
01352
01353 ULONG
01354
SrvGetConsoleCP(
01355 IN OUT PCSR_API_MSG m,
01356 IN OUT PCSR_REPLY_STATUS ReplyStatus
01357 );
01358
01359 ULONG
01360
SrvGetConsoleKeyboardLayoutName(
01361 IN OUT PCSR_API_MSG m,
01362 IN OUT PCSR_REPLY_STATUS ReplyStatus
01363 );
01364
01365 ULONG
01366
SrvGetConsoleWindow(
01367 IN OUT PCSR_API_MSG m,
01368 IN OUT PCSR_REPLY_STATUS ReplyStatus
01369 );
01370
01371
01372
01373
01374
01375
01376
NTSTATUS
01377
CookedRead(
01378 IN
PCOOKED_READ_DATA CookedReadData,
01379 IN PCSR_API_MSG WaitReplyMessage,
01380 IN PCSR_THREAD WaitingThread,
01381 IN BOOLEAN WaitRoutine
01382 );
01383
01384
NTSTATUS
01385
ReadChars(
01386 IN
PINPUT_INFORMATION InputInfo,
01387 IN
PCONSOLE_INFORMATION Console,
01388 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
01389 IN
PSCREEN_INFORMATION ScreenInfo,
01390 IN OUT PWCHAR lpBuffer,
01391 IN OUT PDWORD NumBytes,
01392 IN DWORD InitialNumBytes,
01393 IN DWORD CtrlWakeupMask,
01394 IN
PHANDLE_DATA HandleData,
01395 IN
PCOMMAND_HISTORY CommandHistory,
01396 IN PCSR_API_MSG Message OPTIONAL,
01397 IN HANDLE HandleIndex,
01398 IN USHORT ExeNameLength,
01399 IN PWCHAR ExeName,
01400 IN BOOLEAN Unicode
01401 );
01402
01403 ULONG
01404
SrvOpenConsole(
01405 IN OUT PCSR_API_MSG m,
01406 IN OUT PCSR_REPLY_STATUS ReplyStatus
01407 );
01408
01409 ULONG
01410
SrvReadConsole(
01411 IN OUT PCSR_API_MSG m,
01412 IN OUT PCSR_REPLY_STATUS ReplyStatus
01413 );
01414
01415 ULONG
01416
SrvWriteConsole(
01417 IN OUT PCSR_API_MSG m,
01418 IN OUT PCSR_REPLY_STATUS ReplyStatus
01419 );
01420
01421 ULONG
01422
SrvDuplicateHandle(
01423 IN OUT PCSR_API_MSG m,
01424 IN OUT PCSR_REPLY_STATUS ReplyStatus
01425 );
01426
01427 ULONG
01428
SrvGetHandleInformation(
01429 IN OUT PCSR_API_MSG m,
01430 IN OUT PCSR_REPLY_STATUS ReplyStatus
01431 );
01432
01433 ULONG
01434
SrvSetHandleInformation(
01435 IN OUT PCSR_API_MSG m,
01436 IN OUT PCSR_REPLY_STATUS ReplyStatus
01437 );
01438
01439
VOID
01440
UnblockWriteConsole(
01441 IN
PCONSOLE_INFORMATION Console,
01442 IN DWORD Reason);
01443
01444
NTSTATUS
01445
CloseInputHandle(
01446 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
01447 IN
PCONSOLE_INFORMATION Console,
01448 IN
PHANDLE_DATA HandleData,
01449 IN HANDLE Handle
01450 );
01451
01452
NTSTATUS
01453
CloseOutputHandle(
01454 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
01455 IN
PCONSOLE_INFORMATION Console,
01456 IN
PHANDLE_DATA HandleData,
01457 IN HANDLE Handle,
01458 IN BOOLEAN FreeHandle
01459 );
01460
01461 ULONG
01462
SrvCloseHandle(
01463 IN OUT PCSR_API_MSG m,
01464 IN OUT PCSR_REPLY_STATUS ReplyStatus
01465 );
01466
01467
VOID
01468
MakeCursorVisible(
01469 IN
PSCREEN_INFORMATION ScreenInfo,
01470 IN COORD CursorPosition
01471 );
01472
01473
#if defined(FE_SB)
01474
HANDLE
01475
FindActiveScreenBufferHandle(
01476 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
01477 IN
PCONSOLE_INFORMATION Console
01478 );
01479
01480
NTSTATUS
01481 WriteString(
01482 IN
PSCREEN_INFORMATION ScreenInfo,
01483 IN PWCHAR String,
01484 IN ULONG NumChars,
01485 IN BOOL KeepCursorVisible,
01486 OUT PSHORT ScrollY OPTIONAL
01487 );
01488
#endif
01489
01490
01491
01492
01493
01494
NTSTATUS
01495
SetCursorInformation(
01496
PSCREEN_INFORMATION ScreenInfo,
01497 ULONG Size,
01498 BOOLEAN Visible
01499 );
01500
01501
NTSTATUS
01502
SetCursorPosition(
01503 IN OUT
PSCREEN_INFORMATION ScreenInfo,
01504 IN COORD Position,
01505 IN BOOL TurnOn
01506 );
01507
01508
NTSTATUS
01509
SetCursorMode(
01510
PSCREEN_INFORMATION ScreenInfo,
01511 BOOLEAN DoubleCursor
01512 );
01513
01514
VOID
01515
CursorTimerRoutine(
01516 IN
PSCREEN_INFORMATION ScreenInfo
01517 );
01518
01519
#if defined(FE_SB)
01520
VOID
01521 SB_InvertPixels(
01522 IN
PSCREEN_INFORMATION ScreenInfo
01523 );
01524
#endif
01525
01526
VOID
01527
ConsoleHideCursor(
01528 IN
PSCREEN_INFORMATION ScreenInfo
01529 );
01530
01531
VOID
01532
ConsoleShowCursor(
01533 IN
PSCREEN_INFORMATION ScreenInfo
01534 );
01535
01536
#ifdef i386
01537
NTSTATUS
01538 SetCursorInformationHW(
01539
PSCREEN_INFORMATION ScreenInfo,
01540 ULONG Size,
01541 BOOLEAN Visible
01542 );
01543
01544
NTSTATUS
01545 SetCursorPositionHW(
01546 IN OUT
PSCREEN_INFORMATION ScreenInfo,
01547 IN COORD Position
01548 );
01549
#endif
01550
01551
01552
01553
01554
01555
VOID
01556
InitializeConsoleCommandData(
01557 IN
PCONSOLE_INFORMATION Console
01558 );
01559
01560 ULONG
01561
SrvAddConsoleAlias(
01562 IN OUT PCSR_API_MSG m,
01563 IN OUT PCSR_REPLY_STATUS ReplyStatus
01564 );
01565
01566 ULONG
01567
SrvGetConsoleAlias(
01568 IN OUT PCSR_API_MSG m,
01569 IN OUT PCSR_REPLY_STATUS ReplyStatus
01570 );
01571
01572
DWORD
01573
SrvGetConsoleAliasesLength(
01574 IN OUT PCSR_API_MSG m,
01575 IN OUT PCSR_REPLY_STATUS ReplyStatus
01576 );
01577
01578
DWORD
01579
SrvGetConsoleAliasExesLength(
01580 IN OUT PCSR_API_MSG m,
01581 IN OUT PCSR_REPLY_STATUS ReplyStatus
01582 );
01583
01584
DWORD
01585
SrvGetConsoleAliases(
01586 IN OUT PCSR_API_MSG m,
01587 IN OUT PCSR_REPLY_STATUS ReplyStatus
01588 );
01589
01590
DWORD
01591
SrvGetConsoleAliasExes(
01592 IN OUT PCSR_API_MSG m,
01593 IN OUT PCSR_REPLY_STATUS ReplyStatus
01594 );
01595
01596
DWORD
01597
SrvExpungeConsoleCommandHistory(
01598 IN OUT PCSR_API_MSG m,
01599 IN OUT PCSR_REPLY_STATUS ReplyStatus
01600 );
01601
01602
DWORD
01603
SrvSetConsoleNumberOfCommands(
01604 IN OUT PCSR_API_MSG m,
01605 IN OUT PCSR_REPLY_STATUS ReplyStatus
01606 );
01607
01608
DWORD
01609
SrvGetConsoleCommandHistoryLength(
01610 IN OUT PCSR_API_MSG m,
01611 IN OUT PCSR_REPLY_STATUS ReplyStatus
01612 );
01613
01614
DWORD
01615
SrvGetConsoleCommandHistory(
01616 IN OUT PCSR_API_MSG m,
01617 IN OUT PCSR_REPLY_STATUS ReplyStatus
01618 );
01619
01620
DWORD
01621
SrvSetConsoleCommandHistoryMode(
01622 IN OUT PCSR_API_MSG m,
01623 IN OUT PCSR_REPLY_STATUS ReplyStatus
01624 );
01625
01626
NTSTATUS
01627
MatchandCopyAlias(
01628 IN
PCONSOLE_INFORMATION Console,
01629 IN PWCHAR Source,
01630 IN USHORT SourceLength,
01631 OUT PWCHAR TargetBuffer,
01632 IN OUT PUSHORT TargetLength,
01633 IN LPWSTR Exe,
01634 IN USHORT ExeLength,
01635 OUT PDWORD LineCount
01636 );
01637
01638
NTSTATUS
01639
AddCommand(
01640 IN
PCOMMAND_HISTORY CommandHistory,
01641 IN PWCHAR Command,
01642 IN USHORT Length,
01643 IN BOOL HistoryNoDup
01644 );
01645
01646
NTSTATUS
01647
RetrieveCommand(
01648 IN
PCOMMAND_HISTORY CommandHistory,
01649 IN WORD VirtualKeyCode,
01650 IN PWCHAR Buffer,
01651 IN ULONG BufferSize,
01652 OUT PULONG CommandSize
01653 );
01654
01655
PCOMMAND_HISTORY
01656
AllocateCommandHistory(
01657 IN
PCONSOLE_INFORMATION Console,
01658 IN DWORD AppNameLength,
01659 IN PWCHAR AppName,
01660 IN HANDLE ProcessHandle
01661 );
01662
01663
VOID
01664
ResetCommandHistory(
01665 IN
PCOMMAND_HISTORY CommandHistory
01666 );
01667
01668 ULONG
01669
SrvGetConsoleTitle(
01670 IN OUT PCSR_API_MSG m,
01671 IN OUT PCSR_REPLY_STATUS ReplyStatus
01672 );
01673
01674 ULONG
01675
SrvSetConsoleTitle(
01676 IN OUT PCSR_API_MSG m,
01677 IN OUT PCSR_REPLY_STATUS ReplyStatus
01678 );
01679
01680
VOID
01681
FreeAliasBuffers(
01682 IN
PCONSOLE_INFORMATION Console
01683 );
01684
01685
VOID
01686
FreeCommandHistory(
01687 IN
PCONSOLE_INFORMATION Console,
01688 IN HANDLE ProcessHandle
01689 );
01690
01691
VOID
01692
FreeCommandHistoryBuffers(
01693 IN OUT
PCONSOLE_INFORMATION Console
01694 );
01695
01696
VOID
01697
ResizeCommandHistoryBuffers(
01698 IN
PCONSOLE_INFORMATION Console,
01699 IN UINT NumCommands
01700 );
01701
01702
int
01703
MyStringCompareW(
01704 IN LPWSTR Str1,
01705 IN LPWSTR Str2,
01706 IN USHORT Length,
01707 IN BOOLEAN bCaseInsensitive
01708 );
01709
01710
int
01711
LoadStringExW(
01712 IN HINSTANCE hModule,
01713 IN UINT wID,
01714 OUT LPWSTR lpBuffer,
01715 IN
int cchBufferMax,
01716 IN WORD wLangId
01717 );
01718
01719
01720
01721
01722
01723 ULONG
01724
SrvAllocConsole(
01725 IN OUT PCSR_API_MSG m,
01726 IN OUT PCSR_REPLY_STATUS ReplyStatus
01727 );
01728
01729 ULONG
01730
SrvFreeConsole(
01731 IN OUT PCSR_API_MSG m,
01732 IN OUT PCSR_REPLY_STATUS ReplyStatus
01733 );
01734
01735
NTSTATUS
01736
RemoveConsole(
01737 IN
PCONSOLE_PER_PROCESS_DATA ProcessData,
01738 IN HANDLE ProcessHandle,
01739 IN HANDLE ProcessId
01740 );
01741
01742
BOOL
01743
MapHandle(
01744 IN HANDLE ClientProcessHandle,
01745 IN HANDLE ServerHandle,
01746 OUT PHANDLE ClientHandle
01747 );
01748
01749
VOID
01750
InitializeConsoleAttributes( VOID );
01751
01752
VOID
01753
GetRegistryValues(
01754 IN LPWSTR ConsoleTitle,
01755 OUT
PCONSOLE_REGISTRY_INFO RegInfo
01756 );
01757
01758
#if defined(FE_SB)
01759
NTSTATUS
01760
MyRegOpenKey(
01761 IN HANDLE hKey,
01762 IN LPWSTR lpSubKey,
01763 OUT PHANDLE phResult
01764 );
01765
01766
NTSTATUS
01767
MyRegQueryValue(
01768 IN HANDLE hKey,
01769 IN LPWSTR lpValueName,
01770 IN DWORD dwValueLength,
01771 OUT LPBYTE lpData
01772 );
01773
01774
NTSTATUS
01775 MyRegQueryValueEx(
01776 IN HANDLE hKey,
01777 IN LPWSTR lpValueName,
01778 IN DWORD dwValueLength,
01779 OUT LPBYTE lpData,
01780 OUT LPDWORD lpDataLength
01781 );
01782
01783
NTSTATUS
01784 MyRegEnumValue(
01785 IN HANDLE hKey,
01786 IN DWORD dwIndex,
01787 OUT DWORD dwValueLength,
01788 OUT LPWSTR lpValueName,
01789 OUT DWORD dwDataLength,
01790 OUT LPBYTE lpData
01791 );
01792
#endif
01793
01794 LPWSTR
01795
TranslateConsoleTitle(
01796 LPWSTR ConsoleTitle,
01797 PUSHORT pcbTranslatedLength,
01798 BOOL Unexpand,
01799 BOOL Substitute
01800 );
01801
01802
NTSTATUS
01803
GetConsoleLangId(
01804 IN UINT OutputCP,
01805 OUT LANGID* pLangId
01806 );
01807
01808 ULONG
01809
SrvGetConsoleLangId(
01810 IN OUT PCSR_API_MSG m,
01811 IN OUT PCSR_REPLY_STATUS ReplyStatus
01812 );
01813
01814
01815
01816
01817
01818
NTSTATUS
01819
CreateConsoleBitmap(
01820 IN OUT PCONSOLE_GRAPHICS_BUFFER_INFO GraphicsInfo,
01821 IN OUT
PSCREEN_INFORMATION ScreenInfo,
01822 OUT PVOID *lpBitmap,
01823 OUT HANDLE *hMutex
01824 );
01825
01826
NTSTATUS
01827
WriteRegionToScreenBitMap(
01828 IN
PSCREEN_INFORMATION ScreenInfo,
01829 IN PSMALL_RECT Region
01830 );
01831
01832 ULONG
01833
SrvInvalidateBitMapRect(
01834 IN OUT PCSR_API_MSG m,
01835 IN OUT PCSR_REPLY_STATUS ReplyStatus
01836 );
01837
01838 ULONG
01839
SrvVDMConsoleOperation(
01840 IN OUT PCSR_API_MSG m,
01841 IN OUT PCSR_REPLY_STATUS ReplyStatus
01842 );
01843
01844
01845
01846
01847
01848
01849
VOID
01850
UpdateMousePosition(
01851
PSCREEN_INFORMATION ScreenInfo,
01852 COORD Position
01853 );
01854
01855 ULONG
01856
SrvSetConsoleCursor(
01857 IN OUT PCSR_API_MSG m,
01858 IN OUT PCSR_REPLY_STATUS ReplyStatus
01859 );
01860
01861 ULONG
01862
SrvShowConsoleCursor(
01863 IN OUT PCSR_API_MSG m,
01864 IN OUT PCSR_REPLY_STATUS ReplyStatus
01865 );
01866
01867 ULONG
01868
SrvConsoleMenuControl(
01869 IN OUT PCSR_API_MSG m,
01870 IN OUT PCSR_REPLY_STATUS ReplyStatus
01871 );
01872
01873 ULONG
01874
SrvSetConsolePalette(
01875 IN OUT PCSR_API_MSG m,
01876 IN OUT PCSR_REPLY_STATUS ReplyStatus
01877 );
01878
01879 ULONG
01880
SrvSetConsoleDisplayMode(
01881 IN OUT PCSR_API_MSG m,
01882 IN OUT PCSR_REPLY_STATUS ReplyStatus
01883 );
01884
01885
VOID
01886
SetActivePalette(
01887 IN
PSCREEN_INFORMATION ScreenInfo
01888 );
01889
01890
VOID
01891
UnsetActivePalette(
01892 IN
PSCREEN_INFORMATION ScreenInfo
01893 );
01894
01895 ULONG
01896
SrvRegisterConsoleVDM(
01897 IN OUT PCSR_API_MSG m,
01898 IN OUT PCSR_REPLY_STATUS ReplyStatus
01899 );
01900
01901
NTSTATUS
01902
SrvConsoleNotifyLastClose(
01903 IN OUT PCSR_API_MSG m,
01904 IN OUT PCSR_REPLY_STATUS ReplyStatus
01905 );
01906
01907 ULONG
01908
SrvGetConsoleHardwareState(
01909 IN OUT PCSR_API_MSG m,
01910 IN OUT PCSR_REPLY_STATUS ReplyStatus
01911 );
01912
01913 ULONG
01914
SrvSetConsoleHardwareState(
01915 IN OUT PCSR_API_MSG m,
01916 IN OUT PCSR_REPLY_STATUS ReplyStatus
01917 );
01918
01919 ULONG
01920
SrvGetConsoleDisplayMode(
01921 IN OUT PCSR_API_MSG m,
01922 IN OUT PCSR_REPLY_STATUS ReplyStatus
01923 );
01924
01925 ULONG
01926
SrvSetConsoleMenuClose(
01927 IN OUT PCSR_API_MSG m,
01928 IN OUT PCSR_REPLY_STATUS ReplyStatus
01929 );
01930
01931 ULONG
01932
SrvSetConsoleKeyShortcuts(
01933 IN OUT PCSR_API_MSG m,
01934 IN OUT PCSR_REPLY_STATUS ReplyStatus
01935 );
01936
01937
#ifdef i386
01938
01939
VOID
01940 ReadRegionFromScreenHW(
01941 IN
PSCREEN_INFORMATION ScreenInfo,
01942 IN PSMALL_RECT Region,
01943 IN PCHAR_INFO ReadBufPtr
01944 );
01945
01946
VOID
01947 ScrollHW(
01948 IN
PSCREEN_INFORMATION ScreenInfo,
01949 IN PSMALL_RECT ScrollRect,
01950 IN PSMALL_RECT MergeRect,
01951 IN COORD TargetPoint
01952 );
01953
01954 ULONG
01955 MatchWindowSize(
01956 #
if defined(FE_SB)
01957 IN UINT CodePage,
01958 #endif
01959 IN COORD WindowSize,
01960 OUT PCOORD pWindowSize
01961 );
01962
01963
BOOL
01964 SetVideoMode(
01965 IN
PSCREEN_INFORMATION ScreenInfo
01966 );
01967
01968
NTSTATUS
01969
DisplayModeTransition(
01970 IN BOOL Foreground,
01971 IN
PCONSOLE_INFORMATION Console,
01972 IN
PSCREEN_INFORMATION ScreenInfo
01973 );
01974
01975
NTSTATUS
01976
ConvertToWindowed(
01977 IN
PCONSOLE_INFORMATION Console
01978 );
01979
01980
NTSTATUS
01981
ConvertToFullScreen(
01982 IN
PCONSOLE_INFORMATION Console
01983 );
01984
01985
NTSTATUS
01986 SetROMFontCodePage(
01987 IN UINT wCodePage,
01988 IN ULONG ModeIndex
01989 );
01990
01991
#endif
01992
01993
BOOL
01994
InitializeFullScreen( VOID );
01995
01996
NTSTATUS
01997
ChangeDispSettings(
01998
PCONSOLE_INFORMATION Console,
01999 HWND hwnd,
02000 DWORD dwFlags
02001 );
02002
02003 #define SCREEN_BUFFER_POINTER(X,Y,XSIZE,CELLSIZE) (((XSIZE * (Y)) + (X)) * (ULONG)CELLSIZE)
02004
02005
02006
02007
02008
02009
VOID
02010
InitSystemMenu(
02011 IN
PCONSOLE_INFORMATION Console
02012 );
02013
02014
VOID
02015
InitializeMenu(
02016 IN
PCONSOLE_INFORMATION Console
02017 );
02018
02019
VOID
02020
SetWinText(
02021 IN
PCONSOLE_INFORMATION Console,
02022 IN UINT wID,
02023 IN BOOL Add
02024 );
02025
02026
VOID
02027
PropertiesDlgShow(
02028 IN
PCONSOLE_INFORMATION Console,
02029 IN BOOL fCurrent
02030 );
02031
02032
VOID
02033
PropertiesUpdate(
02034 IN
PCONSOLE_INFORMATION Console,
02035 IN HANDLE hClientSection
02036 );
02037
02038
02039
02040
02041
02042
int
02043
FindCreateFont(
02044 DWORD Family,
02045 LPWSTR pwszTTFace,
02046 COORD Size,
02047 LONG Weight,
02048 UINT CodePage);
02049
02050
02051
02052
02053
02054
VOID
02055
DoCopy(
02056 IN
PCONSOLE_INFORMATION Console
02057 );
02058
02059
VOID
02060
DoMark(
02061 IN
PCONSOLE_INFORMATION Console
02062 );
02063
02064
VOID
02065
DoSelectAll(
02066 IN
PCONSOLE_INFORMATION Console
02067 );
02068
02069
VOID
02070
DoStringPaste(
02071 IN
PCONSOLE_INFORMATION Console,
02072 IN PWCHAR pwStr,
02073 IN UINT DataSize
02074 );
02075
02076
VOID
02077
DoPaste(
02078 IN
PCONSOLE_INFORMATION Console
02079 );
02080
02081
#if defined(FE_SB)
02082
VOID
02083 SB_ExtendSelection(
02084 IN
PCONSOLE_INFORMATION Console,
02085 IN COORD CursorPosition
02086 );
02087
#else
02088
VOID
02089
ExtendSelection(
02090 IN
PCONSOLE_INFORMATION Console,
02091 IN COORD CursorPosition
02092 );
02093
#endif
02094
02095
VOID
02096
ClearSelection(
02097 IN
PCONSOLE_INFORMATION Console
02098 );
02099
02100
VOID
02101
StoreSelection(
02102 IN
PCONSOLE_INFORMATION Console
02103 );
02104
02105
VOID
02106
InvertSelection(
02107 IN
PCONSOLE_INFORMATION Console,
02108 BOOL Inverting
02109 );
02110
02111
#if defined(FE_SB)
02112
BOOL
02113 SB_MyInvert(
02114 IN
PCONSOLE_INFORMATION Console,
02115 IN PSMALL_RECT SmallRect
02116 );
02117
#else
02118
BOOL
02119
MyInvert(
02120 IN
PCONSOLE_INFORMATION Console,
02121 IN PSMALL_RECT SmallRect
02122 );
02123
#endif
02124
02125
VOID
02126
ConvertToMouseSelect(
02127 IN
PCONSOLE_INFORMATION Console,
02128 IN COORD MousePosition
02129 );
02130
02131
VOID
02132
DoScroll(
02133 IN
PCONSOLE_INFORMATION Console
02134 );
02135
02136
VOID
02137
ClearScroll(
02138 IN
PCONSOLE_INFORMATION Console
02139 );
02140
02141
02142
02143
02144
02145
02146
BOOL
02147
SetConsoleReserveKeys(
02148 HWND hWnd,
02149 DWORD fsReserveKeys
02150 );
02151
02152
int APIENTRY
02153
GreGetDIBitsInternal(
02154 HDC hdc,
02155 HBITMAP hBitmap,
02156 UINT iStartScan,
02157 UINT cNumScan,
02158 LPBYTE pjBits,
02159 LPBITMAPINFO pBitsInfo,
02160 UINT iUsage,
02161 UINT cjMaxBits,
02162 UINT cjMaxInfo
02163 );
02164
02165
02166
#if defined(FE_SB)
02167
02168
02169
02170 ULONG
02171 SrvGetConsoleCharType(
02172 IN OUT PCSR_API_MSG m,
02173 IN OUT PCSR_REPLY_STATUS ReplyStatus
02174 );
02175
02176 ULONG
02177 SrvSetConsoleLocalEUDC(
02178 IN OUT PCSR_API_MSG m,
02179 IN OUT PCSR_REPLY_STATUS ReplyStatus
02180 );
02181
02182
02183 ULONG
02184 SrvSetConsoleCursorMode(
02185 IN OUT PCSR_API_MSG m,
02186 IN OUT PCSR_REPLY_STATUS ReplyStatus
02187 );
02188
02189 ULONG
02190 SrvGetConsoleCursorMode(
02191 IN OUT PCSR_API_MSG m,
02192 IN OUT PCSR_REPLY_STATUS ReplyStatus
02193 );
02194
02195 ULONG
02196 SrvRegisterConsoleOS2(
02197 IN OUT PCSR_API_MSG m,
02198 IN OUT PCSR_REPLY_STATUS ReplyStatus
02199 );
02200
02201 ULONG
02202 SrvSetConsoleOS2OemFormat(
02203 IN OUT PCSR_API_MSG m,
02204 IN OUT PCSR_REPLY_STATUS ReplyStatus
02205 );
02206
02207
#if defined(FE_IME)
02208
ULONG
02209 SrvGetConsoleNlsMode(
02210 IN OUT PCSR_API_MSG m,
02211 IN OUT PCSR_REPLY_STATUS ReplyStatus
02212 );
02213
02214 ULONG
02215 SrvSetConsoleNlsMode(
02216 IN OUT PCSR_API_MSG m,
02217 IN OUT PCSR_REPLY_STATUS ReplyStatus
02218 );
02219
02220 ULONG
02221 SrvRegisterConsoleIME(
02222 IN OUT PCSR_API_MSG m,
02223 IN OUT PCSR_REPLY_STATUS ReplyStatus
02224 );
02225
02226 ULONG
02227 SrvUnregisterConsoleIME(
02228 IN OUT PCSR_API_MSG m,
02229 IN OUT PCSR_REPLY_STATUS ReplyStatus
02230 );
02231
#endif // FE_IME
02232
02233
02234
02235
02236
02237
VOID
02238
InvertPixels(
02239 IN
PSCREEN_INFORMATION ScreenInfo
02240 );
02241
02242 WCHAR
02243
CharToWchar(
02244 IN
PCONSOLE_INFORMATION Console,
02245 IN UINT Codepage,
02246 IN
char *Ch
02247 );
02248
02249
BOOL
02250
MyInvert(
02251 IN
PCONSOLE_INFORMATION Console,
02252 IN PSMALL_RECT SmallRect
02253 );
02254
02255
VOID
02256
ExtendSelection(
02257 IN
PCONSOLE_INFORMATION Console,
02258 IN COORD CursorPosition
02259 );
02260
02261
#endif // FE_SB
02262
02263
02264
02265
02266
02267
02268 #define W32PF_ALLOWSETFOREGROUND 0x00080000
02269 #define W32PF_CONSOLEHASFOCUS 0x04000000
02270