Ignore:
Timestamp:
Sep 13, 2000, 12:45:19 AM (25 years ago)
Author:
bird
Message:

Added compare function matchModName.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/winimagebase.h

    r4224 r4249  
    1 /* $Id: winimagebase.h,v 1.15 2000-09-08 18:07:51 sandervl Exp $ */
     1/* $Id: winimagebase.h,v 1.16 2000-09-12 22:45:19 bird Exp $ */
    22
    33/*
     
    55 *
    66 * Copyright 1998-1999 Sander van Leeuwen (sandervl@xs4all.nl)
     7 * Copyright 1999-2000 knut st. osmundsen (knut.stange.osmundsen@mynd.no)
    78 *
    89 *
     
    4142class Win32DllBase;
    4243
     44
    4345class Win32ImageBase
    4446{
     
    4648        DWORD magic;
    4749public:
    48         void checkObject()
    49         {
    50                 if(magic != MAGIC_WINIMAGE) {
    51                         eprintf(("Corrupt this pointer %X %X!!", this, magic));
    52                         DebugInt3();
    53                 }
    54         };
     50    void checkObject()
     51    {
     52        if (magic != MAGIC_WINIMAGE) {
     53            eprintf(("Corrupt this pointer %X %X!!", this, magic));
     54            DebugInt3();
     55        }
     56    };
    5557
    5658public:
     
    5961virtual ~Win32ImageBase();
    6062
    61         ULONG     getError()          { return errorState; };
    62         HINSTANCE getInstanceHandle() { return hinstance; };
     63    ULONG     getError()          { return errorState; };
     64    HINSTANCE getInstanceHandle() { return hinstance; };
    6365
    6466//Returns required OS version for this image
     
    6668
    6769virtual void  setFullPath(char *name);
    68         char *getFullPath()           { return fullpath; };
    69 
    70         char *getModuleName()         { return szModule; };
     70    char *getFullPath()           { return fullpath; };
     71    char *getModuleName()         { return szModule; };
    7172
    7273        //findResource returns the pointer of the resource's IMAGE_RESOURCE_DATA_ENTRY structure
    73         HRSRC findResourceA(LPCSTR lpszName, LPSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
    74         HRSRC findResourceW(LPWSTR lpszName, LPWSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
     74    HRSRC findResourceA(LPCSTR lpszName, LPSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
     75    HRSRC findResourceW(LPWSTR lpszName, LPWSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
    7576
    76         ULONG getResourceSizeA(LPSTR lpszName, LPSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
    77         ULONG getResourceSizeW(LPWSTR lpszName, LPWSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
    78         BOOL  enumResourceNamesA(HMODULE hmod, LPCTSTR  lpszType, ENUMRESNAMEPROCA lpEnumFunc, LONG lParam);
    79         BOOL  enumResourceNamesW(HMODULE hmod, LPCWSTR  lpszType, ENUMRESNAMEPROCW lpEnumFunc, LONG lParam);
    80         BOOL  enumResourceTypesA(HMODULE hmod, ENUMRESTYPEPROCA lpEnumFunc,
    81                                  LONG lParam);
    82         BOOL  enumResourceTypesW(HMODULE hmod, ENUMRESTYPEPROCW lpEnumFunc,
    83                                  LONG lParam);
    84         BOOL  enumResourceLanguagesA(HMODULE hmod, LPCSTR lpType, LPCSTR lpName,
    85                                      ENUMRESLANGPROCA lpEnumFunc, LONG lParam);
    86         BOOL  enumResourceLanguagesW(HMODULE hmod, LPCWSTR lpType, LPCWSTR lpName,
    87                                      ENUMRESLANGPROCW lpEnumFunc, LONG lParam);
     77    ULONG getResourceSizeA(LPSTR lpszName, LPSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
     78    ULONG getResourceSizeW(LPWSTR lpszName, LPWSTR lpszType, ULONG lang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL));
     79    BOOL  enumResourceNamesA(HMODULE hmod, LPCTSTR  lpszType, ENUMRESNAMEPROCA lpEnumFunc, LONG lParam);
     80    BOOL  enumResourceNamesW(HMODULE hmod, LPCWSTR  lpszType, ENUMRESNAMEPROCW lpEnumFunc, LONG lParam);
     81    BOOL  enumResourceTypesA(HMODULE hmod, ENUMRESTYPEPROCA lpEnumFunc,
     82                             LONG lParam);
     83    BOOL  enumResourceTypesW(HMODULE hmod, ENUMRESTYPEPROCW lpEnumFunc,
     84                             LONG lParam);
     85    BOOL  enumResourceLanguagesA(HMODULE hmod, LPCSTR lpType, LPCSTR lpName,
     86                                 ENUMRESLANGPROCA lpEnumFunc, LONG lParam);
     87    BOOL  enumResourceLanguagesW(HMODULE hmod, LPCWSTR lpType, LPCWSTR lpName,
     88                                 ENUMRESLANGPROCW lpEnumFunc, LONG lParam);
    8889
    89         ULONG getVersionSize();
    90         BOOL  getVersionStruct(char *verstruct, ULONG bufLength);
     90    ULONG getVersionSize();
     91    BOOL  getVersionStruct(char *verstruct, ULONG bufLength);
    9192
    92         //Returns pointer to data of resource handle
    93         char *getResourceAddr(HRSRC hResource);
    94         ULONG getResourceSize(HRSRC hResource);
     93    //Returns pointer to data of resource handle
     94    char *getResourceAddr(HRSRC hResource);
     95    ULONG getResourceSize(HRSRC hResource);
    9596
    96         //returns ERROR_SUCCESS or error code
     97    //returns ERROR_SUCCESS or error code
    9798static  ULONG isPEImage(char *szFileName);
    9899static  BOOL  findDll(const char *pszFileName, char *pszFullName,
    99100                      int cchFullName, const char *pszAltPath = NULL);
    100101
    101         void  setEntryPoint(ULONG startAddress) { entryPoint = startAddress; };
     102    void  setEntryPoint(ULONG startAddress)        { entryPoint = startAddress; };
    102103
    103         void  setTLSAddress(LPVOID dwTlsAddress)        { tlsAddress = dwTlsAddress; };
    104         void  setTLSIndexAddr(LPDWORD dwTlsIndexAddr)   { tlsIndexAddr = dwTlsIndexAddr; };
    105         void  setTLSInitSize(ULONG dwTlsSize)           { tlsInitSize = dwTlsSize; };
    106         void  setTLSTotalSize(ULONG dwTlsSize)          { tlsTotalSize = dwTlsSize; };
    107         void  setTLSCallBackAddr(PIMAGE_TLS_CALLBACK *dwTlsCallBackAddr)
    108         {
    109            tlsCallBackAddr = dwTlsCallBackAddr;
    110         };
     104    void  setTLSAddress(LPVOID dwTlsAddress)        { tlsAddress = dwTlsAddress; };
     105    void  setTLSIndexAddr(LPDWORD dwTlsIndexAddr)   { tlsIndexAddr = dwTlsIndexAddr; };
     106    void  setTLSInitSize(ULONG dwTlsSize)           { tlsInitSize = dwTlsSize; };
     107    void  setTLSTotalSize(ULONG dwTlsSize)          { tlsTotalSize = dwTlsSize; };
     108    void  setTLSCallBackAddr(PIMAGE_TLS_CALLBACK *dwTlsCallBackAddr)
     109    {
     110       tlsCallBackAddr = dwTlsCallBackAddr;
     111    };
    111112
    112         void  tlsAttachThread();        //setup TLS structures for new thread
    113         void  tlsDetachThread();        //destroy TLS structures
     113    void  tlsAttachThread();    //setup TLS structures for new thread
     114    void  tlsDetachThread();    //destroy TLS structures
    114115
    115116virtual BOOL  insideModule(ULONG address);
    116117virtual BOOL  insideModuleCode(ULONG address);
    117118
    118 virtual ULONG getApi(char *name)  = 0;
     119virtual ULONG getApi(char *name)  = 0;
    119120virtual ULONG getApi(int ordinal) = 0;
    120121
     
    124125
    125126static Win32ImageBase * findModule(HMODULE hModule);
     127    BOOL  matchModName(const char *pszFilename) const;
    126128
    127         //Add image to dependency list of this image
    128         void  addDependency(Win32DllBase *dll);
    129         BOOL  dependsOn(Win32DllBase *dll);
     129    /* @cat Depencies */
     130    //Add image to dependency list of this image
     131    void  addDependency(Win32DllBase *dll);
     132    BOOL  dependsOn(Win32DllBase *dll);
    130133
    131134protected:
    132         void tlsAlloc();                //Allocate TLS index for this module
    133         void tlsDelete();               //Destroy TLS index for this module
     135    void tlsAlloc();        //Allocate TLS index for this module
     136    void tlsDelete();       //Destroy TLS index for this module
    134137
    135         ULONG                 errorState, entryPoint;
     138    ULONG                   errorState,
     139                            entryPoint;
    136140
    137         char                 *fullpath;
    138         char                  szModule[CCHMAXPATH];
    139         char                  szFileName[CCHMAXPATH];
     141    char *                  fullpath;
     142    char                    szModule[CCHMAXPATH];
     143    char                    szFileName[CCHMAXPATH];
    140144
    141         HINSTANCE             hinstance;
     145    HINSTANCE               hinstance;
    142146
    143         LPVOID                tlsAddress;               //address of TLS data
    144         LPDWORD               tlsIndexAddr;             //address of DWORD that receives the TLS index
    145         ULONG                 tlsInitSize;              //size of initialized TLS memory block
    146         ULONG                 tlsTotalSize;             //size of TLS memory block
    147         PIMAGE_TLS_CALLBACK  *tlsCallBackAddr;  //ptr to TLS callback array
    148         ULONG                 tlsIndex;         //module TLS index
     147    LPVOID                  tlsAddress;         //address of TLS data
     148    LPDWORD                 tlsIndexAddr;       //address of DWORD that receives the TLS index
     149    ULONG                   tlsInitSize;        //size of initialized TLS memory block
     150    ULONG                   tlsTotalSize;       //size of TLS memory block
     151    PIMAGE_TLS_CALLBACK *   tlsCallBackAddr;    //ptr to TLS callback array
     152    ULONG                   tlsIndex;           //module TLS index
    149153
    150         PIMAGE_RESOURCE_DIRECTORY  getResSubDirW(PIMAGE_RESOURCE_DIRECTORY pResDir, LPCWSTR lpszName);
    151         PIMAGE_RESOURCE_DIRECTORY  getResSubDirA(PIMAGE_RESOURCE_DIRECTORY pResDir, LPCTSTR lpszName);
     154    PIMAGE_RESOURCE_DIRECTORY  getResSubDirW(PIMAGE_RESOURCE_DIRECTORY pResDir, LPCWSTR lpszName);
     155    PIMAGE_RESOURCE_DIRECTORY  getResSubDirA(PIMAGE_RESOURCE_DIRECTORY pResDir, LPCTSTR lpszName);
    152156
    153         PIMAGE_RESOURCE_DATA_ENTRY getResDataLang(PIMAGE_RESOURCE_DIRECTORY pResDir, ULONG language, BOOL fGetDefault = FALSE);
     157    PIMAGE_RESOURCE_DATA_ENTRY getResDataLang(PIMAGE_RESOURCE_DIRECTORY pResDir, ULONG language, BOOL fGetDefault = FALSE);
    154158
    155         HRSRC                      getResourceLang(PIMAGE_RESOURCE_DIRECTORY pResDirToSearch);
    156         HRSRC                      getResourceLangEx(PIMAGE_RESOURCE_DIRECTORY pResDirToSearch,
    157                                                      DWORD lang);
     159    HRSRC                      getResourceLang(PIMAGE_RESOURCE_DIRECTORY pResDirToSearch);
     160    HRSRC                      getResourceLangEx(PIMAGE_RESOURCE_DIRECTORY pResDirToSearch,
     161                                                 DWORD lang);
    158162
    159         PIMAGE_RESOURCE_DIRECTORY pResRootDir;
     163    PIMAGE_RESOURCE_DIRECTORY  pResRootDir;
    160164
    161         //substracted from RVA data offsets
    162         ULONG                     ulRVAResourceSection;
     165    //substracted from RVA data offsets
     166    ULONG                   ulRVAResourceSection;
    163167
    164         //linked list of dlls loaded on behalf of this executable image (dll or exe)
    165         Queue                      loadedDlls;
     168    //linked list of dlls loaded on behalf of this executable image (dll or exe)
     169    Queue                   loadedDlls;
     170
    166171private:
    167 
    168         friend class Win32Resource;
    169         friend ULONG SYSTEM GetVersionSize(char *modname);
     172    friend class Win32Resource;
     173    friend ULONG SYSTEM GetVersionSize(char *modname);
    170174};
    171175
     
    180184} WINIMAGE_LOOKUP;
    181185
    182 #define WINIMAGE_LOOKUPADDR(a)  (WINIMAGE_LOOKUP *)((ULONG)a + PAGE_SIZE - sizeof(WINIMAGE_LOOKUP))
     186#define WINIMAGE_LOOKUPADDR(a)  (WINIMAGE_LOOKUP *)((ULONG)a + PAGE_SIZE - sizeof(WINIMAGE_LOOKUP))
    183187
    184188#endif //__WINIMAGEBASE_H__
Note: See TracChangeset for help on using the changeset viewer.