Ignore:
Timestamp:
Feb 21, 2001, 8:47:59 AM (25 years ago)
Author:
bird
Message:

CallGate changes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/win32k/dev32/d32init.c

    r5202 r5224  
    1 /* $Id: d32init.c,v 1.36 2001-02-20 04:58:33 bird Exp $
     1/* $Id: d32init.c,v 1.37 2001-02-21 07:44:57 bird Exp $
    22 *
    33 * d32init.c - 32-bits init routines.
     
    175175            case 'E':/* Elf or EXe */
    176176                pszTmp2 = strpbrk(pszTmp, ":=/- ");
    177                 if (pszTmp[1] != 'x' && pszTmp != 'X')
     177                if (pszTmp[1] != 'x' && pszTmp[1] != 'X')
    178178                {
    179179                    options.fElf = !(pszTmp2 != NULL
     
    414414    #endif
    415415
     416    /* callgate */
     417    if ((rc = InitCallGate()) != NO_ERROR)
     418    {
     419        kprintf(("R0Init32: InitCallGate failed with rc=%d\n", rc));
     420        return (USHORT)rc;
     421    }
     422
    416423
    417424    /*
     
    436443        kprintf(("data segment lock failed with with rc=%d\n", rc));
    437444
    438     /* 16-bit data segment - is this really necessary? */
     445    /* 16-bit data segment - is this really necessary? - no!!! */
     446    #if 0 /* This should not be necessary!!! it's allocated from the kernel resident heap if I am not much mistaken. */
    439447    memset(SSToDS(&lockhandle), 0, sizeof(lockhandle));
    440448    rc = D32Hlp_VMLock2(&DATA16START,
     
    444452    if (rc != NO_ERROR)
    445453        kprintf(("16-bit data segment lock failed with with rc=%d\n", rc));
     454    #endif
    446455
    447456    return NO_ERROR;
     
    592601                                if ((*psz >= 'A' && *psz <= 'E') || (*psz >= 'a' && *psz <= 'e'))
    593602                                {
    594                                     pKrnlInfo->fKernel = (*psz - (*psz >= 'a' ? 'a'-1 : 'A'-1)) << KF_REV_SHIFT;
     603                                    pKrnlInfo->fKernel = (USHORT)((*psz - (*psz >= 'a' ? 'a'-1 : 'A'-1)) << KF_REV_SHIFT);
    595604                                    psz++;
    596605                                }
     
    904913                /* fixed five byte instructions */
    905914                case 0xe8:              /* call imm32 */
    906                     pach =+ 4;
    907                     cb =+ 4;
     915                    pach += 4;
     916                    cb += 4;
    908917                    break;
    909918
     
    12731282    int     cbmax;
    12741283    char *  pchCTEntry;                 /* Pointer to current calltab entry. */
     1284    ULONG   flWP;                       /* CR0 WP flag restore value. */
    12751285
    12761286    /*
     
    13271337     */
    13281338    pchCTEntry = &callTab[0];
     1339    flWP = x86DisableWriteProtect();
    13291340    for (i = 0; i < NBR_OF_KRNLIMPORTS; i++)
    13301341    {
     
    13661377                    kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when rehooking it!\n", i));
    13671378                    Int3(); /* ipe - later! */
     1379                    x86RestoreWriteProtect(flWP);
    13681380                    return ERROR_D32_IPE | (i << ERROR_D32_PROC_SHIFT) | ERROR_D32_PROC_FLAG;
    13691381                }
     
    14121424                    kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when rehooking it!\n", i));
    14131425                    Int3(); /* ipe - later! */
     1426                    x86RestoreWriteProtect(flWP);
    14141427                    return ERROR_D32_IPE | (i << ERROR_D32_PROC_SHIFT) | ERROR_D32_PROC_FLAG;
    14151428                }
     
    14441457                    kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when importing it!\n", i));
    14451458                    Int3(); /* ipe - later! */
     1459                    x86RestoreWriteProtect(flWP);
    14461460                    return ERROR_D32_IPE | (i << ERROR_D32_PROC_SHIFT) | ERROR_D32_PROC_FLAG;
    14471461                }
     
    14801494                    kprintf(("ImportTabInit: FATAL verify failed for procedure no.%d when importing it!\n", i));
    14811495                    Int3(); /* ipe - later! */
     1496                    x86RestoreWriteProtect(flWP);
    14821497                    return ERROR_D32_IPE | (i << ERROR_D32_PROC_SHIFT) | ERROR_D32_PROC_FLAG;
    14831498                }
     
    15171532                kprintf(("ImportTabInit: unsupported type. (procedure no.%d, cb=%d)\n", i, cb));
    15181533                Int3(); /* ipe - later! */
     1534                x86RestoreWriteProtect(flWP);
    15191535                return ERROR_D32_IPE | (i << ERROR_D32_PROC_SHIFT) | ERROR_D32_PROC_FLAG;
    15201536        } /* switch - type */
    15211537    }   /* for */
     1538
     1539    x86RestoreWriteProtect(flWP);
    15221540
    15231541    return NO_ERROR;
Note: See TracChangeset for help on using the changeset viewer.