Changeset 1467 for trunk/src/win32k/dev16
- Timestamp:
- Oct 27, 1999, 4:03:01 AM (26 years ago)
- Location:
- trunk/src/win32k/dev16
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/win32k/dev16/d16init.c
r847 r1467 1 /* $Id: d16init.c,v 1. 1 1999-09-06 02:19:55bird Exp $1 /* $Id: d16init.c,v 1.2 1999-10-27 02:02:53 bird Exp $ 2 2 * 3 3 * d16init - init routines for both drivers. … … 33 33 #include <memory.h> 34 34 35 #include "probkrnl.h" 35 36 #include "dev1632.h" 36 37 #include "dev16.h" 37 38 38 39 39 /** … … 61 61 /** 62 62 * init function - device 1. 63 * We will send an IOCtl request to the win32i$ (device 0) which will63 * We will send an IOCtl request to the elf$ (device 0) which will 64 64 * perform the Ring-0 initiation of the driver. 65 65 * @returns Status word. … … 77 77 NPSZ npszErrMsg = NULL; 78 78 79 rc = DosOpen("\\dev\\win32i$", &hDev0, &usAction, 0UL, FILE_NORMAL, 80 OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, 81 OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, 82 0UL); 79 rc = ProbeKernel(pRpIn); 83 80 if (rc == NO_ERROR) 84 81 { 85 param.pRpInitIn = pRpIn; 86 rc = DosDevIOCtl(&data, ¶m, D16_IOCTL_RING0INIT, D16_IOCTL_CAT, hDev0); 87 /* _asm int 3; */ 82 rc = DosOpen("\\dev\\elf$", &hDev0, &usAction, 0UL, FILE_NORMAL, 83 OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, 84 OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, 85 0UL); 88 86 if (rc == NO_ERROR) 89 87 { 90 if (data.Status != STATUS_DONE) 91 npszErrMsg = "Ring-0 initiation failed\n\r"; 88 param.pRpInitIn = pRpIn; 89 rc = DosDevIOCtl(&data, ¶m, D16_IOCTL_RING0INIT, D16_IOCTL_CAT, hDev0); 90 if (rc == NO_ERROR) 91 { 92 if (data.Status != STATUS_DONE) 93 npszErrMsg = "Ring-0 initiation failed\n\r"; 94 else 95 { 96 register NPSZ npsz = "Win32k.sys succesfully initiated!\n\r"; 97 DosPutMessage(1, strlen(npsz)+1, npsz); 98 pRpOut->Status = data.Status; 99 } 100 } 92 101 else 93 { 94 register NPSZ npsz = "Test.sys succesfully initiated!\n\r"; 95 DosPutMessage(1, strlen(npsz)+1, npsz); 96 pRpOut->Status = data.Status; 97 } 102 npszErrMsg = "DosDevIOCtl failed.\n\r"; 103 DosClose(hDev0); 98 104 } 99 105 else 100 npszErrMsg = "DosDevIOCtl failed\n\r"; 101 DosClose(hDev0); 106 npszErrMsg = "DosOpen failed.\n\r"; 102 107 } 103 108 else 104 npszErrMsg = "DosOpen failed\n\r"; 105 109 npszErrMsg = "ProbeKernel failed.\n\r"; 106 110 pRpOut->BPBArray = NULL; 107 111 pRpOut->CodeEnd = (USHORT)&CODE16END; … … 144 148 145 149 pDT2 = (PDOSTABLE2)((char FAR *)pDT + pDT->cul*4 + 1); 146 TKSSBase16 = pDT2->TKSSBase;150 TKSSBase16 = (ULONG)pDT2->pTKSSBase; 147 151 R0FlatCS16 = (USHORT)pDT2->R0FlatCS; 148 152 R0FlatDS16 = (USHORT)pDT2->R0FlatDS; … … 169 173 ) 170 174 { 171 /*_asm int 3;*/172 175 usRc = CallR0Init32(SSToDS_16(&rp32init)); 173 /*_asm int 3;*/174 176 } 175 177 else 176 178 usRc |= ERROR_I24_INVALID_PARAMETER; 177 179 178 ((PD16R0INITDATA)pRp->DataPacket)->Status = usRc;180 ((PD16R0INITDATA)pRp->DataPacket)->Status = usRc; 179 181 180 182 /* finished - unlock data and parm */ -
trunk/src/win32k/dev16/d16strat.c
r847 r1467 1 /* $Id: d16strat.c,v 1. 1 1999-09-06 02:19:55bird Exp $1 /* $Id: d16strat.c,v 1.2 1999-10-27 02:02:53 bird Exp $ 2 2 * 3 3 * d16strat.c - 16-bit strategy routine, device headers, device_helper (ptr) … … 36 36 { 37 37 { 38 (unsigned long)(void _far *)(&aDevHdrs[1]), 38 (unsigned long)(void _far *)(&aDevHdrs[1]), /* NextHeader */ 39 39 DEVLEV_3 | DEV_30 | DEV_CHAR_DEV, /* SDevAtt */ 40 40 (unsigned short)(void _near *)strategyAsm0, /* StrategyEP */ 41 41 0, /* InterruptEP */ 42 " win32i$ ", /* Later: elf ?*//* DevName */42 "elf$ ", /* DevName */ 43 43 0, /* SDevProtCS */ 44 44 0, /* SDevProtDS */ … … 67 67 USHORT R0FlatCS16 = 0; 68 68 USHORT R0FlatDS16 = 0; 69 BOOL fInitTime = TRUE; 69 70 70 71 … … 79 80 * Strategy routine. 80 81 * @returns Status word. 81 * @param pRpH Pointer to request packed header. 82 * @param pRpH Pointer to request packed header. (Do not change the pointer!) 82 83 * @parma usDev Device number. 83 84 * @remark This function is called from the entrypoint in dev1st.asm … … 85 86 USHORT NEAR strategy(PRPH pRpH, unsigned short usDev) 86 87 { 88 87 89 switch (pRpH->Cmd) 88 90 { 89 91 case CMDInit: /* INIT command */ 90 if (usDev == 0) 91 return dev0Init((PRPINITIN)pRpH, (PRPINITOUT)pRpH); 92 else 93 return dev1Init((PRPINITIN)pRpH, (PRPINITOUT)pRpH); 92 if (fInitTime) 93 { 94 if (usDev == 0) 95 return dev0Init((PRPINITIN)pRpH, (PRPINITOUT)pRpH); 96 else 97 return dev1Init((PRPINITIN)pRpH, (PRPINITOUT)pRpH); 98 } 99 break; 94 100 95 101 case CMDGenIOCTL: /* Generic IOCTL */ … … 104 110 case CMDShutdown: 105 111 return STATUS_DONE; 112 } 106 113 107 default: 108 return STATUS_DONE | STATUS_ERR_UNKCMD; 109 } 114 return STATUS_DONE | STATUS_ERR_UNKCMD; 110 115 } 111 116 … … 121 126 USHORT dev0GenIOCtl(PRP_GENIOCTL pRp) 122 127 { 123 /* _asm int 3;*/ 124 if (pRp->Category == D16_IOCTL_CAT && pRp->Function == D16_IOCTL_RING0INIT) 125 return R0Init16(pRp); 128 USHORT rc; 129 if (pRp->Category == D16_IOCTL_CAT) 130 { 131 switch (pRp->Function) 132 { 133 case D16_IOCTL_RING0INIT: 134 if (fInitTime) 135 { 136 rc = R0Init16(pRp); 137 fInitTime = FALSE; 138 return rc; 139 } 140 break; 141 142 case D16_IOCTL_GETKRNLOTES: 143 { 144 ULONG ulLin; 145 if (DevHelp_VirtToLin(SELECTOROF(pRp->DataPacket), OFFSETOF(pRp->DataPacket), &ulLin) != NO_ERROR) 146 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER; 147 return CallGetOTEs32(ulLin); 148 } 149 150 case D16_IOCTL_VERIFYPROCTAB: 151 if (fInitTime) 152 return CallVerifyProcTab32(); 153 break; 154 } 155 } 126 156 127 157 return STATUS_DONE | STERR | ERROR_I24_INVALID_PARAMETER; -
trunk/src/win32k/dev16/probkrnl.c
r847 r1467 1 /* $Id: probkrnl.c,v 1. 1 1999-09-06 02:19:55bird Exp $1 /* $Id: probkrnl.c,v 1.2 1999-10-27 02:02:53 bird Exp $ 2 2 * 3 3 * Description: Autoprobes the os2krnl file and os2krnl[*].sym files. … … 13 13 * How this works: 14 14 * 1. parses the device-line parameters and collects some "SysInfo". 15 * 2. gets the kernel object table. ( win32i$)15 * 2. gets the kernel object table. (elf$) 16 16 * 3. finds the kernel image and scans it for a build number. 17 17 * 4. locates and scans the symbol-file(s) for the entrypoints which are wanted. 18 * 5. the entry points are verified. ( win32i$)18 * 5. the entry points are verified. (elf$) 19 19 * 6. finished. 20 20 * … … 29 29 #ifdef DEBUGR3 30 30 #if 1 31 int printf(const char *, ...); 31 32 #define dprintf(a) printf a 32 33 #else … … 35 36 #else 36 37 #define dprintf(a) 38 #define static 37 39 #endif 38 40 … … 125 127 static char szMsg1[] = "\n\r\tFound kernel: "; 126 128 static char szMsg1a[] = "\n\r\tBuild: "; 127 static char szMsg2[] = "\n\r\ n\r\tFound symbolfile: ";129 static char szMsg2[] = "\n\r\tFound symbolfile: "; 128 130 static char szMsg4[] = "\n\r\tFailed to find symbolfile!\n\r"; 129 131 static char szMsgfailed[]= "failed!"; … … 311 313 312 314 /** 313 * kstrlen - String length 314 * @returns length of string 315 * @param p Pointer to string 316 */ 317 static int kstrlen(const char * p) 318 { 319 int len = 0; 320 while ( p[len++] != '\0'); 321 return len-1; 315 * kstrlen - String length. 316 * @returns Length of the string. 317 * @param psz Pointer to string. 318 * @status completely implemented and tested. 319 * @author knut st. osmundsen 320 */ 321 static int kstrlen(const char * psz) 322 { 323 int cch = 0; 324 while (psz[cch] != '\0') 325 cch++; 326 return cch; 322 327 } 323 328 … … 381 386 USHORT usAction = 0; 382 387 383 rc = DosOpen("\\dev\\ win32i$", &hDev0, &usAction, 0UL, FILE_NORMAL,388 rc = DosOpen("\\dev\\elf$", &hDev0, &usAction, 0UL, FILE_NORMAL, 384 389 OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, 385 390 OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, … … 430 435 /* read header and display it */ 431 436 rc = fread(&MapDef, sizeof(MAPDEF), 1, SymFile); 432 if ( rc)437 if (rc) 433 438 { 434 439 Buffer[0] = MapDef.achModName[0]; … … 591 596 } 592 597 593 /* Worker function for ReadOS2Krnl */ 598 /** 599 * Worker function for ReadOS2Krnl 600 * @returns 0 on success. 601 * errorcodes on failure. (-1 >= rc >= -14) 602 * @param 603 * @equiv 604 * @time 605 * @sketch 606 * @status 607 * @author knut st. osmundsen 608 * @remark 609 */ 594 610 static int ReadOS2Krnl2(HFILE krnl, unsigned long cbKrnl) 595 611 { … … 722 738 if (pObj->o32_size < KrnlOTEs.aObjects[i].ote_size) 723 739 return -12; 740 741 #if 0 /* don't work! */ 724 742 if ((pObj->o32_flags & 0xffffUL) != (KrnlOTEs.aObjects[i].ote_flags & 0xffffUL)) 725 743 return -14; 744 #endif 726 745 } 727 746 } … … 764 783 USHORT usAction = 0; 765 784 766 rc = DosOpen("\\dev\\ win32i$", &hDev0, &usAction, 0UL, FILE_NORMAL,785 rc = DosOpen("\\dev\\elf$", &hDev0, &usAction, 0UL, FILE_NORMAL, 767 786 OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, 768 787 OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, … … 779 798 return rc; 780 799 #else 800 KrnlOTEs.cObjects = 23; 781 801 return 0; 782 802 #endif … … 857 877 858 878 /* functions */ 859 if (rc > -50)879 if (rc == 0) 860 880 { 861 881 puts(szMsg2);
Note:
See TracChangeset
for help on using the changeset viewer.