diff options
Diffstat (limited to 'private/utils/mode/mode.hxx')
-rw-r--r-- | private/utils/mode/mode.hxx | 293 |
1 files changed, 293 insertions, 0 deletions
diff --git a/private/utils/mode/mode.hxx b/private/utils/mode/mode.hxx new file mode 100644 index 000000000..bb7d5ecff --- /dev/null +++ b/private/utils/mode/mode.hxx @@ -0,0 +1,293 @@ +/*++ + +Copyright (c) 1990 Microsoft Corporation + +Module Name: + + Mode.hxx + +Abstract: + + Header file for the Mode utility + +Author: + + Ramon Juan San Andres (ramonsa) 26-Jun-1991 + + +Revision History: + + +--*/ + + +#include "ulib.hxx" +#include "smsg.hxx" +#include "wstring.hxx" + +#include "rtmsg.h" + + +// ================================================================== +// +// Types +// +// ================================================================== + + +// +// Device types +// +typedef enum _DEVICE_TTYPE { + + DEVICE_TYPE_LPT = 0, + DEVICE_TYPE_COM = 1, + DEVICE_TYPE_CON = 2, + DEVICE_TYPE_ALL = 3 + +} DEVICE_TTYPE, *PDEVICE_TTYPE; + + +// +// Number of device types +// +#define NUMBER_OF_DEVICE_TYPES (DEVICE_TYPE_ALL + 1) + +#define LAST_LPT 9 +#define LAST_COM 9 + + +// +// Request types +// +typedef enum _REQUEST_TYPE { + + // + // NULL request (for operations accepted but that are no-ops ) + // + REQUEST_TYPE_NULL, + + // + // Requests common to 2 or more devices + // + REQUEST_TYPE_STATUS, + REQUEST_TYPE_CODEPAGE_PREPARE, + REQUEST_TYPE_CODEPAGE_SELECT, + REQUEST_TYPE_CODEPAGE_REFRESH, + REQUEST_TYPE_CODEPAGE_STATUS, + // + // LPT + // + REQUEST_TYPE_LPT_SETUP, + REQUEST_TYPE_LPT_REDIRECT, + REQUEST_TYPE_LPT_ENDREDIR, + // + // COM + // + REQUEST_TYPE_COM_SET, + // + // CONSOLE + // + REQUEST_TYPE_CON_SET_ROWCOL, + REQUEST_TYPE_CON_SET_TYPEMATIC + +} REQUEST_TYPE, *PREQUEST_TYPE; + + + +// +// Request packet header +// +typedef struct _REQUEST_HEADER { + + DEVICE_TTYPE DeviceType; // Device type + LONG DeviceNumber; // Device number + PWSTRING DeviceName; // Optional device name + REQUEST_TYPE RequestType; // Request type + +} REQUEST_HEADER, *PREQUEST_HEADER; +// +// ALL_DEVICES is a magic DeviceNumber that means "all devices available +// of this type" +// +#define ALL_DEVICES ((LONG)-1) + + +// +// Device handler. A device handler is the function that takes care of +// handling all requests for a device. There is one per device type. +// +typedef BOOLEAN( *DEVICE_HANDLER )( IN PREQUEST_HEADER Request ); + + + +// ================================================================== +// +// Macros +// +// ================================================================== + +// +// Exit codes +// +#define EXIT_SUCCESS 0 +#define EXIT_ERROR ((int)-1) + + + +// ================================================================== +// +// Global Data +// +// ================================================================== + + +// +// The message stream, for displaying messages +// +extern PSTREAM_MESSAGE Message; + + +// +// DeviceHandler is an array of pointers to the different device +// handlers. +// +extern DEVICE_HANDLER DeviceHandler[]; + + + +// ================================================================== +// +// Prototypes +// +// ================================================================== + + +// +// Argument.hxx +// +PREQUEST_HEADER +GetRequest( + ); + +VOID +ParseError ( + ); + + +// +// common.cxx +// +BOOLEAN +CommonHandler( + IN PREQUEST_HEADER Request + ); + + +BOOLEAN +IsAValidDevice ( + IN DEVICE_TTYPE DeviceType, + IN ULONG DeviceNumber, + OUT PPATH *DeviceName + ); + +BOOLEAN +IsAValidLptDevice ( + IN DEVICE_TTYPE DeviceType, + IN ULONG DeviceNumber, + OUT PPATH *DeviceName + ); + +BOOLEAN +IsAValidCommDevice ( + IN DEVICE_TTYPE DeviceType, + IN ULONG DeviceNumber, + OUT PPATH *DeviceName + ); + +BOOLEAN +WriteStatusHeader ( + IN PCPATH DevicePath + ); + + +// +// lpt.cxx +// +BOOLEAN +LptHandler( + IN PREQUEST_HEADER Request + ); + + +// +// Com.cxx +// +BOOLEAN +ComAllocateStuff( + ); + +BOOLEAN +ComDeAllocateStuff( + ); + +BOOLEAN +ComHandler( + IN PREQUEST_HEADER Request + ); + + + + + +// +// con.cxx +// +BOOLEAN +ConHandler( + IN PREQUEST_HEADER Request + ); + + +// +// support.cxx +// +VOID +DisplayMessage ( + IN MSGID MsgId, + IN PCWSTRING String + ); + +VOID +DisplayMessageAndExit ( + IN MSGID MsgId, + IN PCWSTRING String, + IN ULONG ExitCode + ); + +PWSTRING +QueryMessageString ( + IN MSGID MsgId + ); + +VOID +ExitWithError( + IN DWORD ErrorCode + ); + +VOID +ExitMode( + IN DWORD ExitCode + ); + + + + +PSTREAM +Get_Standard_Input_Stream(); + +PSTREAM +Get_Standard_Output_Stream(); + +PSTREAM +Get_Standard_Error_Stream(); |