Changeset 1150 for trunk/src


Ignore:
Timestamp:
Oct 6, 1999, 10:08:10 AM (26 years ago)
Author:
sandervl
Message:

* empty log message *

File:
1 edited

Legend:

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

    r1146 r1150  
    1 /* $Id: winimgres.cpp,v 1.20 1999-10-05 23:24:31 phaller Exp $ */
     1/* $Id: winimgres.cpp,v 1.21 1999-10-06 08:07:41 sandervl Exp $ */
    22
    33/*
     
    1010 *
    1111 * TODO: Check created resource objects before loading the resource!
    12  * TODO: Is the name id of the version resource always 1?
    13  * TODO: Once the resource handling in PE2LX/win32k is changed,
     12 * TODO: Once the resource handling in PE2LX/win32k is changed,
    1413 *       getVersionStruct/Size can be moved into the Win32ImageBase class
    1514 *
     
    3635//PE spec says names & ids are sorted; keep on searching just to be sure
    3736//******************************************************************************
    38 PIMAGE_RESOURCE_DATA_ENTRY
     37PIMAGE_RESOURCE_DATA_ENTRY 
    3938 Win32ImageBase::getPEResourceEntry(ULONG id, ULONG type, ULONG lang)
    4039{
     
    7776    prdType = (PIMAGE_RESOURCE_DIRECTORY)((int)pResDir + (int)prde->u2.OffsetToData);
    7877
    79     if(i < pResDir->NumberOfNamedEntries)
     78    if(i < pResDir->NumberOfNamedEntries) 
    8079    {//name or id entry?
    8180        //SvL: 30-10-'97, high bit is set, so clear to get real offset
     
    8685        lstrcpynWtoA(typename, pstring->NameString, pstring->Length+1);
    8786        typename[pstring->Length] = 0;
    88 
     87       
    8988        if(!fNumType) {
    9089            if(stricmp(typename, (char *)type) == 0) {
     
    147146  prde    = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)((DWORD)prdType + sizeof(IMAGE_RESOURCE_DIRECTORY));
    148147
    149   if(level == 3 && *nodeData == LANG_GETFIRST) {
     148  //level 2 (id)   -> get first id?
     149  //level 3 (lang) -> get first language?
     150  if(*nodeData == IDLANG_GETFIRST) {
    150151        nrres  = prdType->NumberOfNamedEntries + prdType->NumberOfIdEntries;
    151152        fNumId = (prdType->NumberOfNamedEntries == 0);
     
    154155        fNumId = HIWORD(*nodeData) == 0;
    155156
    156         if(fNumId) {//numeric or string id?
     157        if(fNumId) {//numeric or string id?
    157158                nrres = prdType->NumberOfIdEntries;
    158159                prde += prdType->NumberOfNamedEntries;  //skip name entries
     
    165166        prdType2 = (PIMAGE_RESOURCE_DIRECTORY)((ULONG)pResDir + (ULONG)prde->u2.OffsetToData);
    166167
     168        if(*nodeData == IDLANG_GETFIRST) {
     169                fFound = TRUE; //always take the first one
     170        }
     171        else
    167172        if(!fNumId) {//name or id entry?
    168173                nameOffset = prde->u1.Name;
     
    184189                        fFound = TRUE;
    185190        }
    186         if(*nodeData == LANG_GETFIRST)
    187                 fFound = TRUE;
    188191
    189192        if(fFound) {
     
    394397    if(HIWORD(lpszType) != 0) {
    395398                astring2 = UnicodeToAsciiString(lpszType);
    396     }
     399    } 
    397400    else        astring2 = (char *)lpszType;
    398401
     
    432435    if(HIWORD(lpszType) != 0) {
    433436                astring2 = UnicodeToAsciiString(lpszType);
    434     }
     437    } 
    435438    else        astring2 = (char *)lpszType;
    436439
     
    478481        return FALSE;
    479482  }
    480   pData = getPEResourceEntry(1, NTRT_VERSION);
     483  pData = getPEResourceEntry(ID_GETFIRST, NTRT_VERSION);
    481484  if(pData == NULL) {
    482485        dprintf(("Win32PeLdrImage::getVersionStruct: couldn't find version resource!"));
Note: See TracChangeset for help on using the changeset viewer.