Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

consrv.h

Go to the documentation of this file.
00001 /*++ 00002 00003 Copyright (c) 1985 - 1999, Microsoft Corporation 00004 00005 Module Name: 00006 00007 consrv.h 00008 00009 Abstract: 00010 00011 This module contains the include files and definitions for the 00012 console server DLL. 00013 00014 Author: 00015 00016 Therese Stowell (thereses) 16-Nov-1990 00017 00018 Revision History: 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 * Used to store some console attributes for the console. This is a means 00087 * to cache the color in the extra-window-bytes, so USER/KERNEL can get 00088 * at it for hungapp drawing. The window-offsets are defined in NTUSER\INC. 00089 * 00090 * The other macros are just convenient means for setting the other window 00091 * bytes. 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 * helpful macros 00100 */ 00101 #define NELEM(array) (sizeof(array)/sizeof(array[0])) 00102 00103 // Text Information from PSCREEN_INFORMATION 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 // Text Information from PCONSOLE_INFORMATION 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; // TRUE if System ACP is associated with DBCS font 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 // Cache the heap pointer for use by memory routines. 00162 // 00163 00164 extern PWIN32HEAP pConHeap; 00165 extern DWORD dwConBaseTag; 00166 00167 // 00168 // Make sure the console heap is still valid. 00169 // 00170 00171 #define ValidateConsoleHeap() \ 00172 if (NtCurrentPeb()->BeingDebugged) { \ 00173 RtlValidateHeap(Win32HeapGetHandle(pConHeap), 0, NULL); \ 00174 } 00175 00176 // 00177 // Wrappers for console heap code. 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 // handle.c 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 // share.c 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 // find.c 00397 // 00398 00399 VOID 00400 DoFind( 00401 IN PCONSOLE_INFORMATION Console 00402 ); 00403 00404 // 00405 // output.c 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 // this value is valid even for error cases 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 // Drag/Drop on console windows (output.c) 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 // input.c 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 // link.c 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 // misc.c 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, // in chars 01073 OUT LPSTR Target, 01074 IN int TargetLength // in chars 01075 ); 01076 01077 NTSTATUS 01078 RealUnicodeToFalseUnicode( 01079 IN OUT LPWSTR Source, 01080 IN int SourceLength, // in chars 01081 IN UINT Codepage 01082 ); 01083 01084 NTSTATUS 01085 FalseUnicodeToRealUnicode( 01086 IN OUT LPWSTR Source, 01087 IN int SourceLength, // in chars 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 // directio.c 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 // getset.c 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 // stream.c 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 // cursor.c 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 // cmdline.c 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 // srvinit.c 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 // bitmap.c 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 // private.c 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 // menu.c 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 // fontdlg.c 02040 // 02041 02042 int 02043 FindCreateFont( 02044 DWORD Family, 02045 LPWSTR pwszTTFace, 02046 COORD Size, 02047 LONG Weight, 02048 UINT CodePage); 02049 02050 // 02051 // clipbrd.c 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 // External private functions used by consrv 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 // constubs.c 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 // dispatch.c 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 * The following define must match the define in w32\w32inc\w32p.h. 02265 * Later5.0 GerardoB: It should include w32p.h although that implies 02266 * including several other headers. 02267 */ 02268 #define W32PF_ALLOWSETFOREGROUND 0x00080000 02269 #define W32PF_CONSOLEHASFOCUS 0x04000000 02270

Generated on Sat May 15 19:39:33 2004 for test by doxygen 1.3.7