summaryrefslogtreecommitdiffstats
path: root/private/os2/os2ses/tmrqust.c
diff options
context:
space:
mode:
Diffstat (limited to 'private/os2/os2ses/tmrqust.c')
-rw-r--r--private/os2/os2ses/tmrqust.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/private/os2/os2ses/tmrqust.c b/private/os2/os2ses/tmrqust.c
new file mode 100644
index 000000000..85094dd94
--- /dev/null
+++ b/private/os2/os2ses/tmrqust.c
@@ -0,0 +1,125 @@
+/*++
+
+Copyright (c) 1989 Microsoft Corporation
+
+Module Name:
+
+ tmrqust.c
+
+Abstract:
+
+ This module contains the handler for task manager requests.
+
+Author:
+
+ Avi Nathan (avin) 17-Jul-1991
+
+Environment:
+
+ User Mode Only
+
+Revision History:
+
+--*/
+#include <stdio.h>
+#include <stdlib.h>
+#define WIN32_ONLY
+#include "os2ses.h"
+#include "os2res.h"
+
+extern DWORD Os2ReturnCode;
+
+BOOL ServeTmRequest(PSCTMREQUEST PReq, PVOID PStatus)
+{
+ UINT StringCode = 0;
+
+#if DBG
+ IF_OD2_DEBUG( SESSIONMGR )
+ {
+ KdPrint(("ServeTmRequest: Request %u\n", PReq->Request));
+ }
+#endif
+ *(PDWORD) PStatus = 0;
+
+ switch (PReq->Request) {
+ case TmExit:
+ Os2ReturnCode = PReq->ExitResults;
+ if ((PReq->ExitResults & 0x80000000) != 0) {
+ switch (PReq->ExitResults & 0x7fffffff) {
+ case 295:
+ StringCode = IDS_OS2_INITFAIL;
+ break;
+
+ case ERROR_INVALID_SEGMENT_NUMBER:
+ StringCode = IDS_OS2_SEGNUMBER;
+ break;
+
+ case ERROR_EXE_MARKED_INVALID:
+ StringCode = IDS_OS2_EXEINVALID;
+ break;
+
+ case ERROR_INVALID_STACKSEG:
+ StringCode = IDS_OS2_STACKSEG;
+ break;
+
+ case ERROR_FILE_NOT_FOUND:
+ StringCode = IDS_OS2_NOFILE;
+ break;
+
+ case ERROR_PROC_NOT_FOUND:
+ StringCode = IDS_OS2_NOPROC;
+ break;
+
+ case ERROR_INVALID_ORDINAL:
+ StringCode = IDS_OS2_NOORDINAL;
+ break;
+
+ case ERROR_INVALID_STARTING_CODESEG:
+ StringCode = IDS_OS2_CODESEG;
+ break;
+
+ case ERROR_INVALID_MODULETYPE:
+ StringCode = IDS_OS2_MODULETYPE;
+ break;
+
+ case ERROR_BAD_EXE_FORMAT:
+ StringCode = IDS_OS2_EXEFORMAT;
+ break;
+
+ case ERROR_RELOC_CHAIN_XEEDS_SEGLIM:
+ StringCode = IDS_OS2_RELOCCHAIN;
+ break;
+
+ case ERROR_BAD_FORMAT:
+ StringCode = IDS_OS2_BADFORMAT;
+ break;
+
+ default:
+ _itoa(PReq->ExitResults & 0x7fffffff, PReq->ErrorText, 10);
+ StringCode = IDS_OS2_OS2CODE;
+ break;
+
+ }
+ }
+ TerminateSession();
+ Ow2Exit(StringCode, &PReq->ErrorText[0], Os2ReturnCode);
+ //*(PDWORD) PStatus = 0;
+ return(FALSE);
+ break;
+
+ case TmReleaseLPC:
+ EventReleaseLPC(PReq->ExitResults);
+ break;
+
+ default:
+ *(PDWORD) PStatus = (DWORD) -1; // STATUS_INVALID_PARAMETER;
+#if DBG
+ KdPrint(( "OS2SES: Unknown TaskMan request = %X\n",
+ PReq->Request
+ ));
+#endif
+ break;
+ }
+
+ return(TRUE); // Do reply
+}