[ros-diffs] Integrated change by gvg in revision 12572

gvg at svn.reactos.com gvg at svn.reactos.com
Fri Dec 31 16:17:29 CET 2004


Wine-20041201 vendor drop
Added: vendor/wine/dlls/ole32/
Added: vendor/wine/dlls/ole32/current/
Added: vendor/wine/dlls/ole32/current/Makefile.in
Added: vendor/wine/dlls/ole32/current/antimoniker.c
Added: vendor/wine/dlls/ole32/current/bindctx.c
Added: vendor/wine/dlls/ole32/current/clipboard.c
Added: vendor/wine/dlls/ole32/current/compobj.c
Added: vendor/wine/dlls/ole32/current/compobj.spec
Added: vendor/wine/dlls/ole32/current/compobj_private.h
Added: vendor/wine/dlls/ole32/current/compositemoniker.c
Added: vendor/wine/dlls/ole32/current/datacache.c
Added: vendor/wine/dlls/ole32/current/dcom.idl
Added: vendor/wine/dlls/ole32/current/defaulthandler.c
Added: vendor/wine/dlls/ole32/current/errorinfo.c
Added: vendor/wine/dlls/ole32/current/filemoniker.c
Added: vendor/wine/dlls/ole32/current/ftmarshal.c
Added: vendor/wine/dlls/ole32/current/git.c
Added: vendor/wine/dlls/ole32/current/hglobalstream.c
Added: vendor/wine/dlls/ole32/current/ifs.c
Added: vendor/wine/dlls/ole32/current/ifs.h
Added: vendor/wine/dlls/ole32/current/itemmoniker.c
Added: vendor/wine/dlls/ole32/current/marshal.c
Added: vendor/wine/dlls/ole32/current/memlockbytes.c
Added: vendor/wine/dlls/ole32/current/memlockbytes16.c
Added: vendor/wine/dlls/ole32/current/moniker.c
Added: vendor/wine/dlls/ole32/current/moniker.h
Added: vendor/wine/dlls/ole32/current/ole16.c
Added: vendor/wine/dlls/ole32/current/ole2.c
Added: vendor/wine/dlls/ole32/current/ole2.spec
Added: vendor/wine/dlls/ole32/current/ole2_16.c
Added: vendor/wine/dlls/ole32/current/ole2conv.spec
Added: vendor/wine/dlls/ole32/current/ole2impl.c
Added: vendor/wine/dlls/ole32/current/ole2nls.c
Added: vendor/wine/dlls/ole32/current/ole2nls.spec
Added: vendor/wine/dlls/ole32/current/ole2prox.spec
Added: vendor/wine/dlls/ole32/current/ole2stubs.c
Added: vendor/wine/dlls/ole32/current/ole2thk.spec
Added: vendor/wine/dlls/ole32/current/ole32.spec
Added: vendor/wine/dlls/ole32/current/ole32_main.c
Added: vendor/wine/dlls/ole32/current/ole32_main.h
Added: vendor/wine/dlls/ole32/current/ole32res.rc
Added: vendor/wine/dlls/ole32/current/oleobj.c
Added: vendor/wine/dlls/ole32/current/oleproxy.c
Added: vendor/wine/dlls/ole32/current/olestd.h
Added: vendor/wine/dlls/ole32/current/regsvr.c
Added: vendor/wine/dlls/ole32/current/rpc.c
Added: vendor/wine/dlls/ole32/current/stg_bigblockfile.c
Added: vendor/wine/dlls/ole32/current/stg_stream.c
Added: vendor/wine/dlls/ole32/current/storage.c
Added: vendor/wine/dlls/ole32/current/storage.spec
Added: vendor/wine/dlls/ole32/current/storage32.c
Added: vendor/wine/dlls/ole32/current/storage32.h
Added: vendor/wine/dlls/ole32/current/version.rc
  _____  

Added: vendor/wine/dlls/ole32/current/Makefile.in
--- vendor/wine/dlls/ole32/current/Makefile.in	2004-12-31 15:14:19 UTC
(rev 12571)
+++ vendor/wine/dlls/ole32/current/Makefile.in	2004-12-31 15:17:24 UTC
(rev 12572)
@@ -0,0 +1,74 @@

