summaryrefslogtreecommitdiffstats
path: root/private/os2/os2ses/os2ses.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/os2/os2ses/os2ses.h')
-rw-r--r--private/os2/os2ses/os2ses.h324
1 files changed, 324 insertions, 0 deletions
diff --git a/private/os2/os2ses/os2ses.h b/private/os2/os2ses/os2ses.h
new file mode 100644
index 000000000..6dcf4c856
--- /dev/null
+++ b/private/os2/os2ses/os2ses.h
@@ -0,0 +1,324 @@
+/*++
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ os2ses.h
+
+Abstract:
+
+ Main header file for OS2SES module.
+ This module contains includes for both WIN32 and native NT modules.
+ Most files are clean WIN32 sources. files named nt* contain NT
+ calls and provides the interaction with os2 server and client.
+
+Author:
+
+ Avi Nathan (avin) 17-Jul-1991
+
+Environment:
+
+ User Mode Only
+
+Revision History:
+
+--*/
+
+
+#ifdef NTOS2_ONLY
+#include <nt.h>
+#include <ntrtl.h>
+#include <nturtl.h>
+#include "os2win.h"
+#endif // NTOS2_ONLY
+
+#include "os2dbg.h"
+
+#ifdef WIN32_ONLY
+#include <windows.h>
+#include "os2nt.h"
+#endif // WIN32_ONLY
+
+#include "os2crt.h"
+
+#if DBG
+extern ULONG Os2Debug;
+
+#ifdef NTOS2_ONLY
+#define ASSERT1( str, exp ) \
+ if (!(exp)) \
+ { \
+ UCHAR WinErrBuf[100]; \
+ \
+ sprintf(WinErrBuf, "%s NtStatus %lx\n", str, Status); \
+ \
+ RtlAssert( #exp, __FILE__, __LINE__, WinErrBuf ); \
+ }
+
+#endif // NTOS2_ONLY
+#ifdef WIN32_ONLY
+#define ASSERT1( str, exp ) \
+ if (!(exp)) \
+ { \
+ UCHAR WinErrBuf[100]; \
+ \
+ sprintf(WinErrBuf, "%s WinError %lx\n", str, GetLastError()); \
+ \
+ RtlAssert( #exp, __FILE__, __LINE__, WinErrBuf ); \
+ }
+
+#endif // WIN32_ONLY
+#else // DBG
+#define ASSERT1( str, exp )
+#endif // DBG
+
+extern BOOLEAN fService; // Are we running as a service ?
+
+#include "sesport.h"
+
+#define WINDOW_DEFAULT_INPUT_MODE (ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_WINDOW_INPUT | ENABLE_PROCESSED_INPUT)
+#define WINDOW_DEFAULT_OUTPUT_MODE (ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT)
+#define OS2_DEFAULT_INPUT_MODE 0
+#define OS2_DEFAULT_OUTPUT_MODE (ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT)
+#define OS2_MOUSE_DEAFULT_EVENT_MASK (OS2_MOUSE_MOTION | OS2_MOUSE_MOTION_WITH_BN1_DOWN | OS2_MOUSE_BN1_DOWN | OS2_MOUSE_MOTION_WITH_BN2_DOWN | OS2_MOUSE_BN2_DOWN)
+#define OS2_MOUSE_LEGAL_EVENT_MASK (OS2_MOUSE_MOTION | OS2_MOUSE_MOTION_WITH_BN1_DOWN | OS2_MOUSE_BN1_DOWN | OS2_MOUSE_MOTION_WITH_BN2_DOWN | OS2_MOUSE_BN2_DOWN | OS2_MOUSE_MOTION_WITH_BN3_DOWN | OS2_MOUSE_BN3_DOWN)
+
+#define CONSOLE_HANDLE_SIGNATURE 0x00000003
+#define CONSOLE_HANDLE(HANDLE) (((ULONG)(HANDLE) & CONSOLE_HANDLE_SIGNATURE) == CONSOLE_HANDLE_SIGNATURE)
+#define LONG_MINUS_ONE 0xFFFFFFFF
+
+#define OS2_SERVER_THREAD_PRIORITY THREAD_PRIORITY_NORMAL
+#define OS2_EVENT_THREAD_PRIORITY THREAD_PRIORITY_TIME_CRITICAL
+#define OS2_WAITER_THREAD_PRIORITY THREAD_PRIORITY_HIGHEST
+
+
+HANDLE Ow2hOs2srvPort; /* handle for the port with OS2SRV */
+HANDLE Ow2hSession; /* handle for the session (return from OS2SRV) */
+
+/* os2ses side listner and reply for Vio, Kbd, Mou, Mon & Ctrl ports */
+
+HANDLE Ow2hOs2sesPort; /* handle for the LPC port */
+
+/* SectionHandle & Base Address of Vio, Kbd and Ctrl shared data section
+ *
+ * address of the shared memory section of the console ports.
+ */
+
+PVOID Os2SessionCtrlDataBaseAddress;
+HANDLE Os2SessionCtrlDataSectionHandle;
+PVOID Os2SessionDataBaseAddress;
+HANDLE Os2SessionSesGrpDataSectionHandle;
+
+POS2_SES_GROUP_PARMS SesGrp;
+
+#define Os2SessionNetDataBaseAddress Os2SessionCtrlDataBaseAddress
+
+PVOID KbdAddress;
+
+/* handles of Win-Console */
+
+HANDLE hConsoleInput; /* Input Handle */
+HANDLE hConsoleOutput; /* Output Handle */
+HANDLE hPopUpOutput; /* PopUp Handle */
+HANDLE hConOut; /* Current Output Handle: hConsoleOutput or hPopUpOutput */
+HANDLE hConsoleStdIn; /* Standart Input Handle */
+HANDLE hConsoleStdOut; /* Standart Output Handle */
+HANDLE hConsoleStdErr; /* Standart Error Handle */
+
+USHORT hStdInConsoleType; /* IS_CONSOLE StdHandle flag */
+USHORT hStdOutConsoleType; /* IS_CONSOLE StdHandle flag */
+USHORT hStdErrConsoleType; /* IS_CONSOLE StdHandle flag */
+
+/* handles of threads */
+
+HANDLE hCtrlListenThread;
+HANDLE EventServerThreadHandle;
+HANDLE Ow2hSessionRequestThread;
+
+/*
+ * Handle & Base Address of LVB (LogicalVideoBuffer)
+ */
+
+HANDLE LVBHandle;
+PUCHAR LVBBuffer;
+
+/*
+ * Handle of Pause(^S) event
+ */
+
+HANDLE PauseEvent;
+
+HANDLE HandleHeap; /* address of heap space for KBD handles */
+
+ULONG timing;
+BOOLEAN Od2SignalEnabled;
+ULONG Os2srvCountryCode;
+ULONG Os2srvCodePage[2];
+UCHAR Os2srvKeyboardLayout[2];
+ULONG PortMessageHeaderSize;
+ULONG KbdEventQueueSize;
+ULONG MouEventQueueSize;
+ULONG Os2WindowFocus;
+DWORD InputModeFlags; /* Console Input Mode */
+DWORD DefaultWinInputMode; /* Default Win Console Output Mode */
+DWORD ReturnCode;
+DWORD SetConsoleInputModeAgain; /* need to set console mode after Win CreateProcess */
+DWORD SetConsoleOutputModeAgain;
+ULONG ApplicationNcbAddress;
+ULONG ApplicationPostAddress;
+DWORD Os2ReturnCode;
+#ifdef DBCS
+// MSKK Jan.14.1993 V-AkihiS
+UCHAR OldWinAttr[3]; /* Win32 attr at entry point (OS2 format) */
+#else
+UCHAR OldWinAttr; /* Win32 attr at entry point (OS2 format) */
+#endif
+
+
+#if DBG
+BOOL fVerbose;
+BOOL fTrace;
+BOOL fBrkOnStart;
+#endif
+
+/*
+ * initialize procedures
+ */
+
+DWORD InitOs2SessionPort(
+ char *PgmName,
+ char **envp
+ );
+DWORD AnsiInit(VOID);
+DWORD AnsiInitForSession(VOID);
+DWORD VioInit(IN VOID);
+DWORD VioInitForSession(IN VOID);
+DWORD NLSInit();
+DWORD KbdInitForNLS(IN ULONG KbdCP);
+DWORD VioInitForNLS(IN ULONG VioCP);
+ULONG NtGetIntegerFromUnicodeString(IN WCHAR *sCountryCode);
+DWORD CreateServerThreads(VOID);
+DWORD ResumeServerThreads(VOID);
+DWORD SesGrpInit(VOID);
+ULONG
+Ow2GetProcessIdFromLPCMessage(
+ IN PVOID LPCMessage
+ );
+
+/*
+ * ServerThreads to serve all port requests
+ */
+
+VOID ServeSessionRequests(VOID);
+DWORD SessionRequestThread(IN PVOID Parameter);
+DWORD EventServerThread(IN PVOID Parameter);
+
+/*
+ * ServerRoutine to handle the requests
+ */
+
+BOOL ServeTmRequest(IN PSCTMREQUEST PReq, OUT PVOID PStatus);
+BOOL ServeWinCreateProcess(IN PWINEXECPGM_MSG PReq, OUT PVOID PStatus);
+BOOL ServeKbdRequest(IN PKBDREQUEST PReq, OUT PVOID PStatus,
+ IN PVOID pMsg, OUT PULONG pReply);
+BOOL ServeMouRequest(IN PMOUREQUEST PReq, OUT PVOID PStatus,
+ IN PVOID pMsg, OUT PULONG pReply);
+BOOL ServeMonRequest(IN PMONREQUEST PReq, OUT PVOID PStatus,
+ IN PVOID pMsg, OUT PULONG pReply);
+BOOL ServeNetRequest(IN PNETREQUEST PReq, OUT PVOID PStatus);
+BOOL ServePrtRequest(IN PPRTREQUEST PReq, OUT PVOID PStatus);
+#ifdef DBCS
+// MSKK Dec.23.1992 V-AkihiS
+BOOL ServeImmonRequest(IN PIMMONREQUEST PReq, OUT PVOID PStatus);
+#endif
+
+/*
+ * routine to save requests for proposed replies
+ */
+
+VOID SavePortMessegeInfo(OUT PVOID MonHeader,
+ IN PVOID pMsg);
+VOID SaveKbdPortMessegeInfo(OUT PVOID MonHeader,
+ OUT PVOID KbdRequestArea,
+ IN PVOID pMsg);
+VOID SendMonReply(IN PVOID MonHeader,
+ IN PVOID pData,
+ IN USHORT Length);
+VOID SendMouReply(IN PVOID MonHeader,
+ IN PVOID pData);
+VOID SendKbdReply(IN PVOID MonHeader,
+ IN PVOID KbdRequestArea,
+ IN PVOID pData,
+ IN USHORT Length);
+
+VOID DisableScreenUpdate();
+VOID EnableScreenUpdate();
+VOID SendNewFocusSet(IN ULONG WindowFocus);
+
+VOID RestartEventServerThread(VOID);
+
+VOID RestoreWin32ParmsBeforeTermination();
+VOID TerminateSession(VOID);
+VOID Os2sesTerminateThread(VOID);
+VOID Os2sesTerminateThreadRc(IN ULONG Rc);
+
+VOID
+EventReleaseLPC(
+ IN ULONG ProcessId
+ );
+
+VOID
+Ow2Exit(
+ IN UINT StringCode,
+ IN PCHAR ErrorText,
+ IN int ExitCode
+ );
+
+BOOL EventHandlerRoutine (IN ULONG CtrlType);
+BOOL SendSignalToOs2Srv(IN int SignalType);
+VOID SetEventHandlers(IN BOOL fSet);
+
+PVOID StartEventHandler(VOID);
+PVOID StartEventHandlerForSession(VOID);
+
+DWORD CreateOS2SRV(OUT PHANDLE hProcess);
+
+DWORD RemoveConForWinProcess();
+DWORD AddConAfterWinProcess();
+
+/*
+ * OS2 error used in OS2.EXE
+ *
+ * cannot include os2err.h because of collapstion wirh Nt/Win error def.
+ */
+
+#define ERROR_MONITOR_NOT_SUPPORTED 165
+#define NO_ERROR_MOUSE_NO_DATA 393
+#define ERROR_VIO_MODE 355
+#define ERROR_VIO_WIDTH 356
+#define ERROR_VIO_ROW 358
+#define ERROR_VIO_COL 359
+#define ERROR_KBD_INVALID_LENGTH 376
+#define ERROR_KBD_INVALID_ECHO_MASK 377
+#define ERROR_KBD_INVALID_INPUT_MASK 378
+#define ERROR_MOUSE_INV_PARMS 387
+#define ERROR_VIO_NO_POPUP 405
+#define ERROR_VIO_INVALID_PARMS 421
+#define ERROR_VIO_INVALID_LENGTH 438
+#define ERROR_KBD_NO_MORE_HANDLE 440
+#define ERROR_MON_INVALID_PARMS 379
+#define ERROR_MON_INVALID_HANDLE 381
+#define ERROR_MON_BUFFER_TOO_SMALL 382
+#define ERROR_MON_BUFFER_EMPTY 383
+#define ERROR_MON_DATA_TOO_LARGE 384
+#define ERROR_NLS_NO_CTRY_CODE 398
+
+/*
+ * Signal subtypes for XCPT_SIGNAL
+ */
+#define XCPT_SIGNAL_INTR 1
+#define XCPT_SIGNAL_KILLPROC 3
+#define XCPT_SIGNAL_BREAK 4
+
+HANDLE Ow2ForegroundWindow;