Changeset 5505 for trunk/src


Ignore:
Timestamp:
Apr 15, 2001, 11:06:50 AM (24 years ago)
Author:
sandervl
Message:

RegQueryValueExA/W fixes

File:
1 edited

Legend:

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

    r5154 r5505  
    1 /* $Id: registry.cpp,v 1.9 2001-02-17 19:37:17 sandervl Exp $ */
     1/* $Id: registry.cpp,v 1.10 2001-04-15 09:06:50 sandervl Exp $ */
    22
    33/*
     
    864864ODINFUNCTION6(LONG,RegQueryValueExA,HKEY,   hkey,
    865865                                    LPSTR,  lpszValueName,
     866                                    LPDWORD,lpdwReserved,
    866867                                    LPDWORD,lpdwType,
    867                                     LPDWORD,lpdwReserved,
    868868                                    LPBYTE, lpbData,
    869869                                    LPDWORD,lpcbData)
     
    873873  return O32_RegQueryValueEx(ConvertKey(hkey),
    874874                             lpszValueName,
     875                             lpdwReserved,
    875876                             lpdwType,
    876                              lpdwReserved,
    877877                             lpbData,
    878878                             lpcbData);
     
    894894ODINFUNCTION6(LONG,RegQueryValueExW,HKEY,   hkey,
    895895                                    LPWSTR, lpszValueName,
     896                                    LPDWORD,lpdwReserved,
    896897                                    LPDWORD,lpdwType,
    897                                     LPDWORD,lpdwReserved,
    898898                                    LPBYTE, lpbData,
    899899                                    LPDWORD,lpcbData)
     
    902902  char *akeydata = NULL;
    903903  LONG  rc;
     904  DWORD dwType;
    904905
    905906  if(lpbData && lpcbData)
     
    909910  }
    910911
     912  if(lpdwType == NULL) {
     913    lpdwType = &dwType;
     914  }
     915
    911916  rc = CALL_ODINFUNC(RegQueryValueExA)(hkey,
    912917                                       astring,
     918                                       lpdwReserved,
    913919                                       lpdwType,
    914                                        lpdwReserved,
    915920                                       (LPBYTE)akeydata,
    916921                                       lpcbData);
     
    919924  if(rc == ERROR_SUCCESS && lpbData && lpcbData)
    920925  {
    921     if(lpdwType == NULL) {//NULL apparently means REG_SZ
    922         lstrcpyAtoW((LPWSTR)lpbData, akeydata);
    923     }
    924     else {
    925         switch(*lpdwType) {
    926         case REG_SZ:
    927         case REG_EXPAND_SZ:
    928             lstrcpyAtoW((LPWSTR)lpbData, akeydata);
    929             break;
    930         case REG_MULTI_SZ:
    931         case REG_LINK: //???
    932             dprintf(("ERROR: key data must be translated from Unicode to Ascii!!"));
    933             break;
    934         default:
    935             memcpy(lpbData, akeydata, *lpcbData);
    936             break;
    937         }
    938     }
     926      switch(*lpdwType) {
     927      case REG_SZ:
     928      case REG_EXPAND_SZ:
     929          lstrcpyAtoW((LPWSTR)lpbData, akeydata);
     930          break;
     931      case REG_MULTI_SZ:
     932      case REG_LINK: //???
     933          dprintf(("ERROR: key data must be translated from Unicode to Ascii!!"));
     934          break;
     935      default:
     936          memcpy(lpbData, akeydata, *lpcbData);
     937          break;
     938      }
    939939  }
    940940  FreeAsciiString(astring);
Note: See TracChangeset for help on using the changeset viewer.