Ignore:
Timestamp:
Feb 21, 2000, 5:45:47 AM (26 years ago)
Author:
bird
Message:

ProbKrnl and code for importing krnl symbols has been enhanched.
Now we'll lock 32-bit segments into memory too.
And some other fixes...

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:30 bird Exp $
     1/* $Id: d16init.c,v 1.5 2000-02-21 04:45:45 bird Exp $
    22 *
    33 * d16init - init routines for both drivers.
     
    4848 * @remark    pRpIn and pRpOut points to the same memory.
    4949 */
    50 USHORT _near dev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut)
     50USHORT NEAR dev0Init(PRPINITIN pRpIn, PRPINITOUT pRpOut)
    5151{
    5252    Device_Help = pRpIn->DevHlpEP;
     
    7070 * @remark    pRpIn and pRpOut points to the same memory.
    7171 */
    72 USHORT _near dev1Init(PRPINITIN pRpIn, PRPINITOUT pRpOut)
     72USHORT NEAR dev1Init(PRPINITIN pRpIn, PRPINITOUT pRpOut)
    7373{
    7474    APIRET          rc;
     
    103103            }
    104104            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
    106119            DosClose(hDev0);
    107120        }
     
    133146 * @param     pRp  Generic IO Control request packet.
    134147 */
    135 USHORT R0Init16(PRP_GENIOCTL pRp)
     148USHORT NEAR R0Init16(PRP_GENIOCTL pRp)
    136149{
    137150    USHORT usRc = STATUS_DONE;
    138151    APIRET rc;
    139     PDOSTABLE  pDT;
    140     PDOSTABLE2 pDT2;
    141152
    142153    /* First we're to get the DosTable2 stuff. */
    143     rc = DevHelp_GetDOSVar(9, 0, &pDT);
     154    rc = initGetDosTableData();
    144155    if (rc == NO_ERROR)
    145156    {
     
    150161        ULONG ulLinData;
    151162
    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;
    156163        if (!DevHelp_VirtToLin(SELECTOROF(pRp->ParmPacket), OFFSETOF(pRp->ParmPacket), &ulLinParm)
    157164            &&
     
    159166            )
    160167        {
    161             if (!(rc = DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE | VMDHL_VERIFY,
     168            if (!(rc = DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE,
    162169                                ulLinParm, sizeof(D16R0INITPARAM),
    163170                                (LIN)~0UL, SSToDS_16(&hLockParm[0]), &cPages))
    164171                &&
    165                 !DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE | VMDHL_VERIFY,
     172                !DevHelp_VMLock(VMDHL_LONG | VMDHL_WRITE,
    166173                                ulLinData, sizeof(D16R0INITDATA),
    167174                                (LIN)~0UL, SSToDS_16(&hLockData[0]), &cPages)
     
    215222    return usRc;
    216223}
     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 */
     237USHORT 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.