Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

330 lines
8.7 KiB

/*++
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