/*++ Copyright (c) 1985 - 1999, Microsoft Corporation Module Name: dispatch.h Abstract: Author: KazuM Apr.19.1996 Revision History: --*/ #undef WWSB #if defined(WWSB_NOFE) #define WWSB(fn) SB_##fn #elif defined(WWSB_FE) #define WWSB(fn) FE_##fn #else #define WWSB(fn) fn #endif NTSTATUS WWSB(DoSrvWriteConsole)( IN OUT PCSR_API_MSG m, IN OUT PCSR_REPLY_STATUS ReplyStatus, IN PCONSOLE_INFORMATION Console, IN PHANDLE_DATA HandleData ); NTSTATUS WWSB(WriteOutputString)( IN PSCREEN_INFORMATION ScreenInfo, IN PVOID Buffer, IN COORD WriteCoord, IN ULONG StringType, IN OUT PULONG NumRecords, // this value is valid even for error cases OUT PULONG NumColumns OPTIONAL ); VOID WWSB(WriteRectToScreenBuffer)( PBYTE Source, COORD SourceSize, PSMALL_RECT SourceRect, PSCREEN_INFORMATION ScreenInfo, COORD TargetPoint, IN UINT Codepage ); VOID WWSB(WriteToScreen)( IN PSCREEN_INFORMATION ScreenInfo, PSMALL_RECT Region // region is inclusive ); VOID WWSB(WriteRegionToScreen)( IN PSCREEN_INFORMATION ScreenInfo, IN PSMALL_RECT Region ); NTSTATUS WWSB(FillOutput)( IN PSCREEN_INFORMATION ScreenInfo, IN WORD Element, IN COORD WriteCoord, IN ULONG ElementType, IN OUT PULONG Length // this value is valid even for error cases ); VOID WWSB(FillRectangle)( IN CHAR_INFO Fill, IN OUT PSCREEN_INFORMATION ScreenInfo, IN PSMALL_RECT TargetRect ); ULONG WWSB(DoWriteConsole)( IN OUT PCSR_API_MSG m, IN PCONSOLE_INFORMATION Console, IN PCSR_THREAD Thread ); NTSTATUS WWSB(WriteChars)( IN PSCREEN_INFORMATION ScreenInfo, IN PWCHAR lpBufferBackupLimit, IN PWCHAR lpBuffer, IN PWCHAR lpRealUnicodeString, IN OUT PDWORD NumBytes, OUT PLONG NumSpaces OPTIONAL, IN SHORT OriginalXPosition, IN DWORD dwFlags, OUT PSHORT ScrollY OPTIONAL ); NTSTATUS WWSB(AdjustCursorPosition)( IN PSCREEN_INFORMATION ScreenInfo, IN COORD CursorPosition, IN BOOL KeepCursorVisible, OUT PSHORT ScrollY OPTIONAL ); NTSTATUS TranslateOutputToAnsiUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size, IN OUT PCHAR_INFO OutputBufferR ); NTSTATUS FE_TranslateOutputToAnsiUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size, IN OUT PCHAR_INFO OutputBufferR ); NTSTATUS SB_TranslateOutputToAnsiUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size ); NTSTATUS WWSB(TranslateOutputToUnicode)( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size); NTSTATUS TranslateOutputToOemUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size, IN BOOL fRemoveDbcsMark ); NTSTATUS FE_TranslateOutputToOemUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size, IN BOOL fRemoveDbcsMark ); NTSTATUS SB_TranslateOutputToOemUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size ); NTSTATUS WWSB(TranslateOutputToOem)( IN PCONSOLE_INFORMATION Console, IN OUT PCHAR_INFO OutputBuffer, IN COORD Size ); ULONG TranslateInputToUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PINPUT_RECORD InputRecords, IN ULONG NumRecords, IN OUT PINPUT_RECORD DBCSLeadByte ); ULONG FE_TranslateInputToUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PINPUT_RECORD InputRecords, IN ULONG NumRecords, IN OUT PINPUT_RECORD DBCSLeadByte ); ULONG SB_TranslateInputToUnicode( IN PCONSOLE_INFORMATION Console, IN OUT PINPUT_RECORD InputRecords, IN ULONG NumRecords ); ULONG TranslateInputToOem( IN PCONSOLE_INFORMATION Console, IN OUT PINPUT_RECORD InputRecords, IN ULONG NumRecords, // in : ASCII byte count IN ULONG UnicodeLength, // in : Number of events (char count) OUT PINPUT_RECORD DbcsLeadInpRec ); ULONG FE_TranslateInputToOem( IN PCONSOLE_INFORMATION Console, IN OUT PINPUT_RECORD InputRecords, IN ULONG NumRecords, // in : ASCII byte count IN ULONG UnicodeLength, // in : Number of events (char count) OUT PINPUT_RECORD DbcsLeadInpRec ); ULONG SB_TranslateInputToOem( IN PCONSOLE_INFORMATION Console, IN OUT PINPUT_RECORD InputRecords, IN ULONG NumRecords ); #ifdef i386 VOID WWSB(WriteRegionToScreenHW)( IN PSCREEN_INFORMATION ScreenInfo, IN PSMALL_RECT Region ); #endif VOID StreamWriteToScreenBuffer( IN PWCHAR String, IN SHORT StringLength, IN PSCREEN_INFORMATION ScreenInfo ); VOID FE_StreamWriteToScreenBuffer( IN PWCHAR String, IN SHORT StringLength, IN PSCREEN_INFORMATION ScreenInfo, IN PCHAR StringA ); VOID SB_StreamWriteToScreenBuffer( IN PWCHAR String, IN SHORT StringLength, IN PSCREEN_INFORMATION ScreenInfo ); /* * SB/FE neutral defines for use from _stream.h and _output.h * * Each of these functions appears in dispatch.c, but we don't want SB_ or FE_ * routines to call the dispatching subroutines, we want to call the SB_ or FE_ * subroutines directly. eg: There should be no calls to WriteChars from * anywhere in _stream.h : instead, we should call WWSB_WriteChars (etc.) */ #if defined(WWSB_NOFE) #define WWSB_WriteChars SB_WriteChars #define WWSB_AdjustCursorPosition SB_AdjustCursorPosition #define WWSB_DoWriteConsole SB_DoWriteConsole #define WWSB_DoSrvWriteConsole SB_DoSrvWriteConsole #define WWSB_WriteToScreen SB_WriteToScreen #define WWSB_WriteOutputString SB_WriteOutputString #define WWSB_FillOutput SB_FillOutput #define WWSB_FillRectangle SB_FillRectangle #define WWSB_PolyTextOutCandidate SB_PolyTextOutCandidate #define WWSB_ConsolePolyTextOut SB_ConsolePolyTextOut #define WWSB_WriteRegionToScreen SB_WriteRegionToScreen #define WWSB_WriteRegionToScreenHW SB_WriteRegionToScreenHW #define WWSB_WriteRectToScreenBuffer SB_WriteRectToScreenBuffer #endif #if defined(WWSB_FE) #undef WWSB_WriteChars #define WWSB_WriteChars FE_WriteChars #undef WWSB_AdjustCursorPosition #define WWSB_AdjustCursorPosition FE_AdjustCursorPosition #undef WWSB_DoWriteConsole #define WWSB_DoWriteConsole FE_DoWriteConsole #undef WWSB_DoSrvWriteConsole #define WWSB_DoSrvWriteConsole FE_DoSrvWriteConsole #undef WWSB_WriteToScreen #define WWSB_WriteToScreen FE_WriteToScreen #undef WWSB_WriteOutputString #define WWSB_WriteOutputString FE_WriteOutputString #undef WWSB_FillOutput #define WWSB_FillOutput FE_FillOutput #undef WWSB_FillRectangle #define WWSB_FillRectangle FE_FillRectangle #undef WWSB_PolyTextOutCandidate #define WWSB_PolyTextOutCandidate FE_PolyTextOutCandidate #undef WWSB_ConsolePolyTextOut #define WWSB_ConsolePolyTextOut FE_ConsolePolyTextOut #undef WWSB_WriteRegionToScreen #define WWSB_WriteRegionToScreen FE_WriteRegionToScreen #undef WWSB_WriteRegionToScreenHW #define WWSB_WriteRegionToScreenHW FE_WriteRegionToScreenHW #undef WWSB_WriteRectToScreenBuffer #define WWSB_WriteRectToScreenBuffer FE_WriteRectToScreenBuffer #endif /* * define WWSB_NEUTRAL_FILE in _stream.h _output.h and _priv.h * This will guard against calling the dispatching versions when we can just * call the underlying FE_ or SB_ routine directly. */ #ifdef WWSB_NEUTRAL_FILE #define WriteChars Should_not_call_WriteChars #define AdjustCursorPosition Should_not_call_AdjustCursorPosition #define DoWriteConsole Should_not_call_DoWriteConsole #define DoSrvWriteConsole Should_not_call_DoSrvWriteConsole #define WriteToScreen Should_not_call_WriteToScreen #define WriteOutputString Should_not_call_WriteOutputString #define FillOutput Should_not_call_FillOutput #define FillRectangle Should_not_call_FillRectangle #define PolyTextOutCandidate Should_not_call_PolyTextOutCandidate #define ConsolePolyTextOut Should_not_call_ConsolePolyTextOut #define WriteRegionToScreen Should_not_call_WriteRegionToScreen #define WriteRegionToScreenHW Should_not_call_WriteRegionToScreenHW #define WriteRectToScreenBuffer Should_not_call_WriteRectToScreenBuffer #endif