Changeset 2836 for trunk/src/win32k/dev16/d16init.c
- Timestamp:
- Feb 21, 2000, 5:45:47 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/win32k/dev16/d16init.c
r1678 r2836 1 /* $Id: d16init.c,v 1. 4 1999-11-10 01:45:30bird Exp $1 /* $Id: d16init.c,v 1.5 2000-02-21 04:45:45 bird Exp $ 2 2 * 3 3 * d16init - init routines for both drivers. … … 48 48 * @remark pRpIn and pRpOut points to the same memory. 49 49 */ 50 USHORT _neardev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut)50 USHORT NEAR dev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut) 51 51 { 52 52 Device_Help = pRpIn->DevHlpEP; … … 70 70 * @remark pRpIn and pRpOut points to the same memory. 71 71 */ 72 USHORT _neardev1Init(PRPINITIN pRpIn, PRPINITOUT pRpOut)72 USHORT NEAR dev1Init(PRPINITIN pRpIn, PRPINITOUT pRpOut) 73 73 { 74 74 APIRET rc; … … 103 103 } 104 104 else 105 npszErrMsg = "DosDevIOCtl failed.\n\r"; 105 { 106 APIRET rc2 = rc; 107 NPSZ npsz; 108 /*0123456789012345678901234567890 1*/ 109 npszErrMsg = "DosDevIOCtl failed. rc= \n\r"; 110 111 npsz = &npszErrMsg[29]; 112 do 113 { 114 *npsz-- = (char)((rc2 % 10) + '0'); 115 rc2 = rc2/10; 116 } while (rc2 > 0); 117 } 118 106 119 DosClose(hDev0); 107 120 } … … 133 146 * @param pRp Generic IO Control request packet. 134 147 */ 135 USHORT R0Init16(PRP_GENIOCTL pRp)148 USHORT NEAR R0Init16(PRP_GENIOCTL pRp) 136 149 { 137 150 USHORT usRc = STATUS_DONE; 138 151 APIRET rc; 139 PDOSTABLE pDT;140 PDOSTABLE2 pDT2;141 152 142 153 /* First we're to get the DosTable2 stuff. */ 143 rc = DevHelp_GetDOSVar(9, 0, &pDT);154 rc = initGetDosTableData(); 144 155 if (rc == NO_ERROR) 145 156 { … … 150 161 ULONG ulLinData; 151 162 152 pDT2 = (PDOSTABLE2)((char FAR *)pDT + pDT->cul*4 + 1);153 TKSSBase16 = (ULONG)pDT2->pTKSSBase;154 R0FlatCS16 = (USHORT)pDT2->R0FlatCS;155 R0FlatDS16 = (USHORT)pDT2->R0FlatDS;156 163 if (!DevHelp_VirtToLin(SELECTOROF(pRp->ParmPacket), OFFSETOF(pRp->ParmPacket), &ulLinParm) 157 164 && … … 159 166 ) 160 167 { 161 if (!(rc = DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE | VMDHL_VERIFY,168 if (!(rc = DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE, 162 169 ulLinParm, sizeof(D16R0INITPARAM), 163 170 (LIN)~0UL, SSToDS_16(&hLockParm[0]), &cPages)) 164 171 && 165 !DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE | VMDHL_VERIFY,172 !DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE, 166 173 ulLinData, sizeof(D16R0INITDATA), 167 174 (LIN)~0UL, SSToDS_16(&hLockData[0]), &cPages) … … 215 222 return usRc; 216 223 } 224 225 226 227 /** 228 * Gets the data we need from the DosTables. 229 * This data is TKSSBase16, R0FlatCS16 and R0FlatDS16. 230 * @returns Same as DevHelp_GetDosVar. 231 * @status completely implemented. 232 * @author knut st. osmundsen (knut.stange.osmundsen@pmsc.no) 233 * @remark If you are not sure if TKSSBase16 is set or not, call this. 234 * After R0Init16 is called TKSSBase16 _is_ set. 235 * IMPORTANT! This function must _not_ be called after the initiation of the second device driver!!! 236 */ 237 USHORT NEAR initGetDosTableData(void) 238 { 239 APIRET rc; 240 PDOSTABLE pDT; 241 PDOSTABLE2 pDT2; 242 243 if (TKSSBase16 != 0) 244 return NO_ERROR; 245 246 /* First we're to get the DosTable2 stuff. */ 247 rc = DevHelp_GetDOSVar(9, 0, &pDT); 248 if (rc == NO_ERROR) 249 { 250 pDT2 = (PDOSTABLE2)((char FAR *)pDT + pDT->cul*4 + 1); 251 TKSSBase16 = (ULONG)pDT2->pTKSSBase; 252 R0FlatCS16 = (USHORT)pDT2->R0FlatCS; 253 R0FlatDS16 = (USHORT)pDT2->R0FlatDS; 254 } 255 return rc; 256 }
Note:
See TracChangeset
for help on using the changeset viewer.