Ignore:
Timestamp:
Nov 26, 1999, 1:05:20 AM (26 years ago)
Author:
sandervl
Message:

Allow executable api exports

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/windllpeldr.cpp

    r1833 r1844  
    1 /* $Id: windllpeldr.cpp,v 1.3 1999-11-24 19:31:23 sandervl Exp $ */
     1/* $Id: windllpeldr.cpp,v 1.4 1999-11-26 00:05:19 sandervl Exp $ */
    22
    33/*
     
    8181//******************************************************************************
    8282//******************************************************************************
    83 ULONG Win32PeLdrDll::getApi(char *name)
    84 {
    85   ULONG       apiaddr, i, apilen;
    86   char       *apiname;
    87   char        tmp[4];
    88   NameExport *curexport;
    89   ULONG       ulAPIOrdinal;                      /* api requested by ordinal */
    90  
    91   apilen = strlen(name) + 1;
    92   if(apilen < 4)
    93   {
    94         *(ULONG *)tmp = 0;
    95         strcpy(tmp, name);
    96         apiname = tmp;
    97   }
    98   else  apiname = name;
    99 
    100   curexport = nameexports;
    101   for(i=0; i<nrNameExports; i++)
    102   {
    103     if(apilen == curexport->nlength &&
    104        *(ULONG *)curexport->name == *(ULONG *)name)
    105     {
    106         if(strcmp(curexport->name, name) == 0)
    107                 return(curexport->virtaddr);
    108     }
    109     curexport = (NameExport *)((ULONG)curexport->name + curexport->nlength);
    110   }
    111   return(0);
    112 }
    113 //******************************************************************************
    114 //******************************************************************************
    115 ULONG Win32PeLdrDll::getApi(int ordinal)
    116 {
    117  ULONG       apiaddr, i;
    118  OrdExport  *curexport;
    119  NameExport *nexport;
    120 
    121   curexport = ordexports;
    122   for(i=0;i<nrOrdExports;i++) {
    123         if(curexport->ordinal == ordinal)
    124                 return(curexport->virtaddr);
    125         curexport++;
    126   }
    127   //Name exports also contain an ordinal, so check this
    128   nexport = nameexports;
    129   for(i=0;i<nrNameExports;i++) {
    130         if(nexport->ordinal == ordinal)
    131                 return(nexport->virtaddr);
    132 
    133         nexport = (NameExport *)((ULONG)nexport->name + nexport->nlength);
    134   }
    135   return(0);
    136 }
    137 //******************************************************************************
    138 //******************************************************************************
    13983BOOL Win32PeLdrDll::isLxDll()
    14084{
Note: See TracChangeset for help on using the changeset viewer.