Changeset 1467 for trunk/src/win32k/dev16/d16strat.c
- Timestamp:
- Oct 27, 1999, 4:03:01 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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;
Note:
See TracChangeset
for help on using the changeset viewer.