blob: 5fa154d81a83b0d1923710dd370f5bfe8ad90df1 [file] [log] [blame]
/*
* 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;
}