+EXTRADEFS = -D_OLE32_ -DCOM_NO_WINDOWS_H
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = ole32.dll
+IMPORTS   = advapi32 user32 gdi32 rpcrt4 kernel32 ntdll
+EXTRALIBS = -luuid
+
+C_SRCS = \
+	antimoniker.c \
+	bindctx.c \
+	clipboard.c \
+	compobj.c \
+	compositemoniker.c \
+	datacache.c \
+	defaulthandler.c \
+	errorinfo.c \
+	filemoniker.c \
+	ftmarshal.c \
+	git.c \
+	hglobalstream.c \
+	ifs.c \
+	itemmoniker.c \
+	marshal.c \
+	memlockbytes.c \
+	moniker.c \
+	ole2.c \
+	ole2stubs.c \
+	ole2impl.c \
+	ole32_main.c \
+	oleobj.c \
+	oleproxy.c \
+	regsvr.c \
+	rpc.c \
+	stg_bigblockfile.c \
+	stg_stream.c \
+	storage32.c
+
+C_SRCS16 = \
+	memlockbytes16.c \
+	ole16.c \
+	ole2_16.c \
+	ole2nls.c \
+	storage.c
+
+SPEC_SRCS16 = \
+	compobj.spec \
+	ole2.spec \
+	ole2conv.spec \
+	ole2nls.spec \
+	ole2prox.spec \
+	ole2thk.spec \
+	storage.spec
+
+RC_SRCS = ole32res.rc
+RC_BINSRC = ole32res.rc
+RC_BINARIES = \
+	drag_copy.cur \
+	drag_link.cur \
+	drag_move.cur \
+	nodrop.cur 
+
+IDL_SRCS = \
+	dcom.idl
+
+SUBDIRS = tests
+
+ at MAKE_DLL_RULES@
+
+### Dependencies:
+
+# note: this will get overwritten by make depend
+$(ALL_OBJS): $(IDL_SRCS:.idl=.h)
  _____  

Added: vendor/wine/dlls/ole32/current/antimoniker.c
--- vendor/wine/dlls/ole32/current/antimoniker.c	2004-12-31
15:14:19 UTC (rev 12571)
+++ vendor/wine/dlls/ole32/current/antimoniker.c	2004-12-31
15:17:24 UTC (rev 12572)
@@ -0,0 +1,666 @@

