Changeset 7916 for trunk/src


Ignore:
Timestamp:
Feb 15, 2002, 4:07:41 PM (24 years ago)
Author:
sandervl
Message:

Wine 20020215 resync + added extended logging

Location:
trunk/src/oleaut32
Files:
5 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/oleaut32/makefile

    r7397 r7916  
    1 # $Id: makefile,v 1.31 2001-11-19 12:33:37 sandervl Exp $
     1# $Id: makefile,v 1.32 2002-02-15 15:07:36 sandervl Exp $
    22
    33#
     
    77#
    88
     9
     10!if "$(DEBUG)" == "1"
     11DEFFILE    = oleaut32dbg.def
     12ORGDEFFILE = oleaut32.def
     13!endif
    914
    1015#
     
    3439#$(OBJDIR)\iPictureEmf.obj \
    3540$(OBJDIR)\typelib.obj \
     41$(OBJDIR)\tmarshal.obj \
    3642#$(OBJDIR)\itypelib.obj \
    3743#$(OBJDIR)\itypecomp.obj \
     
    4147$(OBJDIR)\connpt.obj \
    4248$(OBJDIR)\dispatch.obj \
     49$(OBJDIR)\propertyframe.obj \
    4350$(OBJDIR)\stubs.obj \
     51!if "$(DEBUG)" == "1"
     52$(OBJDIR)\dbgwrap.obj \
     53!endif
    4454$(OBJDIR)\oleaut32rsrc.obj
    4555
     
    5363$(ODIN32_LIB)/user32.lib \
    5464$(ODIN32_LIB)/ole32.lib \
     65$(ODIN32_LIB)/comctl32.lib \
    5566$(ODIN32_LIB)/gdi32.lib \
    5667$(ODIN32_LIB)/guidlib.lib \
  • trunk/src/oleaut32/oleaut.c

    r6944 r7916  
    2121#include "wine/obj_oleaut.h"
    2222#include "wine/obj_olefont.h"
     23
     24#include "tmarshal.h"
     25
    2326#include "debugtools.h"
    2427
     
    4043
    4144        StringFromGUID2(rcid,guidbuf,39);
    42 #ifdef __WIN32OS2__
    43         dprintf(("RegisterActiveObject %x %ls (%x) %x %x", punk, guidbuf, rcid, dwFlags, pdwRegister));
    44 #endif
    4545        ret = CreateItemMoniker(pdelimiter,guidbuf,&moniker);
    4646        if (FAILED(ret))
     
    6565        HRESULT                 ret;
    6666
    67 #ifdef __WIN32OS2__
    68         dprintf(("RevokeActiveObject %x %x", xregister, reserved));
    69 #endif
    70 
    7167        ret = GetRunningObjectTable(0,&runobtable);
    7268        if (FAILED(ret)) return ret;
     
    8884
    8985        StringFromGUID2(rcid,guidbuf,39);
    90 #ifdef __WIN32OS2__
    91         dprintf(("GetActiveObject %ls (%x) %x %x", guidbuf, rcid, preserved, ppunk));
    92 #endif
    9386        ret = CreateItemMoniker(pdelimiter,guidbuf,&moniker);
    9487        if (FAILED(ret))
     
    10598}
    10699
     100
    107101/***********************************************************************
    108102 *           OaBuildVersion           [OLEAUT32.170]
     
    111105 * OLE 2.1  NT                          1993-95 10     3023
    112106 * OLE 2.1                                      10     3027
     107 * Win32s 1.1e                                  20     4049
    113108 * OLE 2.20 W95/NT                      1993-96 20     4112
    114109 * OLE 2.20 W95/NT                      1993-96 20     4118
     
    117112 * OLE 2.40 NT??                        1993-98 40     4267
    118113 * OLE 2.40 W98 SE orig. file           1993-98 40     4275
     114 * OLE 2.40 W2K orig. file              1993-XX 40     4514
     115 *
     116 * I just decided to use version 2.20 for Win3.1, 2.30 for Win95 & NT 3.51,
     117 * and 2.40 for all newer OSs. The build number is maximum, i.e. 0xffff.
    119118 */
    120119UINT WINAPI OaBuildVersion()
    121120{
    122 #ifdef __WIN32OS2__
    123     dprintf(("OaBuildVersion %x", GetVersion() & 0x8000ffff));
    124 #else
    125     FIXME("Please report to a.mohr@mailto.de if you get version error messages !\n");
    126 #endif
    127121    switch(GetVersion() & 0x8000ffff)  /* mask off build number */
    128122    {
    129123    case 0x80000a03:  /* WIN31 */
    130                 return MAKELONG(4049, 20); /* from Win32s 1.1e */
    131     case 0x80000004:  /* WIN95 */
    132                 return MAKELONG(4265, 30);
     124                return MAKELONG(0xffff, 20);
     125    case 0x00003303:  /* NT351 */
     126                return MAKELONG(0xffff, 30);
     127    case 0x80000004:  /* WIN95; I'd like to use the "standard" w95 minor
     128                         version here (30), but as we still use w95
     129                         as default winver (which is good IMHO), I better
     130                         play safe and use the latest value for w95 for now.
     131                         Change this as soon as default winver gets changed
     132                         to something more recent */
    133133    case 0x80000a04:  /* WIN98 */
    134                 return MAKELONG(4275, 40); /* value of W98 SE; orig. W98 AFAIK has 4265, 30 just as W95 */
    135     case 0x00003303:  /* NT351 */
    136                 return MAKELONG(4265, 30); /* value borrowed from Win95 */
    137134    case 0x00000004:  /* NT40 */
    138 #ifdef __WIN32OS2__
    139                 return 0x2810b5; //returned by NT4, SP6
    140 #else
    141                 return MAKELONG(4122, 20); /* ouch ! Quite old, I guess */
    142 #endif
     135    case 0x00000005:  /* W2K */
     136                return MAKELONG(0xffff, 40);
    143137    default:
    144138                ERR("Version value not known yet. Please investigate it !\n");
     
    148142
    149143/***********************************************************************
    150  *              DllRegisterServer
     144 *              DllRegisterServer (OLEAUT32.320)
    151145 */
    152146HRESULT WINAPI OLEAUT32_DllRegisterServer() {
     
    156150
    157151/***********************************************************************
    158  *              DllUnregisterServer
     152 *              DllUnregisterServer (OLEAUT32.321)
    159153 */
    160154HRESULT WINAPI OLEAUT32_DllUnregisterServer() {
     
    162156    return S_OK;
    163157}
    164 
    165158
    166159extern void _get_STDFONT_CF(LPVOID);
     
    179172        }
    180173    }
     174    if (IsEqualGUID(rclsid,&CLSID_PSOAInterface)) {
     175        if (S_OK==TypeLibFac_DllGetClassObject(rclsid,iid,ppv))
     176            return S_OK;
     177        /*FALLTHROUGH*/
     178    }
    181179    FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid));
    182180    return CLASS_E_CLASSNOTAVAILABLE;
  • trunk/src/oleaut32/oleaut32.def

    r6944 r7916  
    1 ;/* $Id: oleaut32.def,v 1.8 2001-10-03 19:21:59 sandervl Exp $ */
     1;/* $Id: oleaut32.def,v 1.9 2002-02-15 15:07:37 sandervl Exp $ */
    22LIBRARY OLAUTOS2 INITINSTANCE
    33DESCRIPTION 'Odin32 System DLL - OleAut32'
     
    300300;427 stub GetRecordInfoFromTypeInfo ; stdcall (ptr ptr)
    301301;428 stub OleLoadPictureFileEx
    302 ;429 stub SafeArrayAllocDescriptorEx
     302
     303SafeArrayAllocDescriptorEx = _SafeArrayAllocDescriptorEx@12 @429
     304
    303305;430 stub SafeArrayCreateEx
    304306;431 stub SafeArrayCreateVectorEx
     
    312314VarBstrCat          = _VarBstrCat@12                    @439
    313315VarBstrCmp          = _VarBstrCmp@16                    @440
    314 ;441 stub VarCat ; stdcall (ptr ptr ptr)
     316VarCat              = _VarCat@12                        @441
     317
    315318;442 stub VarCmp ; stdcall (ptr ptr long long)
    316319;443 stub VarCyAbs
  • trunk/src/oleaut32/olefont.c

    r6711 r7916  
    2626#include "olectl.h"
    2727#include "debugtools.h"
    28 #include "heap.h"
    2928#include "connpt.h" /* for CreateConnectionPoint */
    3029
     
    292291  *ppvObj = 0;
    293292
     293  if (lpFontDesc == 0)
     294    return NO_ERROR; /* MSDN Oct 2001 */
     295
    294296  /*
    295297   * Try to construct a new instance of the class.
     
    13411343  BYTE  bAttributes;
    13421344  BYTE  bStringSize;
     1345  INT len;
    13431346
    13441347  _ICOM_THIS_From_IPersistStream(OLEFontImpl, iface);
     
    13991402    return E_FAIL;
    14001403
    1401   memset(readBuffer, 0, 0x100);
    14021404  IStream_Read(pLoadStream, readBuffer, bStringSize, &cbRead);
    14031405
     
    14081410    HeapFree(GetProcessHeap(), 0, this->description.lpstrName);
    14091411
    1410   this->description.lpstrName = HEAP_strdupAtoW(GetProcessHeap(),
    1411                                                     HEAP_ZERO_MEMORY,
    1412                                                     readBuffer);
     1412  len = MultiByteToWideChar( CP_ACP, 0, readBuffer, bStringSize, NULL, 0 );
     1413  this->description.lpstrName = HeapAlloc( GetProcessHeap(), 0, (len+1) * sizeof(WCHAR) );
     1414  MultiByteToWideChar( CP_ACP, 0, readBuffer, bStringSize, this->description.lpstrName, len );
     1415  this->description.lpstrName[len] = 0;
    14131416
    14141417  return S_OK;
     
    14881491   */
    14891492  if (this->description.lpstrName!=0)
    1490     bStringSize = lstrlenW(this->description.lpstrName);
     1493    bStringSize = WideCharToMultiByte( CP_ACP, 0, this->description.lpstrName,
     1494                                       strlenW(this->description.lpstrName), NULL, 0, NULL, NULL );
    14911495  else
    14921496    bStringSize = 0;
     
    14991503  if (bStringSize!=0)
    15001504  {
    1501     writeBuffer = HEAP_strdupWtoA(GetProcessHeap(),
    1502                                   HEAP_ZERO_MEMORY,
    1503                                   this->description.lpstrName);
    1504 
    1505     if (writeBuffer==0)
    1506       return E_OUTOFMEMORY;
     1505      if (!(writeBuffer = HeapAlloc( GetProcessHeap(), 0, bStringSize ))) return E_OUTOFMEMORY;
     1506      WideCharToMultiByte( CP_ACP, 0, this->description.lpstrName,
     1507                           strlenW(this->description.lpstrName),
     1508                           writeBuffer, bStringSize, NULL, NULL );
    15071509
    15081510    IStream_Write(pOutStream, writeBuffer, bStringSize, &cbWritten);
    1509    
    15101511    HeapFree(GetProcessHeap(), 0, writeBuffer);
    15111512
     
    16601661        LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj
    16611662) {
    1662         ICOM_THIS(IClassFactoryImpl,iface);
    1663 
    1664         if (IsEqualGUID(riid,&IID_IFont)) {
    1665             FONTDESC fd;
    1666 
    1667             WCHAR fname[] = { 'S','y','s','t','e','m',0 };
    1668 
    1669             fd.cbSizeofstruct = sizeof(fd);
    1670             fd.lpstrName      = fname;
    1671             fd.cySize.s.Lo    = 80000;
    1672             fd.cySize.s.Hi    = 0;
    1673             fd.sWeight        = 0;
    1674             fd.sCharset       = 0;
    1675             fd.fItalic        = 0;
    1676             fd.fUnderline     = 0;
    1677             fd.fStrikethrough = 0;
    1678             return OleCreateFontIndirect(&fd,riid,ppobj);
    1679         }
    1680 
    1681         FIXME("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj);
    1682         return E_NOINTERFACE;
     1663        FONTDESC fd;
     1664
     1665        WCHAR fname[] = { 'S','y','s','t','e','m',0 };
     1666
     1667        fd.cbSizeofstruct = sizeof(fd);
     1668        fd.lpstrName      = fname;
     1669        fd.cySize.s.Lo    = 80000;
     1670        fd.cySize.s.Hi    = 0;
     1671        fd.sWeight            = 0;
     1672        fd.sCharset       = 0;
     1673        fd.fItalic            = 0;
     1674        fd.fUnderline     = 0;
     1675        fd.fStrikethrough = 0;
     1676        return OleCreateFontIndirect(&fd,riid,ppobj);
     1677
    16831678}
    16841679
  • trunk/src/oleaut32/safearray.c

    r6944 r7916  
    2121#define SYSDUPSTRING(str) SysAllocStringLen((str), SysStringLen(str))
    2222
    23 /* Localy used methods */
     23/* Locally used methods */
    2424static INT 
    2525endOfDim(LONG *coor, SAFEARRAYBOUND *mat, LONG dim, LONG realDim);
     
    102102};
    103103
    104 static const int LAST_VARTYPE = sizeof(VARTYPE_SIZE)/sizeof(ULONG);
     104static const int LAST_VARTYPE = sizeof(VARTYPE_SIZE)/sizeof(VARTYPE_SIZE[0]);
    105105
    106106
     
    128128
    129129  return(S_OK);
     130}
     131
     132/*************************************************************************
     133 *              SafeArrayAllocDescriptorEx (OLEAUT32.429)
     134 * Allocate the appropriate amount of memory for the SafeArray descriptor
     135 *
     136 * This is a minimal implementation just to get things moving.
     137 *
     138 * The MSDN documentation on this doesn't tell us much.
     139 */
     140HRESULT WINAPI SafeArrayAllocDescriptorEx(
     141  VARTYPE vt,
     142  UINT    cDims,
     143  SAFEARRAY **ppsaOut)
     144{
     145  if ( (vt >= LAST_VARTYPE) ||
     146       ( VARTYPE_SIZE[vt] == VARTYPE_NOT_SUPPORTED ) )
     147    return E_UNEXPECTED;
     148
     149  return SafeArrayAllocDescriptor (cDims, ppsaOut);
    130150}
    131151
     
    357377    }
    358378    else if( psa->fFeatures == FADF_VARIANT) {
    359       HRESULT hr = VariantCopy(pv, elementStorageAddress);
     379      HRESULT hr;
     380      VariantInit(pv);
     381      hr = VariantCopy(pv, elementStorageAddress);
    360382      if (FAILED(hr)) {
    361383        SafeArrayUnlock(psa);
     
    514536  if(! validCoordinate(rgIndices, psa))
    515537    return DISP_E_BADINDEX;
     538
     539  /* Although it is dangerous to do this without having a lock, it is not
     540   * illegal.  Microsoft do warn of the danger.
     541   */
    516542
    517543  /* Figure out the number of items to skip */
     
    786812    lDelta *= psa->rgsabound[cDims].cElements;
    787813
     814  TRACE("elements=%ld, Lbound=%ld (delta=%ld)\n", psaboundNew->cElements, psaboundNew->lLbound, lDelta);
     815
    788816  if (lDelta == 0) { ;/* same size, maybe a change of lLbound, just set it */
    789817
     
    883911       releasing to the system the unused memory */
    884912
    885     if((pvNewBlock = HeapReAlloc(GetProcessHeap(), 0, psa->pvData,
     913    if((pvNewBlock = HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, psa->pvData,
    886914       (ulWholeArraySize + lDelta) * psa->cbElements)) == NULL)
    887915        return FALSE; /* TODO If we get here it means:
     
    896924       the descriptor in SafeArrayCreateVector function. */
    897925
    898     if((pvNewBlock = HeapAlloc(GetProcessHeap(), 0,
     926    if((pvNewBlock = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
    899927       ulWholeArraySize * psa->cbElements)) == NULL)
    900928        return FALSE;
     
    9931021  HRESULT hRes;
    9941022
     1023  if (!psa->cDims) return FALSE;
    9951024  for(; iter<psa->cDims; iter++) {
     1025    TRACE("coor[%d]=%ld\n", iter, coor[iter]);
    9961026    if((hRes = SafeArrayGetLBound(psa, (iter+1), &lLBound)) != S_OK)
    9971027      return FALSE;
     
    9991029      return FALSE;
    10001030 
    1001     if(lLBound == lUBound)
     1031    if(lLBound > lUBound)
    10021032      return FALSE;
    1003    
    1004     if((coor[iter] >= lLBound) && (coor[iter] <= lUBound))
    1005       return TRUE;
    1006     else
     1033
     1034    if((coor[iter] < lLBound) || (coor[iter] > lUBound))
    10071035      return FALSE;
    10081036  }
    1009   return FALSE;
     1037  return TRUE;
    10101038
    10111039
  • trunk/src/oleaut32/stubs.cpp

    r6944 r7916  
    1 /* $Id: stubs.cpp,v 1.12 2001-10-03 19:21:59 sandervl Exp $ */
     1/* $Id: stubs.cpp,v 1.13 2002-02-15 15:07:40 sandervl Exp $ */
    22/*
    33 * Win32 COM/OLE stubs for OS/2
     
    680680    return S_OK;
    681681}
    682 
    683 //*****************************************************************************
    684 //*****************************************************************************
    685 
    686 typedef struct tagOCPFIPARAMS
    687 {
    688     ULONG cbStructSize;
    689     HWND hWndOwner;
    690     int x;
    691     int y;
    692     LPCOLESTR lpszCaption;
    693     ULONG cObjects;
    694     LPUNKNOWN * lplpUnk;
    695     ULONG cPages;
    696     CLSID * lpPages;
    697     LCID lcid;
    698     DISPID dispidInitialProperty;
    699 
    700 } OCPFIPARAMS, * LPOCPFIPARAMS;
    701 
    702 HRESULT WIN32API OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
    703 {
    704     dprintf(("OLEAUT32: OleCreatePropertyFrameIndirect - stub"));
    705     return S_OK;
    706 }
    707 
    708 //*****************************************************************************
    709 //*****************************************************************************
    710 HRESULT WIN32API OleCreatePropertyFrame(HWND hwndOwner, UINT x, UINT y,
    711     LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN * ppUnk, ULONG cPages,
    712     LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved)
    713 {
    714     dprintf(("OLEAUT32: OleCreatePropertyFrame - stub"));
    715     return S_OK;
    716 }
    717 
     682//*****************************************************************************
     683//*****************************************************************************
  • trunk/src/oleaut32/typelib.h

    r6711 r7916  
    128128        INT16   cbSizeVft;      /* virtual table size, not including inherits */
    129129/*050*/ INT     size;           /* size in bytes, at least for structures */
    130         /* fixme: name of this field */
     130        /* FIXME: name of this field */
    131131        INT     datatype1;      /* position in type description table */
    132132                                /* or in base intefaces */
     
    543543*/
    544544
     545extern DWORD _invoke(LPVOID func,CALLCONV callconv, int nrargs, DWORD *args);
     546
    545547#include "poppack.h"
    546548
  • trunk/src/oleaut32/variant.c

    r7351 r7916  
    10241024                switch( vtFrom )
    10251025                {
     1026                case( VT_EMPTY ):
     1027                        V_UNION(pd,lVal) = 0;
     1028                        res = S_OK;
     1029                        break;
    10261030                case( VT_I1 ):
    10271031                        res = VarI4FromI1( V_UNION(ps,cVal), &V_UNION(pd,lVal) );
     
    14021406                switch( vtFrom )
    14031407                {
     1408                case( VT_EMPTY ):
     1409                        res = S_OK;
     1410                        V_UNION(pd,boolVal) = VARIANT_FALSE;
     1411                        break;
    14041412                case( VT_I1 ):
    14051413                        res = VarBoolFromI1( V_UNION(ps,cVal), &V_UNION(pd,boolVal) );
     
    19561964               * Variant.
    19571965               */
    1958               memcpy( &pvargDest->n1.n2, V_UNION(pvargSrc,byref), SizeOfVariantData( pvargSrc ) );
     1966              memcpy( &pvargDest->n1.n2.n3, V_UNION(pvargSrc,byref), SizeOfVariantData( pvargSrc ) );
    19591967              break;
    19601968          }
     
    42744282    struct tm t;
    42754283
    4276     TRACE("( 0x%x, 0x%x, 0x%p ), stub\n", wDosDate, wDosTime, pvtime );
     4284    TRACE("( 0x%x, 0x%x, %p ), stub\n", wDosDate, wDosTime, pvtime );
    42774285   
    42784286    t.tm_sec = (wDosTime & 0x001f) * 2;
     
    43624370INT WINAPI VariantTimeToDosDateTime(DATE pvtime, USHORT *wDosDate, USHORT *wDosTime)
    43634371{
    4364   struct tm t;
    4365  
    4366 #ifdef __WIN32OS2__
     4372    struct tm t;
    43674373    *wDosTime = 0;
    43684374    *wDosDate = 0;
    4369 #else
    4370   // PH 2001-11-15: this is definately gonna crash!
    4371     wDosTime = 0;
    4372     wDosDate = 0;
    4373 #endif
    4374 
    4375     TRACE("( 0x%x, 0x%x, 0x%p ), stub\n", *wDosDate, *wDosTime, &pvtime );
     4375
     4376    TRACE("( 0x%x, 0x%x, %p ), stub\n", *wDosDate, *wDosTime, &pvtime );
    43764377
    43774378    if (DateToTm(pvtime, 0, &t) < 0) return 0;
     
    46674668}
    46684669
     4670/**********************************************************************
     4671 *              VarCat [OLEAUT32.441]
     4672 */
     4673HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out)
     4674{
     4675    /* Should we VariantClear out? */
     4676    /* Can we handle array, vector, by ref etc. */
     4677    if ((V_VT(left)&VT_TYPEMASK) == VT_NULL &&
     4678        (V_VT(right)&VT_TYPEMASK) == VT_NULL)
     4679    {
     4680        V_VT(out) = VT_NULL;
     4681        return S_OK;
     4682    }
     4683    else if (V_VT(left) == VT_BSTR && V_VT(right) == VT_BSTR)
     4684    {
     4685        V_VT(out) = VT_BSTR;
     4686        VarBstrCat (V_BSTR(left), V_BSTR(right), &V_BSTR(out));
     4687        return S_OK;
     4688    }
     4689    else
     4690        FIXME ("types not supported\n");
     4691    return S_OK;
     4692}
Note: See TracChangeset for help on using the changeset viewer.