/* * OLE2 library * * Copyright 1995 Martin von Loewis */ #include "windows.h" #include "winerror.h" #include "ole2.h" #include "process.h" #include "debug.h" #include "objbase.h" #include "objidl.h" #include "wine/obj_base.h" #include "wine/obj_clientserver.h" #include "wine/obj_storage.h" #include "wine/obj_moniker.h" /****************************************************************************** * These are static/global variables that the OLE module uses to maintain * it's state. */ /* * This is the lock count on the OLE library. It is controlled by the * OLEInitialize/OLEUninitialize methods. */ static ULONG s_OLEModuleLockCount = 0; /****************************************************************************** * OleBuildVersion [OLE2.1] */ DWORD WINAPI OleBuildVersion(void) { TRACE(ole,"(void)\n"); return (rmm<<16)+rup; } /*********************************************************************** * OleInitialize (OLE2.2) (OLE32.108) */ HRESULT WINAPI OleInitialize(LPVOID reserved) { HRESULT hr; TRACE(ole, "(%p)\n", reserved); /* * The first duty of the OleInitialize is to initialize the COM libraries. */ hr = CoInitializeEx32(NULL, COINIT_APARTMENTTHREADED); /* * If the CoInitializeEx call failed, the OLE libraries can't be * initialized. */ if (FAILED(hr)) return hr; /* * Then, it has to initialize the OLE specific modules. * This includes: * Clipboard * Drag and Drop * Object linking and Embedding * In-place activation */ if (s_OLEModuleLockCount==0) { /* * Initialize the libraries. */ TRACE(ole, "() - Initializing the OLE libraries\n"); } /* * Then, we increase the lock count on the OLE module. */ s_OLEModuleLockCount++; return hr; } /****************************************************************************** * CoGetCurrentProcess [COMPOBJ.34] [OLE2.2][OLE32.108] * * NOTES * Is DWORD really the correct return type for this function? */ DWORD WINAPI CoGetCurrentProcess(void) { return (DWORD)PROCESS_Current(); } /****************************************************************************** * OleUninitialize [OLE2.3] [OLE32.131] */ void WINAPI OleUninitialize(void) { TRACE(ole, "()\n"); /* * Decrease the lock count on the OLE module. */ s_OLEModuleLockCount--; /* * If we hit the bottom of the lock stack, free the libraries. */ if (s_OLEModuleLockCount==0) { /* * Actually free the libraries. */ TRACE(ole, "() - Freeing the last reference count\n"); } /* * Then, uninitialize the COM libraries. */ CoUninitialize32(); } /*********************************************************************** * OleFlushClipboard [OLE2.76] */ HRESULT WINAPI OleFlushClipboard(void) { return S_OK; } /*********************************************************************** * OleSetClipboard [OLE32.127] */ HRESULT WINAPI OleSetClipboard(LPVOID pDataObj) { FIXME(ole,"(%p), stub!\n", pDataObj); return S_OK; } /****************************************************************************** * CoRegisterMessageFilter32 [OLE32.38] */ HRESULT WINAPI CoRegisterMessageFilter32( LPMESSAGEFILTER lpMessageFilter, /* Pointer to interface */ LPMESSAGEFILTER *lplpMessageFilter /* Indirect pointer to prior instance if non-NULL */ ) { FIXME(ole,"stub\n"); if (lplpMessageFilter) { *lplpMessageFilter = NULL; } return S_OK; } /****************************************************************************** * OleInitializeWOW [OLE32.109] */ HRESULT WINAPI OleInitializeWOW(DWORD x) { FIXME(ole,"(0x%08lx),stub!\n",x); return 0; } /*********************************************************************** * RegisterDragDrop16 (OLE2.35) */ HRESULT WINAPI RegisterDragDrop16( HWND16 hwnd, LPDROPTARGET pDropTarget ) { FIXME(ole,"(0x%04x,%p),stub!\n",hwnd,pDropTarget); return S_OK; } /*********************************************************************** * RegisterDragDrop32 (OLE32.139) */ HRESULT WINAPI RegisterDragDrop32( HWND32 hwnd, LPDROPTARGET pDropTarget ) { FIXME(ole,"(0x%04x,%p),stub!\n",hwnd,pDropTarget); return S_OK; } /*********************************************************************** * RevokeDragDrop16 (OLE2.36) */ HRESULT WINAPI RevokeDragDrop16( HWND16 hwnd ) { FIXME(ole,"(0x%04x),stub!\n",hwnd); return S_OK; } /*********************************************************************** * RevokeDragDrop32 (OLE32.141) */ HRESULT WINAPI RevokeDragDrop32( HWND32 hwnd ) { FIXME(ole,"(0x%04x),stub!\n",hwnd); return S_OK; } /*********************************************************************** * OleRegGetUserType (OLE32.122) */ HRESULT WINAPI OleRegGetUserType32( REFCLSID clsid, DWORD dwFormOfType, LPOLESTR32* pszUserType) { FIXME(ole,",stub!\n"); return S_OK; } /*********************************************************************** * DoDragDrop32 [OLE32.65] */ HRESULT WINAPI DoDragDrop32 ( IDataObject *pDataObject, /* ptr to the data obj */ IDataObject *pDropSource, /* ptr to the source obj */ DWORD dwOKEffect, /* effects allowed by the source */ DWORD *pdwEffect) /* ptr to effects of the source */ { FIXME(ole,"(DataObject %p, DropSource %p): stub!\n", pDataObject, pDropSource); return DRAGDROP_S_DROP; }