+/**********************************************************************
*****************
+ *	                      AntiMonikers implementation
+ *
+ *               Copyright 1999  Noomen Hamza
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
USA
+
************************************************************************
***************/
+
+#include <assert.h>
+#include <stdarg.h>
+#include <string.h>
+
+#define COBJMACROS
+#define NONAMELESSUNION
+#define NONAMELESSSTRUCT
+
+#include "windef.h"
+#include "winbase.h"
+#include "winerror.h"
+#include "wine/unicode.h"
+#include "objbase.h"
+#include "wine/debug.h"
+#include "moniker.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(ole);
+
+const CLSID CLSID_AntiMoniker = {
+  0x305, 0, 0, {0xC0, 0, 0, 0, 0, 0, 0, 0x46}
+};
+
+/* AntiMoniker data structure */
+typedef struct AntiMonikerImpl{
+
+    IMonikerVtbl*  lpvtbl1;  /* VTable relative to the IMoniker
interface.*/
+
+    /* The ROT (RunningObjectTable implementation) uses the IROTData
interface to test whether
+     * two monikers are equal. That's whay IROTData interface is
implemented by monikers.
+     */
+    IROTDataVtbl*  lpvtbl2;  /* VTable relative to the IROTData
interface.*/
+
+    ULONG ref; /* reference counter for this object */
+
+} AntiMonikerImpl;
+
+/**********************************************************************
**********/
+/* AntiMoniker prototype functions :
*/
+
+/* IUnknown prototype functions */
+static HRESULT WINAPI AntiMonikerImpl_QueryInterface(IMoniker*
iface,REFIID riid,void** ppvObject);
+static ULONG   WINAPI AntiMonikerImpl_AddRef(IMoniker* iface);
+static ULONG   WINAPI AntiMonikerImpl_Release(IMoniker* iface);
+
+/* IPersist prototype functions */
+static HRESULT WINAPI AntiMonikerImpl_GetClassID(IMoniker* iface, CLSID
*pClassID);
+
+/* IPersistStream prototype functions */
+static HRESULT WINAPI AntiMonikerImpl_IsDirty(IMoniker* iface);
+static HRESULT WINAPI AntiMonikerImpl_Load(IMoniker* iface, IStream*
pStm);
+static HRESULT WINAPI AntiMonikerImpl_Save(IMoniker* iface, IStream*
pStm, BOOL fClearDirty);
+static HRESULT WINAPI AntiMonikerImpl_GetSizeMax(IMoniker* iface,
ULARGE_INTEGER* pcbSize);
+
+/* IMoniker prototype functions */
+static HRESULT WINAPI AntiMonikerImpl_BindToObject(IMoniker*
iface,IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID**
ppvResult);
+static HRESULT WINAPI AntiMonikerImpl_BindToStorage(IMoniker*
iface,IBindCtx* pbc, IMoniker* pmkToLeft, REFIID riid, VOID**
ppvResult);
+static HRESULT WINAPI AntiMonikerImpl_Reduce(IMoniker* iface,IBindCtx*
pbc, DWORD dwReduceHowFar,IMoniker** ppmkToLeft, IMoniker**
ppmkReduced);
+static HRESULT WINAPI AntiMonikerImpl_ComposeWith(IMoniker*
iface,IMoniker* pmkRight,BOOL fOnlyIfNotGeneric, IMoniker**
ppmkComposite);
+static HRESULT WINAPI AntiMonikerImpl_Enum(IMoniker* iface,BOOL
fForward, IEnumMoniker** ppenumMoniker);
+static HRESULT WINAPI AntiMonikerImpl_IsEqual(IMoniker* iface,IMoniker*
pmkOtherMoniker);
+static HRESULT WINAPI AntiMonikerImpl_Hash(IMoniker* iface,DWORD*
pdwHash);
+static HRESULT WINAPI AntiMonikerImpl_IsRunning(IMoniker*
iface,IBindCtx* pbc, IMoniker* pmkToLeft, IMoniker* pmkNewlyRunning);
+static HRESULT WINAPI AntiMonikerImpl_GetTimeOfLastChange(IMoniker*
iface, IBindCtx* pbc, IMoniker* pmkToLeft, FILETIME* pAntiTime);
+static HRESULT WINAPI AntiMonikerImpl_Inverse(IMoniker*
iface,IMoniker** ppmk);
+static HRESULT WINAPI AntiMonikerImpl_CommonPrefixWith(IMoniker*
iface,IMoniker* pmkOther, IMoniker** ppmkPrefix);
+static HRESULT WINAPI AntiMonikerImpl_RelativePathTo(IMoniker*
iface,IMoniker* pmOther, IMoniker** ppmkRelPath);
+static HRESULT WINAPI AntiMonikerImpl_GetDisplayName(IMoniker*
iface,IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR *ppszDisplayName);
+static HRESULT WINAPI AntiMonikerImpl_ParseDisplayName(IMoniker*
iface,IBindCtx* pbc, IMoniker* pmkToLeft, LPOLESTR pszDisplayName,
ULONG* pchEaten, IMoniker** ppmkOut);
+static HRESULT WINAPI AntiMonikerImpl_IsSystemMoniker(IMoniker*
iface,DWORD* pwdMksys);
+
+/**********************************************************************
**********/
+/* IROTData prototype functions
*/
+
+/* IUnknown prototype functions */
+static HRESULT WINAPI AntiMonikerROTDataImpl_QueryInterface(IROTData*
iface,REFIID riid,VOID** ppvObject);
+static ULONG   WINAPI AntiMonikerROTDataImpl_AddRef(IROTData* iface);
+static ULONG   WINAPI AntiMonikerROTDataImpl_Release(IROTData* iface);
+
+/* IROTData prototype function */
+static HRESULT WINAPI
AntiMonikerROTDataImpl_GetComparaisonData(IROTData* iface,BYTE*
pbData,ULONG cbMax,ULONG* pcbData);
+
+/* Local function used by AntiMoniker implementation */
+HRESULT WINAPI AntiMonikerImpl_Construct(AntiMonikerImpl* iface);
+HRESULT WINAPI AntiMonikerImpl_Destroy(AntiMonikerImpl* iface);
+
+/**********************************************************************
**********/
+/* Virtual function table for the AntiMonikerImpl class which  include
IPersist,*/
+/* IPersistStream and IMoniker functions.
*/
+static IMonikerVtbl VT_AntiMonikerImpl =
+{
+    AntiMonikerImpl_QueryInterface,
+    AntiMonikerImpl_AddRef,
+    AntiMonikerImpl_Release,
+    AntiMonikerImpl_GetClassID,
+    AntiMonikerImpl_IsDirty,
+    AntiMonikerImpl_Load,
+    AntiMonikerImpl_Save,
+    AntiMonikerImpl_GetSizeMax,
+    AntiMonikerImpl_BindToObject,
+    AntiMonikerImpl_BindToStorage,
+    AntiMonikerImpl_Reduce,
+    AntiMonikerImpl_ComposeWith,
+    AntiMonikerImpl_Enum,
+    AntiMonikerImpl_IsEqual,
+    AntiMonikerImpl_Hash,
+    AntiMonikerImpl_IsRunning,
+    AntiMonikerImpl_GetTimeOfLastChange,
+    AntiMonikerImpl_Inverse,
+    AntiMonikerImpl_CommonPrefixWith,
+    AntiMonikerImpl_RelativePathTo,
+    AntiMonikerImpl_GetDisplayName,
+    AntiMonikerImpl_ParseDisplayName,
+    AntiMonikerImpl_IsSystemMoniker
+};
+
+/**********************************************************************
**********/
+/* Virtual function table for the IROTData class.
*/
+static IROTDataVtbl VT_ROTDataImpl =
+{
+    AntiMonikerROTDataImpl_QueryInterface,
+    AntiMonikerROTDataImpl_AddRef,
+    AntiMonikerROTDataImpl_Release,
+    AntiMonikerROTDataImpl_GetComparaisonData
+};
+
+/**********************************************************************
*********
+ *        AntiMoniker_QueryInterface
+
************************************************************************
*******/
+HRESULT WINAPI AntiMonikerImpl_QueryInterface(IMoniker* iface,REFIID
riid,void** ppvObject)
+{
+    AntiMonikerImpl *This = (AntiMonikerImpl *)iface;
+
+  TRACE("(%p,%p,%p)\n",This,riid,ppvObject);
+
+  /* Perform a sanity check on the parameters.*/
+    if ( (This==0) || (ppvObject==0) )
+	return E_INVALIDARG;
+
+  /* Initialize the return parameter */
+  *ppvObject = 0;
+
+  /* Compare the riid with the interface IDs implemented by this
object.*/
+  if (IsEqualIID(&IID_IUnknown, riid) ||
+      IsEqualIID(&IID_IPersist, riid) ||
+      IsEqualIID(&IID_IPersistStream, riid) ||
+      IsEqualIID(&IID_IMoniker, riid)
+     )
+      *ppvObject = iface;
+    else if (IsEqualIID(&IID_IROTData, riid))
+        *ppvObject = (IROTData*)&(This->lpvtbl2);
+
+  /* Check that we obtained an interface.*/
+    if ((*ppvObject)==0)
+        return E_NOINTERFACE;
+
+   /* Query Interface always increases the reference count by one when
it is successful */
+  AntiMonikerImpl_AddRef(iface);
+
+  return S_OK;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_AddRef
+
************************************************************************
******/
+ULONG WINAPI AntiMonikerImpl_AddRef(IMoniker* iface)
+{
+    AntiMonikerImpl *This = (AntiMonikerImpl *)iface;
+
+    TRACE("(%p)\n",This);
+
+    return InterlockedIncrement(&This->ref);
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Release
+
************************************************************************
******/
+ULONG WINAPI AntiMonikerImpl_Release(IMoniker* iface)
+{
+    AntiMonikerImpl *This = (AntiMonikerImpl *)iface;
+    ULONG ref;
+
+    TRACE("(%p)\n",This);
+
+    ref = InterlockedDecrement(&This->ref);
+
+    /* destroy the object if there's no more reference on it */
+    if (ref == 0) AntiMonikerImpl_Destroy(This);
+
+    return ref;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_GetClassID
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_GetClassID(IMoniker* iface,CLSID
*pClassID)
+{
+    TRACE("(%p,%p),stub!\n",iface,pClassID);
+
+    if (pClassID==NULL)
+        return E_POINTER;
+
+    *pClassID = CLSID_AntiMoniker;
+
+    return S_OK;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_IsDirty
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_IsDirty(IMoniker* iface)
+{
+    /* Note that the OLE-provided implementations of the
IPersistStream::IsDirty
+       method in the OLE-provided moniker interfaces always return
S_FALSE because
+       their internal state never changes. */
+
+    TRACE("(%p)\n",iface);
+
+    return S_FALSE;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Load
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_Load(IMoniker* iface,IStream* pStm)
+{
+    DWORD constant=1,dwbuffer;
+    HRESULT res;
+
+    /* data read by this function is only a DWORD constant (must be 1)
! */
+    res=IStream_Read(pStm,&dwbuffer,sizeof(DWORD),NULL);
+
+    if (SUCCEEDED(res)&& dwbuffer!=constant)
+        return E_FAIL;
+
+    return res;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Save
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_Save(IMoniker* iface,IStream* pStm,BOOL
fClearDirty)
+{
+    DWORD constant=1;
+    HRESULT res;
+
+    /* data written by this function is only a DWORD constant set to 1
! */
+    res=IStream_Write(pStm,&constant,sizeof(constant),NULL);
+
+    return res;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_GetSizeMax
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_GetSizeMax(IMoniker* iface,
+                                          ULARGE_INTEGER* pcbSize)/*
Pointer to size of stream needed to save object */
+{
+    TRACE("(%p,%p)\n",iface,pcbSize);
+
+    if (pcbSize!=NULL)
+        return E_POINTER;
+
+    /* for more details see AntiMonikerImpl_Save coments */
+
+    /* Normaly the sizemax must be the  size of DWORD ! but I tested
this function it ususlly return 16 bytes */
+    /* more than the number of bytes used by AntiMoniker::Save function
*/
+    pcbSize->u.LowPart =  sizeof(DWORD)+16;
+
+    pcbSize->u.HighPart=0;
+
+    return S_OK;
+}
+
+/**********************************************************************
********
+ *         AntiMoniker_Construct (local function)
+
************************************************************************
*******/
+HRESULT WINAPI AntiMonikerImpl_Construct(AntiMonikerImpl* This)
+{
+
+    TRACE("(%p)\n",This);
+
+    /* Initialize the virtual fgunction table. */
+    This->lpvtbl1      = &VT_AntiMonikerImpl;
+    This->lpvtbl2      = &VT_ROTDataImpl;
+    This->ref          = 0;
+
+    return S_OK;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Destroy (local function)
+
************************************************************************
*******/
+HRESULT WINAPI AntiMonikerImpl_Destroy(AntiMonikerImpl* This)
+{
+    TRACE("(%p)\n",This);
+
+    return HeapFree(GetProcessHeap(),0,This);
+}
+
+/**********************************************************************
********
+ *                  AntiMoniker_BindToObject
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_BindToObject(IMoniker* iface,
+                                            IBindCtx* pbc,
+                                            IMoniker* pmkToLeft,
+                                            REFIID riid,
+                                            VOID** ppvResult)
+{
+    TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult);
+    return E_NOTIMPL;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_BindToStorage
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_BindToStorage(IMoniker* iface,
+                                             IBindCtx* pbc,
+                                             IMoniker* pmkToLeft,
+                                             REFIID riid,
+                                             VOID** ppvResult)
+{
+    TRACE("(%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,riid,ppvResult);
+    return E_NOTIMPL;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Reduce
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_Reduce(IMoniker* iface,
+                                      IBindCtx* pbc,
+                                      DWORD dwReduceHowFar,
+                                      IMoniker** ppmkToLeft,
+                                      IMoniker** ppmkReduced)
+{
+
TRACE("(%p,%p,%ld,%p,%p)\n",iface,pbc,dwReduceHowFar,ppmkToLeft,ppmkRedu
ced);
+
+    if (ppmkReduced==NULL)
+        return E_POINTER;
+
+    AntiMonikerImpl_AddRef(iface);
+
+    *ppmkReduced=iface;
+
+    return MK_S_REDUCED_TO_SELF;
+}
+/**********************************************************************
********
+ *        AntiMoniker_ComposeWith
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_ComposeWith(IMoniker* iface,
+                                           IMoniker* pmkRight,
+                                           BOOL fOnlyIfNotGeneric,
+                                           IMoniker** ppmkComposite)
+{
+
+
TRACE("(%p,%p,%d,%p)\n",iface,pmkRight,fOnlyIfNotGeneric,ppmkComposite);
+
+    if ((ppmkComposite==NULL)||(pmkRight==NULL))
+	return E_POINTER;
+
+    *ppmkComposite=0;
+
+    if (fOnlyIfNotGeneric)
+        return MK_E_NEEDGENERIC;
+    else
+        return CreateGenericComposite(iface,pmkRight,ppmkComposite);
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Enum
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_Enum(IMoniker* iface,BOOL fForward,
IEnumMoniker** ppenumMoniker)
+{
+    TRACE("(%p,%d,%p)\n",iface,fForward,ppenumMoniker);
+
+    if (ppenumMoniker == NULL)
+        return E_POINTER;
+
+    *ppenumMoniker = NULL;
+
+    return S_OK;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_IsEqual
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_IsEqual(IMoniker* iface,IMoniker*
pmkOtherMoniker)
+{
+    DWORD mkSys;
+
+    TRACE("(%p,%p)\n",iface,pmkOtherMoniker);
+
+    if (pmkOtherMoniker==NULL)
+        return S_FALSE;
+
+    IMoniker_IsSystemMoniker(pmkOtherMoniker,&mkSys);
+
+    if (mkSys==MKSYS_ANTIMONIKER)
+        return S_OK;
+    else
+        return S_FALSE;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Hash
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash)
+{
+    if (pdwHash==NULL)
+        return E_POINTER;
+
+    *pdwHash=0;
+
+    return S_OK;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_IsRunning
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_IsRunning(IMoniker* iface,
+                                         IBindCtx* pbc,
+                                         IMoniker* pmkToLeft,
+                                         IMoniker* pmkNewlyRunning)
+{
+    IRunningObjectTable* rot;
+    HRESULT res;
+
+    TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pmkNewlyRunning);
+
+    if (pbc==NULL)
+        return E_INVALIDARG;
+
+    res=IBindCtx_GetRunningObjectTable(pbc,&rot);
+
+    if (FAILED(res))
+    return res;
+
+    res = IRunningObjectTable_IsRunning(rot,iface);
+
+    IRunningObjectTable_Release(rot);
+
+    return res;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_GetTimeOfLastChange
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_GetTimeOfLastChange(IMoniker* iface,
+                                                   IBindCtx* pbc,
+                                                   IMoniker* pmkToLeft,
+                                                   FILETIME* pAntiTime)
+{
+    TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pAntiTime);
+    return E_NOTIMPL;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_Inverse
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_Inverse(IMoniker* iface,IMoniker** ppmk)
+{
+    TRACE("(%p,%p)\n",iface,ppmk);
+
+    if (ppmk==NULL)
+        return E_POINTER;
+
+    *ppmk=0;
+
+    return MK_E_NOINVERSE;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_CommonPrefixWith
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_CommonPrefixWith(IMoniker*
iface,IMoniker* pmkOther,IMoniker** ppmkPrefix)
+{
+    DWORD mkSys;
+
+    IMoniker_IsSystemMoniker(pmkOther,&mkSys);
+
+    if(mkSys==MKSYS_ITEMMONIKER){
+
+        IMoniker_AddRef(iface);
+
+        *ppmkPrefix=iface;
+
+        IMoniker_AddRef(iface);
+
+        return MK_S_US;
+    }
+    else
+        return MonikerCommonPrefixWith(iface,pmkOther,ppmkPrefix);
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_RelativePathTo
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_RelativePathTo(IMoniker* iface,IMoniker*
pmOther, IMoniker** ppmkRelPath)
+{
+    TRACE("(%p,%p,%p)\n",iface,pmOther,ppmkRelPath);
+
+    if (ppmkRelPath==NULL)
+        return E_POINTER;
+
+    IMoniker_AddRef(pmOther);
+
+    *ppmkRelPath=pmOther;
+
+    return MK_S_HIM;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_GetDisplayName
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_GetDisplayName(IMoniker* iface,
+                                              IBindCtx* pbc,
+                                              IMoniker* pmkToLeft,
+                                              LPOLESTR
*ppszDisplayName)
+{
+    static const WCHAR back[]={'\\','.','.',0};
+
+    TRACE("(%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,ppszDisplayName);
+
+    if (ppszDisplayName==NULL)
+        return E_POINTER;
+
+    if (pmkToLeft!=NULL){
+        FIXME("() pmkToLeft!=NULL not implemented \n");
+        return E_NOTIMPL;
+    }
+
+    *ppszDisplayName=CoTaskMemAlloc(sizeof(back));
+
+    if (*ppszDisplayName==NULL)
+        return E_OUTOFMEMORY;
+
+    strcpyW(*ppszDisplayName,back);
+
+    return S_OK;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_ParseDisplayName
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_ParseDisplayName(IMoniker* iface,
+                                                IBindCtx* pbc,
+                                                IMoniker* pmkToLeft,
+                                                LPOLESTR
pszDisplayName,
+                                                ULONG* pchEaten,
+                                                IMoniker** ppmkOut)
+{
+
TRACE("(%p,%p,%p,%p,%p,%p)\n",iface,pbc,pmkToLeft,pszDisplayName,pchEate
n,ppmkOut);
+    return E_NOTIMPL;
+}
+
+/**********************************************************************
********
+ *        AntiMoniker_IsSystemMoniker
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerImpl_IsSystemMoniker(IMoniker* iface,DWORD*
pwdMksys)
+{
+    TRACE("(%p,%p)\n",iface,pwdMksys);
+
+    if (!pwdMksys)
+        return E_POINTER;
+
+    (*pwdMksys)=MKSYS_ANTIMONIKER;
+
+    return S_OK;
+}
+
+/**********************************************************************
*********
+ *        AntiMonikerIROTData_QueryInterface
+
************************************************************************
*******/
+HRESULT WINAPI AntiMonikerROTDataImpl_QueryInterface(IROTData
*iface,REFIID riid,VOID** ppvObject)
+{
+
+    ICOM_THIS_From_IROTData(IMoniker, iface);
+
+    TRACE("(%p,%p,%p)\n",iface,riid,ppvObject);
+
+    return AntiMonikerImpl_QueryInterface(This, riid, ppvObject);
+}
+
+/**********************************************************************
*
+ *        AntiMonikerIROTData_AddRef
+ */
+ULONG   WINAPI AntiMonikerROTDataImpl_AddRef(IROTData *iface)
+{
+    ICOM_THIS_From_IROTData(IMoniker, iface);
+
+    TRACE("(%p)\n",iface);
+
+    return AntiMonikerImpl_AddRef(This);
+}
+
+/**********************************************************************
*
+ *        AntiMonikerIROTData_Release
+ */
+ULONG   WINAPI AntiMonikerROTDataImpl_Release(IROTData* iface)
+{
+    ICOM_THIS_From_IROTData(IMoniker, iface);
+
+    TRACE("(%p)\n",iface);
+
+    return AntiMonikerImpl_Release(This);
+}
+
+/**********************************************************************
********
+ *        AntiMonikerIROTData_GetComparaisonData
+
************************************************************************
******/
+HRESULT WINAPI AntiMonikerROTDataImpl_GetComparaisonData(IROTData*
iface,
+                                                         BYTE* pbData,
+                                                         ULONG cbMax,
+                                                         ULONG*
pcbData)
+{
+    FIXME("(),stub!\n");
+    return E_NOTIMPL;
+}
+
+/**********************************************************************
********
+ *        CreateAntiMoniker	[OLE32.@]
+
************************************************************************
******/
+HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk)
+{
+    AntiMonikerImpl* newAntiMoniker = 0;
+    HRESULT        hr = S_OK;
+    IID riid=IID_IMoniker;
+
+    TRACE("(%p)\n",ppmk);
+
+    newAntiMoniker = HeapAlloc(GetProcessHeap(), 0,
sizeof(AntiMonikerImpl));
+
+    if (newAntiMoniker == 0)
+        return STG_E_INSUFFICIENTMEMORY;
+
+    hr = AntiMonikerImpl_Construct(newAntiMoniker);
+
+    if (FAILED(hr)){
+
+        HeapFree(GetProcessHeap(),0,newAntiMoniker);
+        return hr;
+    }
+
+    hr =
AntiMonikerImpl_QueryInterface((IMoniker*)newAntiMoniker,&riid,(void**)p
pmk);
+
+    return hr;
+}
  _____  

Added: vendor/wine/dlls/ole32/current/bindctx.c
--- vendor/wine/dlls/ole32/current/bindctx.c	2004-12-31 15:14:19 UTC
(rev 12571)
+++ vendor/wine/dlls/ole32/current/bindctx.c	2004-12-31 15:17:24 UTC
(rev 12572)
@@ -0,0 +1,590 @@

+/**********************************************************************
*****************
+ *	                      BindCtx implementation
+ *
+ *  Copyright 1999  Noomen Hamza
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
USA
+
************************************************************************
***************/
+
+#include <stdarg.h>
+#include <string.h>
+#include <assert.h>
+
+#define COBJMACROS
+
+#include "winerror.h"
+#include "windef.h"
+#include "winbase.h"
+#include "wine/unicode.h"
+#include "objbase.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(ole);
+
+/* represent the first size table and it's increment block size */
+#define  BLOCK_TAB_SIZE 10
+#define  MAX_TAB_SIZE   0xFFFFFFFF
+
+/* data structure of the BindCtx table elements */
+typedef struct BindCtxObject{
+
+    IUnknown*   pObj; /* point on a bound object */
+
+    LPOLESTR  pkeyObj; /* key associated to this bound object */
+
+    BYTE regType; /* registration type: 1 if RegisterObjectParam and 0
if RegisterObjectBound */
+
+} BindCtxObject;
+
+/* BindCtx data strucrture */
+typedef struct BindCtxImpl{
+
+    IBindCtxVtbl *lpVtbl; /* VTable relative to the IBindCtx
interface.*/
+
+    ULONG ref; /* reference counter for this object */
+
+    BindCtxObject* bindCtxTable; /* this is a table in which all
bounded objects are stored*/
+    DWORD          bindCtxTableLastIndex;  /* first free index in the
table */
+    DWORD          bindCtxTableSize;   /* size table */
+
+    BIND_OPTS2 bindOption2; /* a structure which contains the bind
options*/
+
+} BindCtxImpl;
+
+/* IBindCtx prototype functions : */
+
+/* IUnknown functions*/
+static HRESULT WINAPI BindCtxImpl_QueryInterface(IBindCtx* iface,REFIID
riid,void** ppvObject);
+static ULONG   WINAPI BindCtxImpl_AddRef(IBindCtx* iface);
+static ULONG   WINAPI BindCtxImpl_Release(IBindCtx* iface);
+/* IBindCtx functions */
+static HRESULT WINAPI BindCtxImpl_RegisterObjectBound(IBindCtx*
iface,IUnknown* punk);
+static HRESULT WINAPI BindCtxImpl_RevokeObjectBound(IBindCtx* iface,
IUnknown* punk);
+static HRESULT WINAPI BindCtxImpl_ReleaseBoundObjects(IBindCtx* iface);
+static HRESULT WINAPI BindCtxImpl_SetBindOptions(IBindCtx*
iface,BIND_OPTS *pbindopts);
+static HRESULT WINAPI BindCtxImpl_GetBindOptions(IBindCtx*
iface,BIND_OPTS *pbindopts);
+static HRESULT WINAPI BindCtxImpl_GetRunningObjectTable(IBindCtx*
iface,IRunningObjectTable** pprot);
+static HRESULT WINAPI BindCtxImpl_RegisterObjectParam(IBindCtx*
iface,LPOLESTR pszkey, IUnknown* punk);
+static HRESULT WINAPI BindCtxImpl_GetObjectParam(IBindCtx*
iface,LPOLESTR pszkey, IUnknown** punk);
+static HRESULT WINAPI BindCtxImpl_EnumObjectParam(IBindCtx*
iface,IEnumString** ppenum);
+static HRESULT WINAPI BindCtxImpl_RevokeObjectParam(IBindCtx*
iface,LPOLESTR pszkey);
+/* Local functions*/
+HRESULT WINAPI BindCtxImpl_Construct(BindCtxImpl* This);
+HRESULT WINAPI BindCtxImpl_Destroy(BindCtxImpl* This);
+HRESULT WINAPI BindCtxImpl_GetObjectIndex(BindCtxImpl* This,IUnknown*
punk,LPOLESTR pszkey,DWORD *index);
+
+/* Virtual function table for the BindCtx class. */
+static IBindCtxVtbl VT_BindCtxImpl =
+    {
+    BindCtxImpl_QueryInterface,
+    BindCtxImpl_AddRef,
+    BindCtxImpl_Release,
+    BindCtxImpl_RegisterObjectBound,
+    BindCtxImpl_RevokeObjectBound,
+    BindCtxImpl_ReleaseBoundObjects,
+    BindCtxImpl_SetBindOptions,
+    BindCtxImpl_GetBindOptions,
+    BindCtxImpl_GetRunningObjectTable,
+    BindCtxImpl_RegisterObjectParam,
+    BindCtxImpl_GetObjectParam,
+    BindCtxImpl_EnumObjectParam,
+    BindCtxImpl_RevokeObjectParam
+};
+
+/**********************************************************************
*********
+ *        BindCtx_QueryInterface
+
************************************************************************
*******/
+HRESULT WINAPI BindCtxImpl_QueryInterface(IBindCtx* iface,REFIID
riid,void** ppvObject)
+{
+  BindCtxImpl *This = (BindCtxImpl *)iface;
+
+  TRACE("(%p,%p,%p)\n",This,riid,ppvObject);
+
+  /* Perform a sanity check on the parameters.*/
+  if ( (This==0) || (ppvObject==0) )
+      return E_INVALIDARG;
+
+  /* Initialize the return parameter.*/
+  *ppvObject = 0;
+
+  /* Compare the riid with the interface IDs implemented by this
object.*/
+  if (IsEqualIID(&IID_IUnknown, riid))
+      *ppvObject = (IBindCtx*)This;
+  else
+      if (IsEqualIID(&IID_IBindCtx, riid))
+          *ppvObject = (IBindCtx*)This;
+
+  /* Check that we obtained an interface.*/
+  if ((*ppvObject)==0)
+      return E_NOINTERFACE;
+
+   /* Query Interface always increases the reference count by one when
it is successful */
+  BindCtxImpl_AddRef(iface);
+
+  return S_OK;
+}
+
+/**********************************************************************
********
+ *       BindCtx_AddRef
+
************************************************************************
******/
+ULONG WINAPI BindCtxImpl_AddRef(IBindCtx* iface)
+{
+    BindCtxImpl *This = (BindCtxImpl *)iface;
+
+    TRACE("(%p)\n",This);
+
+    return InterlockedIncrement(&This->ref);
+}
+
+/**********************************************************************
********
+ *        BindCtx_Release
+
************************************************************************
******/
+ULONG WINAPI BindCtxImpl_Release(IBindCtx* iface)
+{
+    BindCtxImpl *This = (BindCtxImpl *)iface;
+    ULONG ref;
+
+    TRACE("(%p)\n",This);
+
+    ref = InterlockedDecrement(&This->ref);
+
+    if (ref == 0){
+        /* release all registered objects */
+        BindCtxImpl_ReleaseBoundObjects((IBindCtx*)This);
+
+        BindCtxImpl_Destroy(This);
+    }
+    return ref;
+}
+
+
+/**********************************************************************
********
+ *         BindCtx_Construct (local function)
+
************************************************************************
*******/
+HRESULT WINAPI BindCtxImpl_Construct(BindCtxImpl* This)
+{
+    TRACE("(%p)\n",This);
+
+    /* Initialize the virtual function table.*/
+    This->lpVtbl       = &VT_BindCtxImpl;
+    This->ref          = 0;
+
+    /* Initialize the BIND_OPTS2 structure */
+    This->bindOption2.cbStruct  = sizeof(BIND_OPTS2);
+    This->bindOption2.grfFlags = 0;
+    This->bindOption2.grfMode = STGM_READWRITE;
+    This->bindOption2.dwTickCountDeadline = 0;
+
+    This->bindOption2.dwTrackFlags = 0;
+    This->bindOption2.dwClassContext = CLSCTX_SERVER;
+    This->bindOption2.locale = 1033;
+    This->bindOption2.pServerInfo = 0;
+
+    /* Initialize the bindctx table */
+    This->bindCtxTableSize=BLOCK_TAB_SIZE;
+    This->bindCtxTableLastIndex=0;
+    This->bindCtxTable= HeapAlloc(GetProcessHeap(),
0,This->bindCtxTableSize*sizeof(BindCtxObject));
+
+    if (This->bindCtxTable==NULL)
+        return E_OUTOFMEMORY;
+
+    return S_OK;
+}
+
+/**********************************************************************
********
+ *        BindCtx_Destroy    (local function)
+
************************************************************************
*******/
+HRESULT WINAPI BindCtxImpl_Destroy(BindCtxImpl* This)
+{
+    TRACE("(%p)\n",This);
+
+    /* free the table space memory */
+    HeapFree(GetProcessHeap(),0,This->bindCtxTable);
+
+    /* free the bindctx structure */
+    HeapFree(GetProcessHeap(),0,This);
+
+    return S_OK;
+}
+
+
+/**********************************************************************
********
+ *        BindCtx_RegisterObjectBound
+
************************************************************************
******/
+HRESULT WINAPI BindCtxImpl_RegisterObjectBound(IBindCtx*
iface,IUnknown* punk)
+{
+    BindCtxImpl *This = (BindCtxImpl *)iface;
+    DWORD lastIndex=This->bindCtxTableLastIndex;
+
+    TRACE("(%p,%p)\n",This,punk);
+
+    if (punk==NULL)
+        return E_POINTER;
+
+    IUnknown_AddRef(punk);
+
+    /* put the object in the first free element in the table */
+    This->bindCtxTable[lastIndex].pObj = punk;
+    This->bindCtxTable[lastIndex].pkeyObj = NULL;
+    This->bindCtxTable[lastIndex].regType = 0;
+    lastIndex= ++This->bindCtxTableLastIndex;
+
+    if (lastIndex == This->bindCtxTableSize){ /* the table is full so
it must be resized */
+
[truncated at 1000 lines; 38414 more skipped] 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20041231/eea09f3a/attachment.html


More information about the Ros-diffs mailing list