summaryrefslogtreecommitdiffstats
path: root/private/utils/mode/mode.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'private/utils/mode/mode.hxx')
-rw-r--r--private/utils/mode/mode.hxx293
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();