Ignore:
Timestamp:
Sep 8, 2000, 8:07:52 PM (25 years ago)
Author:
sandervl
Message:

exception changes, implemented enumresourcelanguages + put back some old code

File:
1 edited

Legend:

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

    r4029 r4224  
    1 /* $Id: winimgres.cpp,v 1.45 2000-08-17 18:22:18 sandervl Exp $ */
     1/* $Id: winimgres.cpp,v 1.46 2000-09-08 18:07:52 sandervl Exp $ */
    22
    33/*
     
    810810//******************************************************************************
    811811//******************************************************************************
     812BOOL Win32ImageBase::enumResourceLanguagesA(HMODULE hmod, LPCSTR lpszType,
     813                                            LPCSTR lpszName,
     814                                            ENUMRESLANGPROCA lpEnumFunc,
     815                                            LONG lParam)
     816{
     817 PIMAGE_RESOURCE_DIRECTORY pResDirRet;
     818 PIMAGE_RESOURCE_DIRECTORY_ENTRY paResDirEntries;
     819 BOOL   fRet;
     820
     821    if (pResRootDir == NULL)
     822    {
     823        SetLastError(ERROR_RESOURCE_DATA_NOT_FOUND);
     824        return FALSE;
     825    }
     826
     827    if ((ULONG)lpEnumFunc < 0x10000 || (ULONG)lpEnumFunc >= 0xc0000000)
     828    {
     829        SetLastError(ERROR_NOACCESS);
     830        return FALSE;
     831    }
     832
     833    pResDirRet = getResSubDirA(pResRootDir, lpszType);
     834    if(!pResDirRet) {
     835        SetLastError(ERROR_RESOURCE_TYPE_NOT_FOUND);
     836        return FALSE;
     837    }
     838    pResDirRet = getResSubDirA(pResDirRet, lpszName);
     839    if(!pResDirRet) {
     840        SetLastError(ERROR_RESOURCE_NAME_NOT_FOUND);
     841        return FALSE;
     842    }
     843
     844    paResDirEntries = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)((ULONG)pResDirRet + sizeof(*pResDirRet));
     845    if(pResDirRet->NumberOfNamedEntries) {
     846        DebugInt3();
     847    }
     848    paResDirEntries += pResDirRet->NumberOfNamedEntries;
     849
     850    for(int i = 0;i < pResDirRet->NumberOfIdEntries;i++)
     851    {
     852        fRet = lpEnumFunc(hmod, lpszType, lpszName, paResDirEntries[i].u1.Id, lParam);
     853        if(!fRet)
     854                break;
     855    }
     856    return fRet;
     857}
     858//******************************************************************************
     859//******************************************************************************
     860BOOL Win32ImageBase::enumResourceLanguagesW(HMODULE hmod, LPCWSTR lpszType,
     861                                            LPCWSTR lpszName,
     862                                            ENUMRESLANGPROCW lpEnumFunc,
     863                                            LONG lParam)
     864{
     865 PIMAGE_RESOURCE_DIRECTORY pResDirRet;
     866 PIMAGE_RESOURCE_DIRECTORY_ENTRY paResDirEntries;
     867 BOOL   fRet;
     868
     869    if (pResRootDir == NULL)
     870    {
     871        SetLastError(ERROR_RESOURCE_DATA_NOT_FOUND);
     872        return FALSE;
     873    }
     874
     875    if ((ULONG)lpEnumFunc < 0x10000 || (ULONG)lpEnumFunc >= 0xc0000000)
     876    {
     877        SetLastError(ERROR_NOACCESS);
     878        return FALSE;
     879    }
     880
     881    pResDirRet = getResSubDirW(pResRootDir, lpszType);
     882    if(!pResDirRet) {
     883        SetLastError(ERROR_RESOURCE_TYPE_NOT_FOUND);
     884        return FALSE;
     885    }
     886    pResDirRet = getResSubDirW(pResDirRet, lpszName);
     887    if(!pResDirRet) {
     888        SetLastError(ERROR_RESOURCE_NAME_NOT_FOUND);
     889        return FALSE;
     890    }
     891
     892    paResDirEntries = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)((ULONG)pResDirRet + sizeof(*pResDirRet));
     893    if(pResDirRet->NumberOfNamedEntries) {
     894        DebugInt3();
     895    }
     896    paResDirEntries += pResDirRet->NumberOfNamedEntries;
     897
     898    for(int i = 0;i < pResDirRet->NumberOfIdEntries;i++)
     899    {
     900        fRet = lpEnumFunc(hmod, lpszType, lpszName, paResDirEntries[i].u1.Id, lParam);
     901        if(!fRet)
     902                break;
     903    }
     904    return fRet;
     905}
     906//******************************************************************************
     907//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.