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.
 
 
 
 
 
 

397 lines
7.8 KiB

/*++
Copyright (c) 1985 - 1999, Microsoft Corporation
Module Name:
condll.h
Abstract:
This module contains the include files and definitions for the
console client DLL.
Author:
Therese Stowell (thereses) 16-Nov-1990
Revision History:
--*/
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
//Don't include this when building wow64 type/function database.
#if !defined(SORTPP_PASS)
#include <windows.h>
#endif
#include <winuserk.h> // temporary
#include <conroute.h>
#include "conapi.h"
#include "ntcsrdll.h"
#include "conmsg.h"
#include <string.h>
#if defined(BUILD_WOW64)
#define SET_CONSOLE_HANDLE(HANDLE) (Wow64SetConsoleHandle(HANDLE))
#define GET_CONSOLE_HANDLE (Wow64GetConsoleHandle())
#define SET_LAST_ERROR(ERROR) (Wow64SetLastError(ERROR) )
#define SET_LAST_NT_ERROR(ERROR) (Wow64SetLastError(RtlNtStatusToDosError( ERROR )) )
#include "ntwow64c.h"
#else
#define SET_CONSOLE_HANDLE(HANDLE) ((NtCurrentPeb())->ProcessParameters->ConsoleHandle = HANDLE)
#define GET_CONSOLE_HANDLE ((NtCurrentPeb())->ProcessParameters->ConsoleHandle)
#define SET_LAST_ERROR(ERROR) (SetLastError( ERROR ) )
#define SET_LAST_NT_ERROR(ERROR) (SetLastError( RtlNtStatusToDosError( ERROR ) ) )
#endif
#define VALID_ACCESSES (GENERIC_READ | GENERIC_WRITE)
#define VALID_SHARE_ACCESSES (FILE_SHARE_READ | FILE_SHARE_WRITE)
#define VALID_DUP_OPTIONS (DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)
#define CONSOLE_RECT_SIZE_X(RECT) ((RECT)->Right - (RECT)->Left + 1)
#define CONSOLE_RECT_SIZE_Y(RECT) ((RECT)->Bottom - (RECT)->Top + 1)
//
// this critical section is used to serialize access to the code that
// accesses the ctrl handler data structures and the code that allocs
// and frees consoles.
//
CRITICAL_SECTION DllLock;
#define LockDll() RtlEnterCriticalSection(&DllLock)
#define UnlockDll() RtlLeaveCriticalSection(&DllLock)
NTSTATUS
InitializeCtrlHandling( VOID );
VOID
InitExeName(
VOID
);
USHORT
GetCurrentExeName(
LPWSTR Buffer,
ULONG BufferLength
);
HANDLE
APIENTRY
OpenConsoleWInternal(
IN ULONG HandleType,
IN ULONG DesiredAccess,
IN BOOL InheritHandle,
IN ULONG ShareMode
);
BOOL
APIENTRY
ReadConsoleInternal(
IN HANDLE hConsoleInput,
OUT LPVOID lpBuffer,
IN DWORD nNumberOfCharsToRead,
OUT LPDWORD lpNumberOfCharsRead,
IN OUT LPVOID lpReserved,
IN BOOLEAN Unicode,
IN USHORT ExeNameLength,
IN LPWSTR ExeName
);
BOOL
APIENTRY
WriteConsoleInternal(
IN HANDLE hConsoleOutput,
IN CONST VOID *lpBuffer,
IN DWORD nNumberOfCharsToWrite,
OUT LPDWORD lpNumberOfCharsWritten,
IN BOOLEAN Unicode
);
BOOL
APIENTRY
RegisterConsoleIMEInternal(
IN HWND hWndConsoleIME,
IN DWORD dwConsoleIMEThreadId,
IN DWORD DesktopLength,
IN LPWSTR Desktop,
OUT DWORD *dwConsoleThreadId
);
BOOL
APIENTRY
UnregisterConsoleIMEInternal(
IN DWORD dwConsoleIMEThtreadId
);
BOOL
APIENTRY
GetConsoleInput(
IN HANDLE hConsoleInput,
OUT PINPUT_RECORD lpBuffer,
IN DWORD nLength,
OUT LPDWORD lpNumberOfEventsRead,
IN USHORT wFlags,
IN BOOLEAN Unicode
);
BOOL
APIENTRY
WriteConsoleInputInternal(
IN HANDLE hConsoleInput,
IN CONST INPUT_RECORD *lpBuffer,
IN DWORD nLength,
OUT LPDWORD lpNumberOfEventsWritten,
IN BOOLEAN Unicode,
IN BOOLEAN Append
);
BOOL
APIENTRY
ReadConsoleOutputInternal(
IN HANDLE hConsoleOutput,
OUT PCHAR_INFO lpBuffer,
IN COORD dwBufferSize,
IN COORD dwBufferCoord,
IN OUT PSMALL_RECT lpReadRegion,
IN BOOLEAN Unicode
);
BOOL
APIENTRY
WriteConsoleOutputInternal(
IN HANDLE hConsoleOutput,
IN CONST CHAR_INFO *lpBuffer,
IN COORD dwBufferSize,
IN COORD dwBufferCoord,
IN PSMALL_RECT lpWriteRegion,
IN BOOLEAN Unicode
);
BOOL
APIENTRY
ReadConsoleOutputString(
IN HANDLE hConsoleOutput,
OUT LPVOID lpString,
IN DWORD nLength,
IN DWORD nSize,
IN DWORD fFlags,
IN COORD dwReadCoord,
OUT LPDWORD lpNumberOfElementsRead
);
BOOL
APIENTRY
WriteConsoleOutputString(
IN HANDLE hConsoleOutput,
IN CONST VOID *lpString,
IN DWORD nLength,
IN DWORD nSize,
IN DWORD fFlags,
IN COORD dwWriteCoord,
OUT LPDWORD lpNumberOfElementsWritten
);
BOOL
APIENTRY
FillConsoleOutput(
IN HANDLE hConsoleOutput,
IN WORD Element,
IN DWORD nLength,
IN DWORD fFlags,
IN COORD dwWriteCoord,
OUT LPDWORD lpNumberOfElementsWritten
);
BOOL
APIENTRY
GetConsoleKeyboardLayoutNameWorker(
OUT LPSTR pszLayout,
IN BOOL bAnsi);
BOOL
APIENTRY
SetConsolePaletteInternal(
IN HANDLE hConsoleOutput,
IN HPALETTE hPalette,
IN UINT dwUsage
);
BOOL
APIENTRY
ScrollConsoleScreenBufferInternal(
IN HANDLE hConsoleOutput,
IN CONST SMALL_RECT *lpScrollRectangle,
IN CONST SMALL_RECT *lpClipRectangle,
IN COORD dwDestinationOrigin,
IN CONST CHAR_INFO *lpFill,
IN BOOLEAN Unicode
);
NTSTATUS
APIENTRY
SetConsoleOutputCPInternal(
IN UINT wCodePageID
);
VOID
APIENTRY
SetLastConsoleEventActiveInternal(
VOID
);
BOOL
APIENTRY
ConnectConsoleInternal(
IN PWSTR pObjectDirectory,
IN OUT PCONSOLE_API_CONNECTINFO pConnectInfo,
OUT PBOOLEAN pServerProcess
);
BOOL
APIENTRY
AllocConsoleInternal(
IN LPWSTR lpTitle,
IN DWORD dwTitleLength,
IN LPWSTR lpDesktop,
IN DWORD dwDesktopLength,
IN LPWSTR lpCurDir,
IN DWORD dwCurDirLength,
IN LPWSTR AppName,
IN DWORD dwAppNameLength,
IN LPTHREAD_START_ROUTINE CtrlRoutine,
IN LPTHREAD_START_ROUTINE PropRoutine,
IN OUT PCONSOLE_INFO pConsoleInfo
);
BOOL
APIENTRY
FreeConsoleInternal(
VOID
);
BOOL
APIENTRY
AttachConsoleInternal(
IN DWORD dwProcessId,
IN LPTHREAD_START_ROUTINE CtrlRoutine,
IN LPTHREAD_START_ROUTINE PropRoutine,
IN OUT PCONSOLE_INFO pConsoleInfo
);
BOOL
WINAPI
GetConsoleLangId(
OUT LANGID *lpLangId
);
BOOL
APIENTRY
AddConsoleAliasInternal(
IN LPVOID Source,
IN UINT SourceLength,
IN LPVOID Target,
IN UINT TargetLength,
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleAliasInternal(
IN LPVOID Source,
IN UINT SourceLength,
OUT LPVOID TargetBuffer,
IN UINT TargetBufferLength,
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleAliasesLengthInternal(
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleAliasExesLengthInternal(
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleAliasesInternal(
OUT LPVOID AliasBuffer,
IN DWORD AliasBufferLength,
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleAliasExesInternal(
OUT LPVOID ExeNameBuffer,
IN DWORD ExeNameBufferLength,
IN BOOLEAN Unicode
);
VOID
APIENTRY
ExpungeConsoleCommandHistoryInternal(
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
BOOL
APIENTRY
SetConsoleNumberOfCommandsInternal(
IN DWORD Number,
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleCommandHistoryLengthInternal(
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleCommandHistoryInternal(
OUT LPVOID Commands,
IN DWORD CommandBufferLength,
IN LPVOID ExeName,
IN BOOLEAN Unicode
);
DWORD
APIENTRY
GetConsoleTitleInternal(
OUT PVOID lpConsoleTitle,
IN DWORD nSize,
IN BOOLEAN Unicode
);
BOOL
APIENTRY
SetConsoleTitleInternal(
IN CONST VOID *lpConsoleTitle,
IN DWORD TitleLength, // in bytes
IN BOOLEAN Unicode
);
VOID
SetTEBLangID(
VOID
);